Vyper, Solidity och Scrypto: Hur de smarta kontraktsspråken jämförs

En titt på tre olika programmeringsspråk för blockchain-nätverk och hur de jämförs.

Ethereum-nätverket förde smarta kontrakt in i blockchain-utrymmet, vilket gjorde koncept som decentraliserad ekonomi (DeFi) möjligt. 

Smarta kontrakt kan automatiskt utföra processer när vissa villkor har uppfyllts. Tillsammans med denna nya teknik utvecklades ett nytt kodningsspråk som heter Solidity.

När blockchain-industrin fortsätter att växa och nya blockchain-nätverk växer fram, kommer ytterligare programmeringsspråk in i utrymmet, särskilt Vyper och Scrypto.

Programmeringsspråk är en uppsättning regler som konverterar textsträngar och siffror till maskinläsbar kod. Enkelt uttryckt gör programmeringsspråk det möjligt för datorer att förstå instruktioner som matas in av människor. När det kommer till blockchain-industrin är Solidity, Python och Javascript några av de mest använda språken, men de fungerar alla olika.

Vad är soliditet?

Solidity är ett objektorienterat programmeringsspråk på hög nivå för att bygga smarta kontrakt på Ethereum blockchain och andra blockchain-nätverk som BNB Smart Chain och Avalanche. Språket utvecklades 2014 och delar likheter med programmeringsspråk som JavaScript, C++ och Python.

Eftersom Solidity är ett högnivåspråk skrivs datorkod på ett lättförståeligt och läsbart sätt istället för ettor och nollor. Till exempel kommer Solidity-koden att inkludera ord och fraser som "funktion" och "kontrakt", samt krulliga parenteser och siffror.

Att vara ett objektorienterat kodspråk innebär att Solidity kretsar kring att använda "objekt", som är bitar av kod som kan återanvändas för att skapa liknande bitar av kod utan att skriva om den ursprungliga koden varje gång.

Solidity använder också en kompilator för att konvertera den mänskliga läsbara koden på hög nivå till maskinläsbar kod som exekveras på Ethereum Virtual Machine (EVM).

Vad är Vyper?

Vyper är ett kontraktsorienterat, pytoniskt programmeringsspråk för smarta kontrakt utformat för att användas med EVM. Språket utformades för att förbättra Solidity genom att förbättra kodens säkerhet och läsbarhet. Vyper har ett starkt fokus på hörbarheten av sin kod. På grund av detta är en av dess principer att människor ska kunna läsa så mycket Vyper-kod som möjligt. 

Vyper syftar också till att göra det så svårt som möjligt för vem som helst att skriva vilseledande kod. Enkelhet för läsaren (dvs. en revisor) är viktigare än enkelhet för skribenten (dvs. utvecklaren). På så sätt blir det lättare att identifiera skadlig kod inom ett smart kontrakt eller decentraliserad applikation (DApp).

Vad är Scrypto?

Scrypto är ett tillgångsorienterat smart avtalsspråk. Språket har utvecklats av Radix, är baserat på Rust och behåller de flesta av Rusts funktioner samtidigt som det lägger till specifika funktioner och syntax för Radix Engine v2. Eftersom Scrypto är tillgångsorienterat kan det interagera med tillgångar som tokens, som är en typ av resurs inom språket. 

I kodningsspråk som Solidity finns ERC-20-tokens som smarta kontrakt på EVM. Tillgångar inom Scrypto är resurser som finns i containrar och valv. Enkelt uttryckt är det som att ha en hink (behållaren) och fylla den med mynt (tillgången) som kan förvaras inuti en spargris (valvet).

Nyligen: Efterfrågan på talanger inom krypto mindre beroende av marknaden när industrin mognar

Scrypto fokuserar också på att vara utvecklarvänlig genom att tillåta dem att bara skriva den nödvändiga koden samtidigt som de interagerar med behållarna och resurserna för att möjliggöra funktionalitet inom en DApp. Säkerhet är en annan princip där utvecklare kan ge specifika instruktioner till en DApp istället för att ge ut allmänna behörigheter.

