Vyper, Solidity en Scrypto: hoe de slimme contracttalen zich verhouden

Een blik op drie verschillende programmeertalen voor blockchain-netwerken en hoe ze zich verhouden.

Het Ethereum-netwerk bracht slimme contracten in de blockchain-ruimte, waardoor concepten zoals: gedecentraliseerde financiering (DeFi) mogelijk. 

Slimme contracten kunnen processen automatisch uitvoeren zodra aan bepaalde voorwaarden is voldaan. Samen met deze nieuwe technologie werd een nieuwe codeertaal ontwikkeld, Solidity genaamd.

Naarmate de blockchain-industrie blijft groeien en er nieuwe blockchain-netwerken ontstaan, worden er extra programmeertalen in de ruimte gebracht, met name Vyper en Scrypto.

Programmeertalen zijn een reeks regels die tekenreeksen tekst en cijfers omzetten in machineleesbare code. In eenvoudige bewoordingen stellen programmeertalen computers in staat instructies te begrijpen die door mensen worden ingevoerd. Als het gaat om de blockchain-industrie, zijn Solidity, Python en Javascript enkele van de meest gebruikte talen, maar ze werken allemaal anders.

Wat is soliditeit?

Solidity is een objectgeoriënteerde programmeertaal op hoog niveau voor het bouwen van slimme contracten op de Ethereum-blockchain en andere blockchain-netwerken zoals BNB Smart Chain en Avalanche. De taal is ontwikkeld in 2014 en vertoont overeenkomsten met programmeertalen als JavaScript, C++ en Python.

Omdat Solidity een taal op hoog niveau is, wordt computercode op een gemakkelijk te begrijpen en voor mensen leesbare manier getypt in plaats van enen en nullen. Solidity-code bevat bijvoorbeeld woorden en woordgroepen als 'functie' en 'contract', evenals accolades en cijfers.

Omdat het een objectgeoriënteerde codeertaal is, draait Solidity om het gebruik van "objecten", stukjes code die kunnen worden hergebruikt om vergelijkbare stukjes code te maken zonder telkens de originele code opnieuw te schrijven.

Solidity gebruikt ook een compiler om de door mensen leesbare code op hoog niveau om te zetten in machineleesbare code die wordt uitgevoerd op de Ethereum Virtual Machine (EVM).

Wat is Viper?

Vyper is een contractgeoriënteerde, pythonische programmeertaal voor slimme contracten die is ontworpen om te worden gebruikt met de EVM. De taal is ontworpen om Solidity te verbeteren door de beveiliging en leesbaarheid van de code te verbeteren. Vyper heeft een sterke focus op de hoorbaarheid van zijn code. Daarom is een van de principes dat mensen zoveel mogelijk Vyper-code moeten kunnen lezen. 

Vyper streeft er ook naar om het voor iedereen zo moeilijk mogelijk te maken om misleidende code te schrijven. Eenvoud voor de lezer (dwz een auditor) is belangrijker dan eenvoud voor de schrijver (dwz ontwikkelaar). Op deze manier wordt het gemakkelijker om kwaadaardige code te identificeren binnen een slim contract of decentrale applicatie (DApp).

Wat is Scrypto?

Scrypto is een asset-georiënteerde slimme contracttaal. De taal is ontwikkeld door Radix, is gebaseerd op Rust en behoudt de meeste functies van Rust, terwijl specifieke functies en syntaxis voor Radix Engine v2 worden toegevoegd. Omdat Scrypto asset-georiënteerd is, kan het communiceren met assets zoals tokens, een soort bron binnen de taal. 

In codeertalen zoals Solidity bestaan ​​ERC-20-tokens als slimme contracten op de EVM. Activa binnen Scrypto zijn bronnen die zich in containers en kluizen bevinden. In eenvoudige bewoordingen is het alsof je een emmer (de container) hebt en deze vult met munten (de activa) die in een spaarpot (de kluis) kunnen worden bewaard.

Recent: Vraag naar talent in crypto minder afhankelijk van de markt naarmate de industrie volwassener wordt

Scrypto richt zich ook op ontwikkelaarsvriendelijkheid door hen in staat te stellen alleen de benodigde code te schrijven terwijl ze communiceren met de containers en bronnen om functionaliteit binnen een DApp mogelijk te maken. Beveiliging is een ander principe waarbij ontwikkelaars specifieke instructies aan een DApp kunnen geven in plaats van algemene machtigingen te geven.

Hoe de slimme contracttalen zich verhouden

