Vyper, Solidity in Scrypto: primerjava jezikov pametnih pogodb

Pogled na tri različne programske jezike za omrežja blockchain in njihova primerjava.

Omrežje Ethereum je prineslo pametne pogodbe v prostor blockchain, zaradi česar so koncepti podobni decentralizirane finance (DeFi) mogoče. 

Pametne pogodbe lahko samodejno izvajajo procese, ko so izpolnjeni določeni pogoji. Skupaj s to novo tehnologijo je bil razvit nov kodirni jezik, imenovan Solidity.

Ker industrija blockchain še naprej raste in se pojavljajo nova omrežja blockchain, se v prostor uvajajo dodatni programski jeziki, zlasti Vyper in Scrypto.

Programski jeziki so niz pravil, ki pretvorijo nize besedila in številk v strojno berljivo kodo. Preprosto povedano, programski jeziki omogočajo računalnikom razumevanje navodil, ki jih vnesejo ljudje. Ko gre za industrijo blockchain, so Solidity, Python in Javascript nekateri najpogosteje uporabljeni jeziki, vendar vsi delujejo drugače.

Kaj je trdnost?

Solidity je objektno usmerjen programski jezik na visoki ravni za gradnjo pametnih pogodb na verigi blokov Ethereum in drugih omrežjih verige blokov, kot sta BNB Smart Chain in Avalanche. Jezik je bil razvit leta 2014 in ima podobnosti s programskimi jeziki, kot so JavaScript, C++ in Python.

Ker je Solidity jezik na visoki ravni, je računalniška koda vnesena na lahko razumljiv in človeku berljiv način namesto enic in ničel. Koda Solidity bo na primer vključevala besede in besedne zveze, kot sta »funkcija« in »pogodba«, pa tudi zavite oklepaje in številke.

Ker je objektno usmerjen kodirni jezik, pomeni, da se Solidity vrti okoli uporabe »predmetov«, ki so deli kode, ki jih je mogoče znova uporabiti za ustvarjanje podobnih kosov kode, ne da bi vsakič znova napisali izvirno kodo.

Solidity uporablja tudi prevajalnik za pretvorbo človeku berljive kode na visoki ravni v strojno berljivo kodo, ki se izvaja na virtualnem stroju Ethereum (EVM).

Kaj je Vyper?

Vyper je pogodbeno usmerjen pitonski programski jezik za pametne pogodbe, zasnovan za uporabo z EVM. Jezik je bil zasnovan za izboljšanje Solidityja z izboljšanjem varnosti in berljivosti kode. Vyper se močno osredotoča na slišnost svoje kode. Zaradi tega je eno od njegovih načel, da morajo biti ljudje sposobni prebrati čim več kode Vyper. 

Vyper prav tako želi čim bolj otežiti vsakomur pisanje zavajajoče kode. Preprostost za bralca (tj. revizorja) je pomembnejša kot preprostost za pisca (tj. razvijalca). Tako bo zlonamerno kodo lažje prepoznati znotraj pametne pogodbe ali decentralizirane aplikacije (DApp).

Kaj je Scrypto?

Scrypto je jezik pametnih pogodb, usmerjen v sredstva. Jezik je razvil Radix, temelji na Rustu in ohranja večino funkcij Rusta, hkrati pa dodaja posebne funkcije in sintakso za Radix Engine v2. Ker je Scrypto usmerjen v sredstva, lahko komunicira s sredstvi, kot so žetoni, ki so vrsta vira v jeziku. 

V kodirnih jezikih, kot je Solidity, žetoni ERC-20 obstajajo kot pametne pogodbe na EVM. Sredstva znotraj Scrypta so viri, ki obstajajo znotraj vsebnikov in trezorjev. Preprosto povedano, to je tako, kot če bi imeli vedro (vsebnik) in ga napolnili s kovanci (sredstvo), ki jih lahko shranite v hranilnik (trezor).

Zadnje: Povpraševanje po talentih v kriptovaluti je z dozorevanjem industrije manj odvisno od trga

Scrypto se prav tako osredotoča na to, da je prijazen do razvijalcev, tako da jim omogoča pisanje samo potrebne kode med interakcijo z vsebniki in viri za omogočanje funkcionalnosti znotraj aplikacije DApp. Varnost je še eno načelo, saj lahko razvijalci dajejo posebna navodila aplikaciji DApp, namesto da bi dajali splošna dovoljenja.

