Vyper, Solidity ja Scrypto: kuidas võrrelda nutikaid lepingukeeli

Pilk kolmele erinevale plokiahelavõrkude programmeerimiskeelele ja nende võrdlemisele.

Ethereumi võrk tõi nutikad lepingud plokiahela ruumi, muutes kontseptsioonid sarnaseks detsentraliseeritud rahandus (DeFi) võimalik. 

Nutikad lepingud saavad protsesse automaatselt käivitada, kui teatud tingimused on täidetud. Koos selle uue tehnoloogiaga töötati välja uus kodeerimiskeel nimega Solidity.

Kuna plokiahela tööstus kasvab jätkuvalt ja tekivad uued plokiahelavõrgud, tuuakse ruumi täiendavaid programmeerimiskeeli, eriti Vyper ja Scrypto.

Programmeerimiskeeled on reeglite kogum, mis teisendab teksti- ja numbristringid masinloetavaks koodiks. Lihtsamalt öeldes võimaldavad programmeerimiskeeled arvutitel mõista inimeste poolt sisestatud juhiseid. Kui rääkida plokiahela tööstusest, siis Solidity, Python ja Javascript on ühed kõige sagedamini kasutatavad keeled, kuid need kõik töötavad erinevalt.

Mis on soliidsus?

Solidity on objektorienteeritud ja kõrgetasemeline programmeerimiskeel nutikate lepingute loomiseks Ethereumi plokiahelas ja teistes plokiahelavõrkudes, nagu BNB Smart Chain ja Avalanche. Keel töötati välja 2014. aastal ja sellel on sarnasusi programmeerimiskeeltega nagu JavaScript, C++ ja Python.

Kuna Solidity on kõrgetasemeline keel, trükitakse arvutikood ühtede ja nullide asemel lihtsalt arusaadaval ja inimesele loetaval viisil. Näiteks Solidity kood sisaldab sõnu ja fraase, nagu „funktsioon” ja „leping”, aga ka lokkis sulgusid ja numbreid.

Objektorienteeritud kodeerimiskeel tähendab, et Solidity kasutab "objekte", mis on kooditükid, mida saab uuesti kasutada sarnaste kooditükkide loomiseks ilma algset koodi iga kord ümber kirjutamata.

Solidity kasutab ka kompilaatorit, et teisendada inimloetav kõrgetasemeline kood masinloetavaks koodiks, mis käivitatakse Ethereumi virtuaalmasinas (EVM).

Mis on Vyper?

Vyper on lepingutele orienteeritud pütooniline programmeerimiskeel nutikate lepingute jaoks, mis on mõeldud kasutamiseks koos EVM-iga. Keel loodi Solidity täiustamiseks, parandades koodi turvalisust ja loetavust. Vyper keskendub tugevalt oma koodi kuuldavusele. Sellest tulenevalt on selle üks põhimõte, et inimesed peaksid suutma lugeda võimalikult palju Vyperi koodi. 

Vyperi eesmärk on ka muuta eksitava koodi kirjutamine igaühe jaoks võimalikult keeruliseks. Lihtsus lugeja (st audiitori) jaoks on olulisem kui lihtsus kirjutaja (st arendaja) jaoks. Nii on nutikas lepingus või detsentraliseeritud rakenduses (DApp) lihtsam pahatahtlikku koodi tuvastada.

Mis on Scrypto?

Scrypto on varadele orienteeritud nutikas lepingukeel. Keele töötas välja Radix, see põhineb Rustil ja säilitab enamiku Rusti funktsioonidest, lisades samal ajal Radix Engine v2 jaoks spetsiifilisi funktsioone ja süntaksi. Kuna Scrypto on varadele orienteeritud, saab see suhelda selliste varadega nagu märgid, mis on teatud tüüpi ressursid selles keeles. 

Kodeerimiskeeltes, nagu Solidity, eksisteerivad ERC-20 märgid EVM-is nutikate lepingutena. Scrypto varad on konteinerites ja varahoidlates olevad ressursid. Lihtsamalt öeldes on see nagu ämber (konteiner) ja selle täitmine müntidega (vara), mida saab hoida hoiupõrsas (võlv).

Viimased: Nõudlus talentide järele krüpto valdkonnas sõltub tööstuse küpsedes turust vähem

Scrypto keskendub ka arendajasõbralikkusele, võimaldades neil konteinerite ja ressurssidega suhtlemisel kirjutada ainult vajalikku koodi, et võimaldada DApp-i funktsioone. Turvalisus on veel üks põhimõte, mille puhul arendajad saavad anda DA-rakendusele konkreetseid juhiseid, selle asemel et anda üldiseid õigusi.

