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

Pogled na tri različita programska jezika za blockchain mreže i njihovu usporedbu.

Mreža Ethereum donijela je pametne ugovore u blockchain prostor, stvarajući koncepte poput decentralizovane finansije (DeFi) moguće. 

Pametni ugovori mogu automatski izvršiti procese kada se ispune određeni uslovi. Uz ovu novu tehnologiju, razvijen je i novi jezik kodiranja pod nazivom Solidity.

Kako blockchain industrija nastavlja da raste i pojavljuju se nove blockchain mreže, dodatni programski jezici se unose u svemir, posebno Vyper i Scrypto.

Programski jezici su skup pravila koja pretvaraju nizove teksta i brojeva u mašinski čitljiv kod. Jednostavno rečeno, programski jezici omogućavaju kompjuterima da razumiju instrukcije koje unose ljudska bića. Kada je u pitanju blockchain industrija, Solidity, Python i Javascript su neki od najčešće korištenih jezika, ali svi rade drugačije.

Šta je solidnost?

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

Pošto je Solidity jezik visokog nivoa, kompjuterski kod se kuca na lako razumljiv i čitljiv način umesto jedinica i nula. Na primjer, Solidity kod će uključivati ​​riječi i fraze poput "funkcija" i "ugovor", kao i vitičaste zagrade i brojeve.

Biti objektno orijentirani jezik kodiranja znači da se Solidity vrti oko korištenja "objekata", koji su dijelovi koda koji se mogu ponovo koristiti za kreiranje sličnih dijelova koda bez ponovnog pisanja originalnog koda svaki put.

Solidity takođe koristi kompajler za pretvaranje koda visokog nivoa koji je čitljiv ljudima u mašinski čitljiv kod koji se izvršava na Ethereum virtuelnoj mašini (EVM).

Šta je Vyper?

Vyper je ugovorno orijentisan, pythonic programski jezik za pametne ugovore dizajniran da se koristi sa EVM-om. Jezik je dizajniran da poboljša Solidity poboljšanjem sigurnosti i čitljivosti koda. Vyper se snažno fokusira na čujnost svog koda. Zbog toga, jedan od njegovih principa je da ljudi treba da budu u stanju da pročitaju što je više moguće Vyper koda. 

Vyper takođe ima za cilj da bilo kome što je više moguće oteža pisanje pogrešnog koda. Jednostavnost za čitaoca (tj. revizora) je važnija od jednostavnosti za pisca (tj. programera). Na ovaj način će biti lakše identificirati zlonamjerni kod unutar pametnog ugovora ili decentralizirane aplikacije (DApp).

Šta je Scrypto?

Scrypto je jezik pametnih ugovora orijentiran na sredstva. Jezik je razvio Radix, baziran je na Rustu i zadržava većinu Rust-ovih karakteristika uz dodavanje specifičnih funkcija i sintakse za Radix Engine v2. Budući da je Scrypto orijentiran na sredstva, može komunicirati sa sredstvima 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 Scrypto-a su resursi koji postoje unutar kontejnera i trezora. Jednostavno rečeno, to je kao imati kantu (kontejner) i napuniti je novčićima (sredstvom) koji se mogu pohraniti u kasicu (trezor).

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

Scrypto se također fokusira na to da bude prilagođen programerima dopuštajući im da napišu samo potreban kod dok su u interakciji sa kontejnerima i resursima kako bi omogućili funkcionalnost unutar DApp-a. Sigurnost je još jedan princip s tim da su programeri u mogućnosti da daju specifične upute DApp-u umjesto da daju potpune dozvole.

Kako se upoređuju jezici pametnih ugovora

Solidity ima širok raspon online resursa za učenje i veliku podršku zajednice zbog svoje upotrebe u glavnim blockchain mrežama kao što je Ethereum. Solidity takođe ima širok spektar funkcija preuzetih iz objektno orijentisanog programiranja (OOP), čineći ga modularnim i lakšim za rešavanje problema kada postoji problem. Na primjer, ako bi se neki objekt iz određene klase pokvario, mogao bi se pratiti do porijekla klase. 

Ovo funkcionira jer Solidity koristi enkapsulaciju, što znači da je svaki objekt samostalan, a svaka funkcija radi nezavisno. Modularnost jezika kodiranja takođe omogućava programerima da rade na više objekata istovremeno, čineći ga efikasnijim za izgradnju, popravljanje i implementaciju pametnih ugovora.

Vyper je jednostavniji jezik kodiranja od Soliditya, koji naglašava transparentnost, jednostavnost jezičke strukture i čujnost. Vyper takođe ima manje mogućnosti od Solidityja, što je urađeno namjerno iz sigurnosnih razloga. Ograničeni skup funkcija smanjuje broj ranjivosti koje zlonamjerni akteri mogu iskoristiti.