Kakšna je primerjava jezikov pametnih pogodb

Solidity ima široko paleto spletnih učnih virov in veliko podpore skupnosti zaradi svoje uporabe v večjih omrežjih blockchain, kot je Ethereum. Solidity ima tudi širok nabor funkcij, vzetih iz objektno usmerjenega programiranja (OOP), zaradi česar je modularen in ga je lažje odpraviti, ko pride do težave. Na primer, če bi prišlo do okvare predmeta iz določenega razreda, bi to lahko izsledili nazaj do izvora razreda. 

To deluje, ker Solidity uporablja enkapsulacijo, kar pomeni, da je vsak objekt samostojen, pri čemer vsaka funkcija deluje neodvisno. Modularnost kodirnega jezika prav tako omogoča razvijalcem, da delajo na več predmetih hkrati, zaradi česar je bolj učinkovito sestavljanje, popravljanje in uvajanje pametnih pogodb.

Vyper je enostavnejši kodirni jezik kot Solidity, s poudarkom na preglednosti, preprostosti jezikovne strukture in slišnosti. Vyper ima tudi manj funkcij kot Solidity, kar je bilo narejeno namerno iz varnostnih razlogov. Omejen nabor funkcij zmanjšuje število ranljivosti, ki jih zlonamerni akterji lahko izkoristijo.

Na primer, Solidity uporablja modifikatorje, ki kažejo, da so bila preverjanja izvedena pred in po izvedbi postopka. Vendar Vyper ne uporablja modifikatorjev, saj razvijalci verjamejo, da olajša pisanje zavajajoče kode. Prav tako spodbuja posameznike, da razvijejo kodo, ki se odbija po celotni datoteki in zmanjšuje slišnost. Ker modifikatorji niso prisotni v Vyperju, je nemogoče dodati kakršne koli spremembe stanja v kodo.

Druga funkcija, ki je izključena iz Vyperja, je dedovanje. V Solidityju lahko več pogodb podeduje funkcije nadrejene pogodbe. Če pride do nesoglasja, je potrebno tudi, da posamezniki razumejo norme prednosti. Vyper ne uporablja dedovanja razredov, ker odpravlja potencialni vir kompleksnosti v kodi, kar prispeva k izboljšani slišnosti. Na splošno je Vyper bolj minimalističen kodirni jezik, ki zamenja nekatere funkcionalnosti za večjo varnost in boljši pregled svoje kodne baze za boljšo zaščito uporabnikov pametnih pogodb, ki temeljijo na Vyperju.

Medtem ko je Solidity morda eden najbolj priljubljenih in znanih programskih jezikov v prostoru blockchain, imajo nekateri jeziki lažje učne krivulje za razvijalce. Poleg tega preprostejši programski jeziki olajšajo privabljanje novih razvijalcev v panogo.

Adam Simmons, glavni strateški direktor pri RDX Works — razvijalci za Radix — je za Cointelegraph povedal: »Imeti prava orodja za delo je velika razlika — in trenutno razvijalci blockchaina nimajo pravih orodij. Ne gre samo za poenostavitev jezikov, ampak za izdelavo orodij za razvijalce, ki so intuitivna in varna,« nadaljuje:

»Na vrhuncu je DeFi zrasel na več kot 200 milijard dolarjev TVL v samo dveh letih – jasno je, da je povpraševanje zelo visoko. Kljub tej 200-kratni rasti kapitala pa se je število razvijalcev povečalo le za 2-krat, na skupno okoli 19,000 (od približno 30 milijonov razvijalcev po vsem svetu).«

Kljub visoki stopnji rasti, opaženi v decentraliziranem finančnem prostoru, število razvijalcev ni naraslo, da bi ustrezalo povpraševanju. Simmons meni, da so razvijalci morda ugotovili, da je Solidity pretežak za prehod v razvoj blockchaina:

»Razvijalci oklevajo, da bi se za polni delovni čas posvetili Web3 zaradi strme krivulje učenja Solidityja in visoke stopnje tveganja glede varnosti. Kljub zelo nadarjenim razvijalcem in milijonom dolarjev, porabljenih za varnostne revizije, DeFi še vedno črpa denar od vdorov in izkoriščanj. Že to je dovolj, da razvijalce odvrne od vstopa v prostor.«