Kuidas võrrelda nutikaid lepingukeeli

Solidity pakub laias valikus veebipõhiseid õpperessursse ja palju kogukonna tuge, kuna seda kasutatakse suuremates plokiahelavõrkudes nagu Ethereum. Solidity sisaldab ka laias valikus objektorienteeritud programmeerimisest (OOP) võetud funktsioone, muutes selle modulaarseks ja probleemi korral hõlpsamini tõrkeotsinguks. Näiteks kui teatud klassi objektil tekkis tõrge, võib selle klassi päritoluni leida. 

See toimib, kuna Solidity kasutab kapseldamist, mis tähendab, et iga objekt on iseseisev ja iga funktsioon töötab iseseisvalt. Kodeerimiskeele modulaarsus võimaldab arendajatel töötada ka mitme objektiga samaaegselt, muutes nutikate lepingute loomise, parandamise ja juurutamise tõhusamaks.

Vyper on lihtsam kodeerimiskeel kui Solidity, mis rõhutab läbipaistvust, keelestruktuuri lihtsust ja kuuldavust. Vyperil on ka vähem funktsioone kui Solidity, mida tehti turvakaalutlustel tahtlikult. Piiratud funktsioonide komplekt vähendab haavatavuste arvu, mida pahatahtlikud osalejad saavad ära kasutada.

Näiteks kasutab Solidity modifikaatoreid, mis näitavad, et enne ja pärast protsessi teostamist on kontrollitud. Kuid Vyper ei kasuta modifikaatoreid, kuna arendajate arvates muudab see eksitava koodi kirjutamise lihtsamaks. Samuti julgustab see inimesi arendama koodi, mis põrkub kogu faili ulatuses, vähendades kuuldavust. Kuna Vyperis modifikaatoreid pole, on võimatu koodi olekumuudatusi lisada.

Teine funktsioon, mis on Vyperist välja jäetud, on pärimine. Solidity'is võivad mitu lepingut pärida põhilepingu funktsioone. Kui esineb lahkarvamusi, on see ka vajalik, et üksikisikud mõistaksid prioriteetsuse norme. Vyper ei kasuta klassipärimist, kuna see kõrvaldab koodi võimaliku keerukuse allika, mis aitab kaasa paremale kuuldavusele. Üldiselt on Vyper minimalistlikum kodeerimiskeel, mis vahetab mõningaid funktsioone turvalisuse suurendamiseks ja oma koodibaasi paremaks uurimiseks, et Vyper-põhiste nutikate lepingute kasutajaid paremini kaitsta.

Kuigi Solidity võib olla üks populaarsemaid ja tuntumaid programmeerimiskeeli plokiahelaruumis, on mõnel keelel arendajatel lihtsam õppimiskõver. Lisaks hõlbustavad lihtsamad programmeerimiskeeled uute arendajate meelitamist tööstusesse.

Radixi arendajate RDX Worksi strateegiajuht Adam Simmons ütles Cointelegraphile: "Selleks tööks õigete tööriistade olemasolu on suur erinevus - ja praegu pole plokiahela arendajatel õigeid tööriistu. See ei tähenda ainult keelte lihtsamaks muutmist, vaid ka intuitiivsete ja turvaliste arendajatööriistade muutmist,“ jätkab:

„Tippajal kasvas DeFi vaid kahe aastaga üle 200 miljardi dollari TVL-ni – seega on selge, et nõudlus on väga kõrge. Vaatamata kapitali 200-kordsele kasvule kasvas arendajate arv vaid 2 korda, kokku umbes 19,000 30-ni (umbes XNUMX miljonist arendajast maailmas).

Vaatamata detsentraliseeritud finantsruumi kõrgele kasvutasemele ei kasvanud arendajate arv nõudlusele vastavaks. Simmons usub, et arendajad võisid leida, et Solidity on plokiahela arendusele üleminekuks liiga keeruline:

„Solidity järsu õppimiskõvera ja turvalisusega seotud kõrge riskitaseme tõttu on arendajad kõhklevad täiskohaga Web3-s tööle asumisel. Hoolimata väga andekatest arendajatest ja miljonitest dollaritest, mis on kulutatud turvaaudititele, tõmbab DeFi endiselt häkkimise ja ärakasutamise eest raha. Ainuüksi sellest piisab, et takistada arendajaid ruumi sisenemast.