Hur de smarta kontraktsspråken jämförs

Solidity har ett brett utbud av onlineinlärningsresurser och mycket gemenskapsstöd på grund av dess användning i stora blockkedjenätverk som Ethereum. Solidity har också ett brett utbud av funktioner hämtade från objektorienterad programmering (OOP), vilket gör det modulärt och lättare att felsöka när det finns ett problem. Till exempel, om ett objekt från en viss klass skulle fungera felaktigt, kan det spåras tillbaka till klassens ursprung. 

Detta fungerar eftersom Solidity använder inkapsling, vilket innebär att varje objekt är fristående, med varje funktion som fungerar oberoende. Modulariteten i kodspråket tillåter också utvecklare att arbeta på flera objekt samtidigt, vilket gör det mer effektivt att bygga, fixa och distribuera smarta kontrakt.

Vyper är ett enklare kodningsspråk än Solidity, som betonar transparens, enkelhet i språkstrukturen och hörbarhet. Vyper har också färre funktioner än Solidity, vilket gjordes avsiktligt av säkerhetsskäl. Den begränsade funktionsuppsättningen minskar antalet sårbarheter som skadliga aktörer kan utnyttja.

Till exempel använder Solidity modifierare som indikerar att kontroller har utförts före och efter att en process har utförts. Vyper använder dock inte modifierare då utvecklarna tror att det gör det lättare att skriva vilseledande kod. Det uppmuntrar också individer att utveckla kod som studsar genom hela filen, vilket minskar hörbarheten. Eftersom modifierare inte finns i Vyper är det omöjligt att lägga till några tillståndsändringar i koden.

En annan funktion som är utesluten från Vyper är arv. I Solidity kan flera kontrakt ärva funktioner från ett överordnat kontrakt. Om det finns en oenighet, kräver det också att individer förstår normerna för företräde. Vyper använder inte klassarv eftersom det eliminerar en potentiell källa till komplexitet i koden, vilket bidrar till förbättrad hörbarhet. I allmänhet är Vyper ett mer minimalistiskt kodningsspråk som byter ut vissa funktioner för ökad säkerhet och bättre granskning av sin kodbas för att bättre skydda användare av Vyper-baserade smarta kontrakt.

Medan Solidity kan vara ett av de mest populära och välkända programmeringsspråken i blockkedjeområdet, har vissa språk lättare inlärningskurvor för utvecklare. Dessutom gör enklare programmeringsspråk det lättare att locka nya utvecklare till branschen.

Adam Simmons, strategichef på RDX Works – utvecklarna bakom Radix – sa till Cointelegraph, "Att ha rätt verktyg för jobbet gör stor skillnad – och just nu har blockchain-utvecklare inte de rätta verktygen. Det här handlar inte bara om att göra språken enklare, utan att göra utvecklarverktyg som är intuitiva och säkra”, fortsätter:

"På sin topp växte DeFi till över 200 miljarder USD TVL på bara två år - så det är uppenbart att det finns mycket höga nivåer av efterfrågan. Men trots denna 200x ökning av kapital ökade antalet utvecklare bara med 2x, till totalt cirka 19,000 30 (av cirka XNUMX miljoner utvecklare över hela världen).

Trots den höga tillväxtnivån i det decentraliserade finansområdet växte inte antalet utvecklare för att matcha efterfrågan. Simmons tror att utvecklare kan ha funnit att Solidity är för svårt för dem att gå över till blockchain-utveckling:

"Utvecklare är tveksamma till att gå heltid i Web3 på grund av den branta inlärningskurvan för Solidity och de höga risknivåerna kring säkerhet. Trots de mycket begåvade utvecklarna och miljontals dollar som spenderas på säkerhetsrevisioner, blöder DeFi fortfarande pengar från hacks och utnyttjande. Bara detta är tillräckligt för att avskräcka utvecklare från att komma in i utrymmet."