Solidity heeft een breed scala aan online leermiddelen en veel community-ondersteuning vanwege het gebruik in grote blockchain-netwerken zoals Ethereum. Solidity heeft ook een breed scala aan functies uit objectgeoriënteerd programmeren (OOP), waardoor het modulair is en gemakkelijker op te lossen als er een probleem is. Als een object uit een bepaalde klasse bijvoorbeeld defect zou raken, kon dit worden herleid tot de oorsprong van de klasse. 

Dit werkt omdat Solidity inkapseling gebruikt, wat betekent dat elk object op zichzelf staat, waarbij elke functie onafhankelijk werkt. De modulariteit van de codeertaal stelt ontwikkelaars ook in staat om aan meerdere objecten tegelijk te werken, waardoor het efficiënter wordt om slimme contracten te bouwen, te repareren en in te zetten.

Vyper is een eenvoudigere codeertaal dan Solidity, met de nadruk op transparantie, eenvoud van de taalstructuur en hoorbaarheid. Vyper heeft ook minder functies dan Solidity, wat om veiligheidsredenen opzettelijk is gedaan. De beperkte functieset vermindert het aantal kwetsbaarheden die kwaadwillende actoren kunnen misbruiken.

Solidity gebruikt bijvoorbeeld modifiers die aangeven dat er controles zijn uitgevoerd voor en nadat een proces is uitgevoerd. Vyper gebruikt echter geen modifiers omdat de ontwikkelaars denken dat dit het gemakkelijker maakt om misleidende code te schrijven. Het moedigt individuen ook aan om code te ontwikkelen die door het bestand heen stuitert, waardoor de hoorbaarheid wordt verminderd. Aangezien er geen modifiers aanwezig zijn in Vyper, is het onmogelijk om statuswijzigingen aan de code toe te voegen.

Een ander kenmerk dat is uitgesloten van Vyper is overerving. In Solidity kunnen meerdere contracten functies van een bovenliggend contract erven. Als er een meningsverschil is, is het ook nodig dat individuen de prioriteitsnormen begrijpen. Vyper maakt geen gebruik van klasse-overerving omdat het een potentiële bron van complexiteit in de code elimineert, wat bijdraagt ​​aan een betere hoorbaarheid. Over het algemeen is Vyper een meer minimalistische codeertaal die sommige functionaliteiten inruilt voor meer veiligheid en een beter onderzoek van de codebase om gebruikers van op Vyper gebaseerde slimme contracten beter te beschermen.

Hoewel Solidity misschien wel een van de meest populaire en bekende programmeertalen in de blockchain-ruimte is, hebben sommige talen gemakkelijkere leercurves voor ontwikkelaars. Bovendien maken eenvoudigere programmeertalen het gemakkelijker om nieuwe ontwikkelaars voor de industrie aan te trekken.

Adam Simmons, chief strategy officer bij RDX Works - de ontwikkelaars achter Radix - vertelde Cointelegraph: "Het hebben van de juiste tools voor de klus maakt een groot verschil - en op dit moment hebben blockchain-ontwikkelaars niet de juiste tools. Het gaat er niet alleen om de talen eenvoudiger te maken, maar ook om ontwikkelaarstools te maken die intuïtief en veilig zijn”, vervolgt:

"Op zijn hoogtepunt groeide DeFi in slechts twee jaar tijd tot meer dan $ 200 miljard TVL - er is dus duidelijk een zeer hoge vraag. Maar ondanks deze 200x kapitaalgroei, is het aantal ontwikkelaars slechts 2x toegenomen, tot een totaal van ongeveer 19,000 (van de ongeveer 30 miljoen ontwikkelaars wereldwijd).”

Ondanks de hoge groei in de gedecentraliseerde financiële ruimte, groeide het aantal ontwikkelaars niet om aan de vraag te voldoen. Simmons is van mening dat ontwikkelaars Solidity mogelijk te moeilijk hebben gevonden om over te stappen op blockchain-ontwikkeling:

“Ontwikkelaars aarzelen om fulltime in Web3 te gaan werken vanwege de steile leercurve van Solidity en de hoge risiconiveaus rond beveiliging. Ondanks de zeer getalenteerde ontwikkelaars en miljoenen dollars die zijn uitgegeven aan beveiligingsaudits, bloedt DeFi nog steeds geld uit hacks en exploits. Dit alleen is voldoende om ontwikkelaars ervan te weerhouden de ruimte te betreden.”