„Õigete keelte ja tööriistade olemasolu võimaldab arendajatel kogu tööstust palju kiiremini kasvatada. Nii nagu mängumootorid andsid arendajatele 90ndatel tööriistad videomängude tootmise revolutsiooniliseks muutmiseks, võimaldavad õiged Web3 keeled ja tööriistad arendajatel Web3 kasvu kiirendada,“ lisas Simmons.

Scrypto keskendub ka turvalisusele, lihtsusele ja kasutajasõbralikkusele. Scrypto tehingud on keskendunud varadele. Need määravad, kuidas kasutaja soovib süsteemiressursse jaotada. Samuti võivad need näidata, kuidas kasutaja või mõni muu komponent mitmekomponendilise tehingu puhul tagastatud ressursse käsitlema peaks.

Ethereumi tehingud on tavaliselt nutika lepingu kõne (kuna Ethereumi DApp-id ja märgid on nutikad lepingud). Seevastu Scrypto tehingud hõlmavad varade teisaldamist ühest komponendist teise.

Näiteks kui kasutaja A soovib saata kasutajale B 10 kohandatud märki, näitab tema tehing, et ta üritab neid sisaldavast hoidlast välja võtta 10 märki. Tehing näitab ka, et nad saadavad need märgid kasutaja B kontokomponendi sissemaksemeetodile. Kuna ressursid (antud juhul märgid) peavad kuskil asuma, kasutatakse ämbrit (konteinerit) märkide ülekandmiseks kasutajalt A kasutajale B.

Ülaltoodud näites kannab kasutaja ressursse (märke) sisaldava ämbri teise kasutaja sissemaksemeetodisse, selle asemel, et helistada märgi nutikale lepingule. DAppsiga suhtlemine toimib sarnaselt, kasutajad võtavad oma kontodelt märgid välja ja edastavad need vastavale komponendile, millega nad soovivad suhelda. Kokkuvõttes kasutab Scrypto varapõhist lähenemist, kus kasutajad salvestavad ja edastavad tegelikke varasid. Varapõhine lähenemine hõlbustab arendajatel ka DApp-ide kodeerimist, kuna on lihtsam suhelda žetoonide (ressursside), lubade kogumitega (varahoidlad) ja kasutajatega (komponentidega).

Teise näitena, kui vahetatav DApp (nagu Uniswap) oleks kodeeritud Scryptoga, peaksid arendajad kodeerima ainult vahetustehingu kauplemismeetodi. Esiteks peaks DEX tuvastama kasutaja sissetuleva märgi A konteineri ja seejärel arvutama vahetuskursi. Järgmisena deponeeritakse sissetulevad märgid ja DEX saadab kasutajale tagasi õige koguse Token B.

Millise programmeerimiskeele peaksid plokiahela arendajad valima?

Arendajad saavad kasutada nii traditsioonilisi programmeerimiskeeli (C++, Python, JavaScript) plokiahela arendamiseks kui ka spetsiaalselt ehitatud lahendusi nagu Solidity, Vyper ja Scrypto. Mitmed programmeerimiskeeled võivad olla plokiahela ruumi jaoks kasulikud, kuna see annab arendajatele töötamiseks hulga tööriistu. 

Näiteks arendajatele, kes tunnevad C++, JavaScripti ja Pythonit, võib Solidity olla atraktiivne. Pythonit tundvad arendajad võivad eelistada Vyperit, samas kui Rustiga tuttavad arendajad võivad valida Scrypto keele kasutamise.

Viimased: Sotsiaalsed märgid on Web3 mootoriks, alates fännibaasidest kuni ergutusteni

Simmons nõustub, öeldes Cointelegraphile: "Kui Web3-sse tuleb rohkem keeli, näeme tõenäoliselt ajaperioodi, kus on üsna vähe konkureerivaid lähenemisviise. Kuna need keeled leiavad tooteturu jaoks arendajatega sobivat ja mis kõige tähtsam, võimaldavad neil arendajatel luua võimsaid, kasulikke ja turvalisi DApp-e, näeme tõenäoliselt, et tööstus kaldub nende poole, mis annavad parimaid tulemusi.

Solidity on loomulikult valik arendajatele, kes soovivad töötada Ethereumi ja sarnaste plokiahela võrkude kallal. Samas võiksid Vyper ja Scrypto ligi meelitada arendajaid, kes eelistavad lihtsust ja lisaturvalisust. Scrypto võib olla ka arendajatele eelistatavam tänu oma lihtsusele ja varadele orienteeritud lähenemisviisile.

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