"Att ha rätt språk och verktyg kommer att göra det möjligt för utvecklare att växa hela branschen mycket snabbare. Precis som spelmotorer gav utvecklare verktygen för att revolutionera videospelsproduktionen på 90-talet, kommer rätt Web3-språk och verktyg att göra det möjligt för utvecklare att påskynda tillväxten av Web3, tillade Simmons.

Scrypto fokuserar också på säkerhet, enkelhet och användarvänlighet. Kryptotransaktioner är fokuserade på tillgångar. De definierar hur användaren vill att systemresurserna ska distribueras. De kan också indikera hur returnerade resurser ska hanteras av användaren eller en annan komponent i en multikomponenttransaktion.

Transaktioner på Ethereum är vanligtvis ett samtal till ett smart kontrakt (eftersom DApps och tokens på Ethereum är smarta kontrakt). Däremot involverar transaktioner på Scrypto att tillgångar flyttas från en komponent till en annan.

Till exempel, om användare A vill skicka 10 anpassade tokens till användare B, skulle deras transaktion visa att de försöker ta ut 10 tokens från valvet som innehåller dem. Transaktionen kommer också att visa att de kommer att skicka dessa tokens till insättningsmetoden för Användare B:s kontokomponent. Eftersom resurser (i det här fallet tokens) måste finnas någonstans, kommer en hink (behållare) att användas för att överföra tokens från användare A till användare B.

I exemplet ovan överför användaren en hink som innehåller resurserna (poletterna) till insättningsmetoden för den andra användaren istället för att ringa till ett smart tokenkontrakt. Att interagera med DApps fungerar på liknande sätt, med användare som tar ut tokens från sina konton och skickar dem till den relevanta komponenten de vill interagera med. Sammanfattningsvis tar Scrypto ett tillgångsbaserat tillvägagångssätt, där användare lagrar och förmedlar faktiska tillgångar. Den tillgångsbaserade metoden gör det också lättare för utvecklare att koda DApps eftersom det är lättare att interagera med tokens (resurser), tokenpooler (valv) och användare (komponenter).

För ett annat exempel, om en swappande DApp (som Uniswap) kodades med Scrypto, skulle utvecklarna bara behöva koda handelsmetoden för bytet. Först skulle DEX behöva identifiera en användares inkommande behållare med Token A och sedan beräkna växelkursen. Därefter kommer de inkommande tokens att deponeras, och DEX kommer att skicka tillbaka rätt mängd Token B till användaren.

Vilket programmeringsspråk ska blockchain-utvecklare välja?

Utvecklare kan använda traditionella programmeringsspråk (C++, Python, JavaScript) för blockchain-utveckling såväl som specifikt byggda lösningar som Solidity, Vyper och Scrypto. Flera programmeringsspråk kan vara fördelaktiga för blockchain-utrymmet eftersom det ger utvecklare en rad verktyg att arbeta med. 

Till exempel kan utvecklare som är bekanta med C++, JavaScript och Python tycka att Solidity är attraktivt. Utvecklare som är bekanta med Python kan dras mot Vyper, medan utvecklare som är bekanta med Rust kan välja att använda Scrypto-språket.

Nyligen: Sociala tokens kommer att vara motorn för Web3, från fanbaser till incitament

Simmons håller med och säger till Cointelegraph: "Med fler språk som kommer till Web3 kommer vi sannolikt att se en period där det finns en hel del konkurrerande tillvägagångssätt. Eftersom dessa språk finner produktmarknad som passar utvecklare och viktigast av allt gör det möjligt för dessa utvecklare att bygga kraftfulla, användbara och säkra DApps, kommer vi sannolikt att se branschen dras mot de som ger bäst resultat."

Solidity kommer naturligtvis att vara valet för utvecklare som vill arbeta på Ethereum och liknande blockchain-nätverk. Samtidigt kan Vyper och Scrypto locka utvecklare som föredrar enkelhet och extra säkerhet. Scrypto kan också vara att föredra för utvecklare på grund av dess ökade enkelhet och tillgångsorienterade tillvägagångssätt.

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