Vyper, Solidity i Scrypto: Kako se uspoređuju jezici pametnih ugovora

Pogled na tri različita programska jezika za blockchain mreže i njihova usporedba.

Mreža Ethereum dovela je pametne ugovore u prostor blockchaina, stvarajući koncepte poput decentralizirane financije (DeFi) moguće. 

Pametni ugovori mogu automatski izvršavati procese nakon što su ispunjeni određeni uvjeti. Uz ovu novu tehnologiju, razvijen je novi jezik kodiranja pod nazivom Solidity.

Kako blockchain industrija nastavlja rasti i pojavljuju se nove blockchain mreže, u prostor se uvode dodatni programski jezici, posebice Vyper i Scrypto.

Programski jezici su skup pravila koja pretvaraju nizove teksta i brojeva u strojno čitljiv kod. Jednostavno rečeno, programski jezici omogućuju računalima da razumiju upute koje unose ljudska bića. Kada je riječ o blockchain industriji, Solidity, Python i Javascript neki su od najčešće korištenih jezika, ali svi rade drugačije.

Što je Solidity?

Solidity je objektno orijentiran programski jezik visoke razine za izgradnju pametnih ugovora na Ethereum blockchainu i drugim blockchain mrežama poput BNB Smart Chain i Avalanche. Jezik je razvijen 2014. i dijeli sličnosti s programskim jezicima kao što su JavaScript, C++ i Python.

Budući da je Solidity jezik visoke razine, računalni kod se upisuje na lako razumljiv i ljudima čitljiv način umjesto jedinica i nula. Na primjer, kod Solidityja uključivat će riječi i izraze poput "funkcija" i "ugovor", kao i vitičaste zagrade i brojeve.

Budući da je objektno orijentirani programski jezik znači da se Solidity vrti oko korištenja "objekata", koji su dijelovi koda koji se mogu ponovno upotrijebiti za stvaranje sličnih dijelova koda bez ponovnog pisanja izvornog koda svaki put.

Solidity također koristi kompajler za pretvaranje čitljivog koda visoke razine u strojno čitljiv kod koji se izvršava na Ethereum Virtual Machine (EVM).

Što je Vyper?

Vyper je ugovorno orijentirani, pitonski programski jezik za pametne ugovore dizajniran za korištenje s EVM-om. Jezik je dizajniran da poboljša Solidity poboljšanjem sigurnosti i čitljivosti koda. Vyper ima snažan fokus na čujnost svog koda. Zbog toga je jedno od njegovih načela da bi ljudi trebali moći čitati što više Vyper koda. 

Vyper također ima za cilj otežati svakome što je više moguće pisanje pogrešnog koda. Jednostavnost za čitatelja (tj. revizora) važnija je od jednostavnosti za pisca (tj. programera). Na taj način bit će lakše identificirati zlonamjerni kod unutar pametnog ugovora ili decentralizirane aplikacije (DApp).

Što je Scrypto?

Scrypto je jezik pametnih ugovora usmjeren na imovinu. Jezik je razvio Radix, temelji se na Rustu i zadržava većinu značajki Rusta uz dodavanje specifičnih funkcija i sintakse za Radix Engine v2. Budući da je Scrypto orijentiran na imovinu, može komunicirati s imovinom kao što su tokeni, koji su vrsta resursa unutar jezika. 

U jezicima kodiranja kao što je Solidity, ERC-20 tokeni postoje kao pametni ugovori na EVM-u. Sredstva unutar Scrypta su resursi koji postoje unutar spremnika i trezora. Jednostavno rečeno, to je kao da imate kantu (spremnik) i punite je novčićima (sredstvo) koje možete pohraniti u kasicu prasicu (trezor).

nedavna: Potražnja za talentima u kriptovaluti sve manje ovisi o tržištu kako industrija sazrijeva

Scrypto se također fokusira na prilagođenost programerima dopuštajući im da napišu samo potreban kod dok su u interakciji sa spremnicima i resursima kako bi omogućili funkcionalnost unutar DApp-a. Sigurnost je još jedno načelo s razvojnim programerima koji mogu dati specifične upute DApp-u umjesto davanja općih dopuštenja.