“Door de juiste talen en tools te hebben, kunnen ontwikkelaars de hele industrie veel sneller laten groeien. Net zoals game-engines ontwikkelaars de tools gaven om de productie van videogames in de jaren 90 te revolutioneren, zullen de juiste Web3-talen en tools ontwikkelaars in staat stellen de groei van Web3 te versnellen,” voegde Simmons toe.

Scrypto richt zich ook op veiligheid, eenvoud en gebruiksvriendelijkheid. Scrypto-transacties zijn gericht op activa. Ze definiëren hoe de gebruiker wil dat systeembronnen worden verdeeld. Ze kunnen ook aangeven hoe geretourneerde bronnen moeten worden behandeld door de gebruiker of een ander onderdeel in een transactie met meerdere componenten.

Transacties op Ethereum zijn meestal een oproep tot een slim contract (aangezien DApps en tokens op Ethereum slimme contracten zijn). Transacties op Scrypto daarentegen omvatten het verplaatsen van activa van het ene onderdeel naar het andere.

Als gebruiker A bijvoorbeeld 10 aangepaste tokens naar gebruiker B wil sturen, zou hun transactie laten zien dat ze 10 tokens proberen op te nemen uit de kluis die ze bevat. De transactie zal ook laten zien dat ze die tokens naar de stortingsmethode van de accountcomponent van gebruiker B zullen sturen. Omdat resources (in dit geval de tokens) ergens moeten staan, wordt er een bucket (container) gebruikt om de tokens van gebruiker A naar gebruiker B over te brengen.

In het bovenstaande voorbeeld draagt ​​de gebruiker een bucket met daarin de resources (de tokens) over naar de stortingsmethode van de tweede gebruiker in plaats van te bellen naar een token smart contract. Interactie met DApps werkt op dezelfde manier, waarbij gebruikers tokens van hun accounts opnemen en doorgeven aan de relevante component waarmee ze willen communiceren. Samengevat hanteert Scrypto een op activa gebaseerde benadering, waarbij gebruikers daadwerkelijke activa opslaan en doorgeven. De op activa gebaseerde benadering maakt het ook gemakkelijker voor ontwikkelaars om DApps te coderen, omdat het gemakkelijker is om te communiceren met tokens (resources), tokenpools (kluizen) en gebruikers (componenten).

Voor een ander voorbeeld, als een swap-DApp (zoals Uniswap) gecodeerd zou zijn met Scrypto, zouden de ontwikkelaars alleen de handelsmethode voor de swap hoeven te coderen. Eerst moet de DEX de inkomende container van Token A van een gebruiker identificeren en vervolgens de wisselkoers berekenen. Vervolgens worden de inkomende tokens gestort en stuurt de DEX het juiste aantal Token B terug naar de gebruiker.

Welke programmeertaal moeten blockchain-ontwikkelaars kiezen?

Ontwikkelaars kunnen traditionele programmeertalen (C++, Python, JavaScript) gebruiken voor blockchain-ontwikkeling, evenals specifiek gebouwde oplossingen zoals Solidity, Vyper en Scrypto. Meerdere programmeertalen kunnen gunstig zijn voor de blockchain-ruimte, omdat het ontwikkelaars een reeks hulpmiddelen biedt om mee te werken. 

Zo kunnen ontwikkelaars die bekend zijn met C++, JavaScript en Python Solidity aantrekkelijk vinden. Ontwikkelaars die bekend zijn met Python kunnen aangetrokken worden tot Vyper, terwijl ontwikkelaars die bekend zijn met Rust ervoor kunnen kiezen om de Scrypto-taal te gebruiken.

Recent: Sociale tokens zullen de motor van Web3 zijn, van fanbases tot incentives

Simmons is het daarmee eens en zegt tegen Cointelegraph: "Nu er meer talen naar Web3 komen, zullen we waarschijnlijk een periode zien waarin er nogal wat concurrerende benaderingen zijn. Aangezien deze talen de productmarkt passen bij ontwikkelaars en vooral die ontwikkelaars in staat stellen om krachtige, nuttige en veilige DApps te bouwen, zullen we waarschijnlijk zien dat de industrie aangetrokken wordt tot degenen die de beste resultaten leveren.”

Solidity zal natuurlijk de keuze zijn voor ontwikkelaars die aan Ethereum en vergelijkbare blockchain-netwerken willen werken. Tegelijkertijd zouden Vyper en Scrypto ontwikkelaars kunnen aantrekken die de voorkeur geven aan eenvoud en extra beveiliging. Scrypto kan ook de voorkeur hebben voor ontwikkelaars vanwege de toegenomen eenvoud en asset-georiënteerde benadering.

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