Ievads
Viedos līgumus pirmoreiz raksturoja Niks Sabo 20. gs. 90. gados. Tolaik viņš definēja viedos līgumus kā rīku, kas formalizē un aizsargā datortīklus, apvienojot protokolus un lietotāju saskarnes.
Sabo izklāstīja savu viedokli par viedo līgumu potenciālo lietojumu dažādās jomās, kas ietver līgumiskas vienošanās, – piemēram, kredītsistēmās, maksājumu apstrādē un satura tiesību pārvaldībā.
Izmantojot blokķēdes viedos līgumus, ir iespējams izveidot protokolus bez nepieciešamības uzticēties. Tas nozīmē, ka divas puses var uzņemties saistības blokķēdē, un tām nav obligāti jāpazīst vienai otru un savstarpēji jāuzticas. Tās var būt pārliecinātas, ka, nosacījumiem neiestājoties, līgums netiks izpildīts. Turklāt viedie līgumi novērš nepieciešamību pēc starpniekiem, tādējādi būtiski samazinot darbības izmaksas.
Šajā rakstā pievērsīsimies viedajiem līgumiem, kuri darbojas uz Ethereum virtuālās mašīnas (EVM) bāzes, kas ir būtiska Ethereum blokķēdes sastāvdaļa.
Kā tie darbojas?
Vienkārši izsakoties, viedie līgumi darbojas kā deterministiska programma. Tie izpilda noteiktu uzdevumu, kad un ja izpildās noteikti nosacījumi. Tādējādi viedo līgumu sistēmā bieži vien tiek izmantots formāts "ja... – tad...". Tomēr, neraugoties uz populāro terminoloģiju, viedie līgumi faktiski nav nedz viedi, nedz juridiski līgumi. Tie ir vienkārši koda fragmenti, kas darbojas decentralizētā sistēmā (blokķēdē).
Ethereum tīklā viedie līgumi ir atbildīgi par to blokķēdes operāciju izpildi un pārvaldību, kas notiek lietotāju (adrešu) savstarpējā mijiedarbībā. Jebkuru adresi, kas nav viedais līgums, sauc par ārēji piederošu kontu (EOA). Tādējādi viedos līgumus kontrolē datorkods, bet EOA kontrolē lietotāji.
Būtībā Ethereum viedie līgumi sastāv no līguma koda un divām publiskajām atslēgām. Pirmo publisko atslēgu nodrošina līguma izveidotājs. Otrā atslēga apzīmē pašu līgumu un kalpo kā digitālais identifikators, kas katram viedajam līgumam ir unikāls.
Viedais līgums tiek izvietots ar blokķēdes darījuma starpniecību, un to var aktivizēt tikai tad, ja to izsauc EOA (vai citi viedie līgumi). Tomēr pirmo trigeri vienmēr izraisa EOA (lietotājs).
Galvenās funkcijas
Ethereum viedajiem līgumiem bieži vien ir šādas īpašības:
Decentralizācija. Viedos līgumus replicē un izplata visi Ethereum tīkla mezgli. Tā ir viena no būtiskākajām atšķirībām salīdzinājumā ar citiem risinājumiem, kas balstīti uz centralizētiem serveriem.
Determinisms. Viedie līgumi izpilda tikai tās funkcijas, kam tie ir paredzēti, ja vien tiek izpildīti konkrētie nosacījumi. Turklāt rezultāts vienmēr ir vienāds – neatkarīgi no tā, kurš tos izpilda.
Autonomija. Viedie līgumi var automatizēt visdažādākos uzdevumus un darbojas kā pašizpildes programma. Tomēr vairumā gadījumu, ja viedais līgums netiek aktivizēts, tas paliek pasīvā stāvoklī un neveic nekādas darbības.
Nemainīgums. Viedos līgumus pēc to izvietošanas nevar mainīt. Tos var "dzēst" tikai tad, ja konkrētā funkcija iepriekš ir paredzēta. Tādējādi varētu teikt, ka viedie līgumi var piedāvāt drošu kodu.
Bez nepieciešamības uzticēties. Divas vai vairākas pues var mijiedarboties, izmantojot viedos līgumus, viena otru nepazīstot un viena otrai neuzticoties. Turklāt blokķēdes tehnoloģija nodrošina datu precizitāti.
Pārskatāmība. Tā kā viedie līgumi ir balstīti publiskajā blokķēdē, to pirmkods ir ne vien nemainīgs, bet arī visiem redzams.
Vai viedo līgumu var mainīt vai dzēst?
Pēc Ethereum viedā līguma izvietošanas tam nav iespējams pievienot jaunas funkcijas. Tomēr, ja līguma izveidotājs iestrādā kodā funkciju "SELFDESTRUCT", šādu viedo līgumu nākotnē var "izdzēst" un aizstāt ar jaunu. Savukārt, ja šāda funkcija nav iepriekš iekļauta kodā, līgumu izdzēst nebūs iespējams.
Tā sauktie uzlabojamie viedie līgumi nodrošina izstrādātājiem lielāku elastību attiecībā uz līgumu nemainīgumu. Šādus uzlabojamos līgumus var izveidot daudzos veidos – ar atšķirīgu sarežģītības pakāpi.
Vienkāršam piemēram iztēlosimies, ka viedais līgums ir sadalīts vairākos mazākos līgumos. Daži no tiem ir veidoti kā nemainīgi līgumi, bet citos ir iespējota "dzēšanas" funkcija. Tas nozīmē, ka daļu koda (viedo līgumu) var dzēst un aizstāt, pārējām funkcijām nemainoties.
Priekšrocības un izmantošanas iespējas
Kā programmējami kodi viedie līgumi ir ārkārtīgi pielāgojami, un tos var izstrādāt dažādos veidos, nodrošinot visdažādākos pakalpojumus un risinājumus.
Viedie līgumi kā decentralizētas pašizpildes programmas var nodrošināt lielāku pārskatāmību un mazākas darbības izmaksas. Atkarībā no ieviešanas tie var arī palielināt efektivitāti un samazināt birokrātiskās izmaksas.
Viedie līgumi ir īpaši noderīgi situācijās, kas ietver līdzekļu pārskaitīšanu vai apmaiņu starp divām vai vairākām pusēm.
ERC-20
Ierobežojumi
Viedie līgumi sastāv no cilvēku sarakstīta datorkoda. Tas rada daudzus riskus, jo kods nav pasargāts no ievainojamībām un kļūdām. Ideālajā variantā tos vajadzētu rakstīt un izvietot pieredzējušiem programmētājiem – īpaši tad, ja līgumi ietver sensitīvus datus vai lielas naudas summas.
Daži uzskata, ka centralizētas sistēmas var nodrošināt lielāko daļu risinājumu un funkciju, ko piedāvā viedie līgumi. Galvenā atšķirība ir tāda, ka viedie līgumi darbojas decentralizētā P2P tīklā, nevis centralizētā serverī. Turklāt, tā kā tie ir balstīti blokķēdes sistēmā, viedos līgumus ir ļoti grūti vai pat neiespējami mainīt.
Nemainīgums ne vienmēr ir pozitīva īpašība. Piemēram, 2016. gadā notika uzbrukums decentralizētajai autonomajai organizācijai (DAO) "The DAO", un viedā līguma koda nepilnību dēļ tika nozagti vairāki miljoni Ether (ETH).
Ir svarīgi piebilst, ka šī problēma neradās Ethereum blokķēdes dēļ. To radīja kļūdaina viedā līguma ieviešana.
Vēl viens viedo līgumu trūkums ir saistīts ar to neskaidro juridisko statusu. Tie ne vien atrodas "pelēkajā zonā" vairumā valstu, bet arī neatbilst pašreizējam tiesiskajam regulējumam.
Piemēram, daudziem līgumiem ir nepieciešams, lai abas puses tiktu atbilstoši identificētas un būtu vecākas par 18 gadiem. Blokķēdes tehnoloģijas nodrošinātā pseidonimitāte apvienojumā ar starpnieku trūkumu var nenodrošināt šo prasību izpildi. Lai arī šai problēmai pastāv dažādi risinājumi, ir grūti nodrošināt viedo līgumu izpildāmību – īpaši attiecībā uz starptautiskiem, decentralizētiem tīkliem.
Kritika
Daži blokķēdes entuziasti uzskata viedos līgumus par risinājumu, kas drīzumā aizstās vai automatizēs lielu daļu mūsu komerciālo un birokrātisko sistēmu. Lai arī tāda iespēja pastāv, tā, visticamāk, tik drīz nekļūs par normu.
Viedie līgumi ir visnotaļ interesanta tehnoloģija. Taču kā decentralizēts, deterministisks, pārskatāms un visai nemainīgs risinājums tie dažkārt var nešķist īpaši piemēroti.
Kritika pamatā ir balstīta uz faktu, ka viedie līgumi nav piemēroti daudzu reālās pasaules problēmu risināšanai. Patiesībā dažām organizācijām ir izdevīgāk izmantot tradicionālos servera risinājumus.
Salīdzīnājumā ar viedajiem līgumiem centralizētos serverus ir vieglāk un lētāk uzturēt, un tie parasti nodrošina lielāku efektivitāti attiecībā uz ātrumu un starptīklu komunikāciju (sadarbspēju).
Noslēgumā
Nav šaubu, ka viedie līgumi ir radījuši ievērojamu ietekmi kriptovalūtu pasaulē un revolūciju blokķēžu telpā. Lai gan gala lietotāji parasti tieši neveic mijiedarbību ar viedajiem līgumiem, šie līgumi nākotnē var tikt izmantoti visdažādāko lietotņu darbināšanai – no finanšu pakalpojumiem līdz piegāžu ķēdes pārvaldībai.
Viedie līgumi apvienojumā ar blokķēdi var radīt apvērsumu gandrīz visās mūsu sabiedrības jomās. Taču laiks rādīts, vai šīs revolucionārās tehnoloģijas spēs pārvarēt šķēršļus, ko paredz to ieviešana plašā mērogā.