Usporedba jezika pametnih ugovora

Solidity ima širok raspon online resursa za učenje i veliku podršku zajednice zbog svoje upotrebe u velikim blockchain mrežama poput Ethereuma. Solidity također ima širok raspon značajki preuzetih iz objektno orijentiranog programiranja (OOP), što ga čini modularnim i lakšim za rješavanje problema kada postoji problem. Na primjer, ako bi se neki objekt iz određene klase pokvario, to bi se moglo pratiti do podrijetla klase. 

Ovo funkcionira jer Solidity koristi enkapsulaciju, što znači da je svaki objekt samostalan, a svaka funkcija radi neovisno. Modularnost kodnog jezika također omogućuje programerima da rade na više objekata istovremeno, čineći učinkovitijim izgradnju, popravljanje i implementaciju pametnih ugovora.

Vyper je jednostavniji jezik kodiranja od Solidityja, s naglaskom na transparentnost, jednostavnost jezične strukture i čujnost. Vyper također ima manje značajki od Solidityja, što je napravljeno namjerno iz sigurnosnih razloga. Ograničeni skup značajki smanjuje broj ranjivosti koje zlonamjerni akteri mogu iskoristiti.

Na primjer, Solidity koristi modifikatore koji pokazuju da su provjere provedene prije i nakon izvršenja procesa. Međutim, Vyper ne koristi modifikatore jer programeri vjeruju da olakšava pisanje pogrešnog koda. Također potiče pojedince da razviju kod koji se odbija kroz cijelu datoteku, smanjujući čujnost. Budući da modifikatori nisu prisutni u Vyperu, nemoguće je dodati promjene stanja kodu.

Još jedna značajka koja je isključena iz Vypera je nasljeđivanje. U Solidityju višestruki ugovori mogu naslijediti značajke nadređenog ugovora. Ako postoji neslaganje, također je potrebno da pojedinci razumiju norme prvenstva. Vyper ne koristi nasljeđivanje klasa jer eliminira potencijalni izvor složenosti u kodu, što doprinosi poboljšanoj čujnosti. Općenito, Vyper je minimalističkiji jezik kodiranja koji mijenja neke funkcionalnosti za povećanu sigurnost i bolje ispitivanje svoje baze koda kako bi bolje zaštitio korisnike pametnih ugovora temeljenih na Vyperu.

Iako je Solidity možda jedan od najpopularnijih i najpoznatijih programskih jezika u blockchain prostoru, neki jezici imaju lakše krivulje učenja za programere. Osim toga, jednostavniji programski jezici olakšavaju privlačenje novih programera u industriju.

Adam Simmons, glavni strateški direktor u RDX Worksu — programerima koji stoje iza Radixa — rekao je za Cointelegraph: “Posjedovanje pravih alata za posao čini veliku razliku — a trenutačno programeri blockchaina nemaju prave alate. Ne radi se samo o tome da jezike učinimo jednostavnijima, već o tome da alate za razvojne programere učinimo intuitivnim i sigurnim,” nastavlja:

“Na svom vrhuncu, DeFi je narastao na preko 200 milijardi dolara TVL u samo dvije godine — tako da je jasno da postoje vrlo visoke razine potražnje. Ipak, unatoč ovom 200x rastu kapitala, broj programera povećao se samo 2x, na ukupno oko 19,000 (od oko 30 milijuna programera širom svijeta).”

Unatoč visokoj razini rasta vidljivoj u decentraliziranom financijskom prostoru, broj programera nije rastao kako bi zadovoljio potražnju. Simmons vjeruje da su programeri možda smatrali Solidity preteškim za prijelaz na razvoj blockchaina:

“Razvojni programeri oklijevaju s punim radnim vremenom u Web3 zbog strme krivulje učenja Solidityja i visokih razina rizika oko sigurnosti. Unatoč vrlo talentiranim programerima i milijunima dolara potrošenim na sigurnosne revizije, DeFi još uvijek gubi novac od hakiranja i eksploatacije. Samo ovo je dovoljno da programere odvrati od ulaska u prostor.”