Na primjer, Solidity koristi modifikatore koji pokazuju da su provjere obavljene prije i nakon izvršenja procesa. Međutim, Vyper ne koristi modifikatore jer programeri vjeruju da olakšavaju pisanje obmanjujućih koda. Takođe podstiče pojedince da razviju kod koji se kreće kroz fajl, smanjujući čujnost. Pošto modifikatori nisu prisutni u Vyperu, nemoguće je dodati bilo kakve promjene stanja u kod.

Još jedna karakteristika koja je isključena iz Vypera je nasljeđivanje. U Solidity-u, više ugovora može naslijediti karakteristike od nadređenog ugovora. Ako postoji neslaganje, to također zahtijeva da pojedinci razumiju norme prvenstva. Vyper ne koristi nasljeđivanje klasa jer eliminira potencijalni izvor složenosti koda, š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 kodne baze kako bi bolje zaštitio korisnike pametnih ugovora zasnovanih na Vyperu.

Iako je Solidity 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 direktor za strategiju u RDX Worksu — programerima koji stoje iza Radixa — rekao je za Cointelegraph: „Posjedovanje pravih alata za posao čini veliku razliku — a trenutno programeri blockchain-a nemaju prave alate. Ne radi se samo o tome da jezike učinimo jednostavnijim, već i o pravljenju alata za programere koji su intuitivni i sigurni“, nastavlja:

“Na svom vrhuncu, DeFi je porastao na preko 200 milijardi dolara TVL u samo dvije godine – tako jasno, postoji vrlo visok nivo potražnje. Ipak, uprkos ovom 200-strukom rastu kapitala, broj programera se povećao samo za 2x, na ukupno oko 19,000 (od oko 30 miliona programera širom svijeta).“

Uprkos visokom nivou rasta koji se vidi u decentralizovanom finansijskom prostoru, broj programera nije rastao da bi odgovarao potražnji. Simmons vjeruje da su programeri možda smatrali da je Solidity previše težak za njih da pređu na razvoj blockchaina:

„Programeri oklijevaju da rade puno radno vrijeme u Web3 zbog strme krivulje učenja Solidity-a i visokog nivoa rizika oko sigurnosti. Uprkos visoko talentovanim programerima i milionima dolara potrošenim na sigurnosne revizije, DeFi još uvijek crpi novac od hakova i eksploata. Samo ovo je dovoljno da odvrati programere od ulaska u prostor.”

“Posjedovanje pravih jezika i alata omogućit će programerima da razvijaju cijelu industriju mnogo brže. Baš kao što su motori za igre dali programerima alate za revoluciju u proizvodnji video igara 90-ih, pravi Web3 jezici i alati će omogućiti programerima da ubrzaju rast Web3,” dodao je Simmons.

Scrypto se također fokusira na sigurnost, jednostavnost i prilagođenost korisnicima. Skripto transakcije su fokusirane na imovinu. Oni definiraju kako korisnik želi da se sistemski resursi distribuiraju. Oni također mogu ukazivati ​​na to kako bi vraćenim resursima trebao rukovati korisnik ili druga komponenta u višekomponentnoj transakciji.

Transakcije na Ethereumu obično su poziv na pametni ugovor (pošto su DApps i tokeni na Ethereumu pametni ugovori). Nasuprot tome, transakcije na Scrypto uključuju premještanje sredstava s jedne komponente na drugu.

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

U gornjem primjeru, korisnik prenosi kantu koja sadrži resurse (tokene) metodi depozita drugog korisnika umjesto da poziva pametni ugovor tokena. Interakcija sa DApp-ovima 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 koristi pristup baziran na imovini, pri čemu korisnici pohranjuju i prosljeđuju stvarnu imovinu. Pristup baziran na imovini također olakšava programerima da kodiraju DApps jer je lakše komunicirati sa tokenima (resursima), skupovima tokena (trezorima) i korisnicima (komponentama).

Na primjer, ako je DApp za zamjenu (kao što je Uniswap) kodiran sa Scryptom, programeri bi trebali samo kodirati metodu trgovanja za zamjenu. Prvo, DEX bi trebao identificirati korisnikov dolazni kontejner tokena A, a zatim izračunati devizni kurs. Zatim će se dolazni tokeni deponovati, a DEX će poslati ispravnu količinu tokena B nazad korisniku.

Koji programski jezik bi trebali izabrati blockchain programeri?

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

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

Nedavno: Društveni tokeni će biti pokretač Web3, od baza obožavatelja do poticaja

Simmons se slaže, govoreći za Cointelegraph: „Sa više jezika koji dolaze na Web3, vjerovatno ćemo vidjeti period u kojem će postojati dosta konkurentnih pristupa. Kako se ovi jezici uklapaju na tržište proizvoda s programerima i što je najvažnije omogućavaju tim programerima da izgrade moćne, korisne i sigurne DA aplikacije, vjerovatno ć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 bi mogli 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 orijentiranog na sredstva.

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