»Pravi jeziki in orodja bodo razvijalcem omogočili veliko hitrejšo rast celotne industrije. Tako kot so motorji za igre dali razvijalcem orodja za revolucijo v proizvodnji video iger v 90-ih, bodo pravi jeziki in orodja Web3 omogočili razvijalcem, da pospešijo rast Web3,« je dodal Simmons.

Scrypto se osredotoča tudi na varnost, preprostost in prijaznost do uporabnika. Skripto transakcije so osredotočene na sredstva. Določajo, kako uporabnik želi porazdeliti sistemska sredstva. Lahko tudi navedejo, kako naj uporabnik ali druga komponenta v večkomponentni transakciji ravna z vrnjenimi viri.

Transakcije na Ethereumu so običajno klic k pametni pogodbi (ker so DApps in žetoni na Ethereumu pametne pogodbe). V nasprotju s tem transakcije na Scryptu vključujejo premikanje sredstev iz ene komponente v drugo.

Na primer, če želi uporabnik A poslati 10 žetonov po meri uporabniku B, bo njegova transakcija pokazala, da poskuša umakniti 10 žetonov iz trezorja, ki jih vsebuje. Transakcija bo tudi pokazala, da bodo te žetone poslali na način depozita komponente računa uporabnika B. Ker morajo biti viri (v tem primeru žetoni) nekje nameščeni, bo za prenos žetonov od uporabnika A do uporabnika B uporabljeno vedro (vsebnik).

V zgornjem primeru uporabnik prenese vedro, ki vsebuje vire (žetone), na metodo depozita drugega uporabnika, namesto da bi opravil klic k pametni pogodbi žetona. Interakcija z DApps deluje podobno, pri čemer uporabniki umaknejo žetone iz svojih računov in jih posredujejo ustrezni komponenti, s katero želijo komunicirati. Če povzamemo, Scrypto uporablja pristop, ki temelji na sredstvih, pri čemer uporabniki shranjujejo in posredujejo dejanska sredstva. Pristop, ki temelji na sredstvih, tudi razvijalcem olajša kodiranje DApps, saj je lažje komunicirati z žetoni (viri), zbirkami žetonov (trezorji) in uporabniki (komponente).

Za drug primer, če bi bila zamenjavna DApp (kot je Uniswap) kodirana s Scryptom, bi morali razvijalci samo kodirati metodo trgovanja za zamenjavo. Najprej bi moral DEX identificirati uporabnikov vhodni vsebnik žetona A, nato pa izračunati menjalni tečaj. Nato bodo dohodni žetoni deponirani, DEX pa bo poslal pravilno količino žetona B nazaj uporabniku.

Kateri programski jezik naj izberejo razvijalci blockchaina?

Razvijalci lahko za razvoj blokovnih verig uporabljajo tradicionalne programske jezike (C++, Python, JavaScript) kot tudi posebej izdelane rešitve, kot so Solidity, Vyper in Scrypto. Več programskih jezikov je lahko koristnih za prostor blockchain, saj daje razvijalcem nabor orodij za delo. 

Na primer, razvijalcem, ki poznajo C++, JavaScript in Python, se lahko Solidity zdi privlačen. Razvijalci, ki poznajo Python, se lahko nagibajo k Vyperju, medtem ko se razvijalci, ki poznajo Rust, lahko odločijo za uporabo jezika Scrypto.

Zadnje: Socialni žetoni bodo motor Web3, od baz oboževalcev do spodbujanja

Simmons se strinja in za Cointelegraph pravi: »Z več jeziki, ki prihajajo v Web3, bomo verjetno priča časovnemu obdobju, ko bo na voljo kar nekaj konkurenčnih pristopov. Ker se ti jeziki razvijalcem zdijo primerni za proizvodni trg in, kar je najpomembneje, tem razvijalcem omogočajo, da zgradijo zmogljive, uporabne in varne aplikacije DApps, bomo verjetno videli, da bo industrija gravitirala k tistim, ki zagotavljajo najboljše rezultate.«

Solidity bo seveda izbira za razvijalce, ki želijo delati na Ethereumu in podobnih omrežjih blockchain. Hkrati bi lahko Vyper in Scrypto pritegnila razvijalce, ki imajo raje preprostost in dodatno varnost. Scrypto je lahko tudi bolj priporočljiv za razvijalce zaradi svoje povečane preprostosti in pristopa, ki je usmerjen v sredstva.

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