“Posjedovanje pravih jezika i alata omogućit će razvojnim programerima mnogo brži razvoj cijele industrije. Kao što su motori igara dali programerima alate za revoluciju u proizvodnji videoigara 90-ih, pravi Web3 jezici i alati omogućit će programerima da ubrzaju rast Web3,” dodao je Simmons.

Scrypto se također fokusira na sigurnost, jednostavnost i prilagođenost korisniku. Skripto transakcije usmjerene su na imovinu. Oni definiraju kako korisnik želi da se resursi sustava distribuiraju. Oni također mogu naznačiti kako korisnik ili druga komponenta trebaju rukovati vraćenim resursima u višekomponentnoj transakciji.

Transakcije na Ethereumu obično su poziv na pametni ugovor (budući da su DApps i tokeni na Ethereumu pametni ugovori). Nasuprot tome, transakcije na Scryptu uključuju premještanje imovine iz jedne komponente u drugu.

Na primjer, ako korisnik A želi poslati 10 prilagođenih tokena korisniku B, njegova bi transakcija pokazala da pokušava povući 10 tokena iz trezora koji ih sadrži. Transakcija će također pokazati da će oni poslati te tokene na metodu depozita komponente računa korisnika B. Budući da resursi (u ovom slučaju, tokeni) moraju biti smješteni negdje, spremnik (spremnik) će se koristiti za prijenos tokena od korisnika A do korisnika B.

U gornjem primjeru, korisnik prenosi kantu koja sadrži resurse (tokene) na metodu depozita drugog korisnika umjesto pozivanja pametnog ugovora tokena. Interakcija s DApps funkcionira na sličan način, pri čemu korisnici povlače tokene sa svojih računa i prosljeđuju ih relevantnoj komponenti s kojom žele komunicirati. Ukratko, Scrypto ima pristup temeljen na imovini, pri čemu korisnici pohranjuju i prosljeđuju stvarnu imovinu. Pristup koji se temelji na imovini također olakšava programerima kodiranje DApps jer je lakša interakcija s tokenima (resursi), skupovima tokena (trezori) i korisnicima (komponente).

Za drugi primjer, ako bi DApp za razmjenu (kao što je Uniswap) bio kodiran pomoću Scrypta, programeri bi samo trebali kodirati metodu trgovanja za zamjenu. Prvo bi DEX trebao identificirati korisnikov dolazni spremnik tokena A, a zatim izračunati tečaj. Zatim će se dolazni tokeni deponirati, a DEX će poslati točnu količinu tokena B natrag korisniku.

Koji bi programski jezik trebali odabrati blockchain programeri?

Programeri mogu koristiti tradicionalne programske jezike (C++, Python, JavaScript) za razvoj blockchaina kao i posebno izrađena rješenja kao što su Solidity, Vyper i Scrypto. Višestruki programski jezici mogu biti korisni za blockchain prostor budući da programerima pružaju niz alata za rad. 

Na primjer, programeri koji poznaju C++, JavaScript i Python mogu Solidity smatrati privlačnim. Programeri koji poznaju Python mogu gravitirati prema Vyperu, dok programeri upoznati s Rustom mogu odabrati korištenje jezika Scrypto.

nedavna: Društveni tokeni bit će motor Web3, od baza obožavatelja do poticaja

Simmons se slaže, govoreći za Cointelegraph: “S pojavom više jezika na Web3, vjerojatno ćemo vidjeti razdoblje u kojem će biti dosta konkurentskih pristupa. Budući da ovi jezici pronalaze razvojne programere koji odgovaraju tržištu proizvoda i što je najvažnije omogućuju tim programerima da izgrade moćne, korisne i sigurne DApps, vjerojatno ćemo vidjeti da industrija gravitira prema onima koji daju najbolje rezultate.”

Solidity će naravno biti izbor za programere koji žele raditi na Ethereumu i sličnim blockchain mrežama. U isto vrijeme, Vyper i Scrypto mogli bi privući programere koji preferiraju jednostavnost i dodatnu sigurnost. Scrypto također može biti poželjniji za programere zbog svoje povećane jednostavnosti i pristupa usmjerenog na imovinu.

Izvor: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare