Vyper, Solidity și Scrypto: Cum se compară limbajele contractelor inteligente

O privire asupra a trei limbaje de programare diferite pentru rețelele blockchain și a modului în care acestea se compară.

Rețeaua Ethereum a adus contracte inteligente în spațiul blockchain, creând concepte precum finanțe descentralizate (DeFi) posibil. 

Contractele inteligente pot executa automat procese odată ce anumite condiții au fost îndeplinite. Odată cu această nouă tehnologie, a fost dezvoltat un nou limbaj de codare numit Solidity.

Pe măsură ce industria blockchain continuă să crească și apar noi rețele blockchain, limbaje de programare suplimentare sunt aduse în spațiu, în special Vyper și Scrypto.

Limbaje de programare sunt un set de reguli care convertesc șiruri de text și numere în cod care poate fi citit de mașină. În termeni simpli, limbajele de programare permit computerelor să înțeleagă instrucțiunile introduse de ființe umane. Când vine vorba de industria blockchain, Solidity, Python și Javascript sunt unele dintre cele mai frecvent utilizate limbi, dar toate funcționează diferit.

Ce este Solidity?

Solidity este un limbaj de programare orientat pe obiecte și la nivel înalt pentru construirea de contracte inteligente pe blockchain-ul Ethereum și alte rețele blockchain precum BNB Smart Chain și Avalanche. Limbajul a fost dezvoltat în 2014 și are asemănări cu limbaje de programare precum JavaScript, C++ și Python.

Întrucât Solidity este un limbaj de nivel înalt, codul computerului este tastat într-o manieră ușor de înțeles și de citit de om, în loc de unu și zero. De exemplu, codul Solidity va include cuvinte și expresii precum „funcție” și „contract”, precum și paranteze și numere.

Fiind un limbaj de codare orientat pe obiecte înseamnă că Solidity se învârte în jurul utilizării „obiectelor”, care sunt bucăți de cod care pot fi reutilizate pentru a crea bucăți similare de cod fără a rescrie codul original de fiecare dată.

Solidity folosește, de asemenea, un compilator pentru a converti codul de nivel înalt care poate fi citit de om în cod care poate fi citit de mașină, care este executat pe Ethereum Virtual Machine (EVM).

Ce este Vyper?

Vyper este un limbaj de programare pythonic, orientat spre contract, pentru contracte inteligente, conceput pentru a fi utilizat cu EVM. Limbajul a fost conceput pentru a îmbunătăți Solidity prin îmbunătățirea securității și lizibilitatea codului. Vyper se concentrează puternic pe audibilitatea codului său. Datorită acestui fapt, unul dintre principiile sale este că oamenii ar trebui să poată citi cât mai mult cod Vyper posibil. 

De asemenea, Vyper își propune să facă cât mai dificilă pentru oricine să scrie cod înșelător. Simplitatea pentru cititor (adică, un auditor) este mai importantă decât simplitatea pentru scriitor (adică, dezvoltator). În acest fel, va fi mai ușor să identificați codul rău intenționat în cadrul unui contract inteligent sau al unei aplicații descentralizate (DApp).

Ce este Scrypto?

Scrypto este un limbaj de contract inteligent orientat spre active. Limbajul a fost dezvoltat de Radix, se bazează pe Rust și păstrează majoritatea caracteristicilor lui Rust în timp ce adaugă funcții și sintaxă specifice pentru Radix Engine v2. Deoarece Scrypto este orientat către active, poate interacționa cu active precum jetoanele, care sunt un tip de resursă în limbaj. 

În limbaje de codare precum Solidity, jetoanele ERC-20 există ca contracte inteligente pe EVM. Activele din Scrypto sunt resurse care există în containere și seifuri. În termeni simpli, este ca și cum ai avea o găleată (containerul) și o umpli cu monede (activul) care pot fi depozitate într-o pușculiță (seif).

Recent: Cererea de talent în cripto este mai puțin dependentă de piață pe măsură ce industria se maturizează

Scrypto se concentrează, de asemenea, pe a fi prietenos cu dezvoltatorii, permițându-le să scrie doar codul necesar în timp ce interacționează cu containerele și resursele pentru a activa funcționalitatea într-un DApp. Securitatea este un alt principiu, dezvoltatorii fiind capabili să dea instrucțiuni specifice unui DApp în loc să acorde permisiuni generale.

Cum se compară limbile contractelor inteligente

Solidity are o gamă largă de resurse de învățare online și mult sprijin comunitar datorită utilizării sale în rețele blockchain majore precum Ethereum. Solidity are, de asemenea, o gamă largă de caracteristici preluate din programarea orientată pe obiecte (OOP), făcându-l modular și mai ușor de depanat atunci când există o problemă. De exemplu, dacă un obiect dintr-o anumită clasă va funcționa defectuos, ar putea fi urmărit până la originea clasei. 

Acest lucru funcționează deoarece Solidity folosește încapsularea, ceea ce înseamnă că fiecare obiect este autonom, fiecare funcție funcționând independent. Modularitatea limbajului de codare le permite dezvoltatorilor să lucreze la mai multe obiecte simultan, făcând mai eficientă construirea, repararea și implementarea contractelor inteligente.

Vyper este un limbaj de codare mai simplu decât Solidity, punând accent pe transparență, simplitatea structurii limbajului și audibilitate. Vyper are, de asemenea, mai puține funcții decât Solidity, care a fost făcut intenționat din motive de securitate. Setul limitat de caracteristici reduce numărul de vulnerabilități pe care actorii rău intenționați le pot exploata.

De exemplu, Solidity folosește modificatori care indică faptul că au fost efectuate verificări înainte și după executarea unui proces. Cu toate acestea, Vyper nu folosește modificatori, deoarece dezvoltatorii consideră că este mai ușor să scrie cod înșelător. De asemenea, îi încurajează pe indivizi să dezvolte cod care sări în întregul fișier, reducând audibilitatea. Deoarece modificatorii nu sunt prezenți în Vyper, este imposibil să adăugați modificări de stare la cod.

O altă caracteristică care este exclusă din Vyper este moștenirea. În Solidity, mai multe contracte pot moșteni caracteristici dintr-un contract părinte. Dacă există un dezacord, este nevoie și ca indivizii să înțeleagă normele de precedență. Vyper nu folosește moștenirea clasei, deoarece elimină o potențială sursă de complexitate a codului, ceea ce contribuie la îmbunătățirea audibilității. În general, Vyper este un limbaj de codare mai minimalist, care schimbă unele funcționalități pentru o securitate sporită și o mai bună examinare a bazei de cod pentru a proteja mai bine utilizatorii de contracte inteligente bazate pe Vyper.

În timp ce Solidity poate fi unul dintre cele mai populare și binecunoscute limbaje de programare din spațiul blockchain, unele limbi au curbe de învățare mai ușoare pentru dezvoltatori. În plus, limbajele de programare mai simple facilitează atragerea de noi dezvoltatori în industrie.

Adam Simmons, director de strategie la RDX Works – dezvoltatorii din spatele Radix – a declarat pentru Cointelegraph: „A avea instrumentele potrivite pentru job face o mare diferență – și în acest moment, dezvoltatorii de blockchain nu au instrumentele potrivite. Nu este vorba doar de a simplifica limbajele, ci de a face instrumente pentru dezvoltatori intuitive și sigure”, continuând:

„La apogeul său, DeFi a crescut la peste 200 de miliarde de dolari TVL în doar doi ani – atât de clar, există niveluri foarte ridicate de cerere. Cu toate acestea, în ciuda acestei creșteri de 200 de ori a capitalului, numărul dezvoltatorilor a crescut doar de 2 ori, la un total de aproximativ 19,000 (din aproximativ 30 de milioane de dezvoltatori din întreaga lume).

În ciuda nivelului ridicat de creștere observat în spațiul finanțelor descentralizate, numărul de dezvoltatori nu a crescut pentru a se potrivi cererii. Simmons crede că dezvoltatorii ar fi putut considera că Solidity este prea dificil pentru ei să treacă la dezvoltarea blockchain:

„Dezvoltatorii ezită să meargă cu normă întreagă în Web3 din cauza curbei abrupte de învățare a Solidity și a nivelurilor ridicate de risc în jurul securității. În ciuda dezvoltatorilor extrem de talentați și a milioanelor de dolari cheltuiți pentru audituri de securitate, DeFi încă hemoragiază bani din hack-uri și exploatări. Numai acest lucru este suficient pentru a descuraja dezvoltatorii să intre în spațiu.”

„Având limbile și instrumentele potrivite, dezvoltatorii vor putea dezvolta întreaga industrie mult mai rapid. Așa cum motoarele de jocuri au oferit dezvoltatorilor instrumentele necesare pentru a revoluționa producția de jocuri video în anii 90, limbajele și instrumentele potrivite pentru Web3 le vor permite dezvoltatorilor să accelereze creșterea Web3”, a adăugat Simmons.

Scrypto se concentrează, de asemenea, pe securitate, simplitate și ușurință în utilizare. Tranzacțiile Scrypto se concentrează pe active. Ele definesc modul în care utilizatorul dorește ca resursele sistemului să fie distribuite. Ele pot indica, de asemenea, modul în care resursele returnate ar trebui să fie gestionate de utilizator sau de o altă componentă într-o tranzacție cu mai multe componente.

Tranzacțiile pe Ethereum sunt de obicei un apel către un contract inteligent (deoarece DApps și token-urile de pe Ethereum sunt contracte inteligente). În schimb, tranzacțiile pe Scrypto implică mutarea activelor de la o componentă la alta.

De exemplu, dacă utilizatorul A dorește să trimită 10 jetoane personalizate utilizatorului B, tranzacția sa ar arăta că încearcă să retragă 10 jetoane din seiful care le conține. Tranzacția va arăta, de asemenea, că vor trimite acele jetoane către metoda de depunere a componentei contului utilizatorului B. Deoarece resursele (în acest caz, jetoanele) trebuie să fie localizate undeva, o găleată (container) va fi folosită pentru a transfera jetoanele de la Utilizatorul A la Utilizatorul B.

În exemplul de mai sus, utilizatorul transferă o găleată care conține resursele (jetoanele) către metoda de depunere a celui de-al doilea utilizator, în loc să apeleze la un contract inteligent cu simboluri. Interacțiunea cu DApps funcționează în mod similar, utilizatorii retrăgând jetoane din conturile lor și trimițându-le la componenta relevantă cu care doresc să interacționeze. În rezumat, Scrypto adoptă o abordare bazată pe active, utilizatorii stochează și transmit activele reale. Abordarea bazată pe active facilitează, de asemenea, dezvoltatorilor să codifice DApps, deoarece este mai ușor să interacționeze cu token-uri (resurse), token pool-uri (seifuri) și utilizatori (componente).

Pentru un alt exemplu, dacă un DApp de schimb (cum ar fi Uniswap) ar fi codificat cu Scrypto, dezvoltatorii ar trebui doar să codifice metoda de tranzacționare pentru schimb. Mai întâi, DEX-ul ar trebui să identifice containerul de intrare al unui utilizator de Token A, apoi să calculeze cursul de schimb. Apoi, jetoanele primite vor fi depuse, iar DEX-ul va trimite înapoi utilizatorului cantitatea corectă de Token B.

Ce limbaj de programare ar trebui să aleagă dezvoltatorii blockchain?

Dezvoltatorii pot folosi limbaje de programare tradiționale (C++, Python, JavaScript) pentru dezvoltarea blockchain, precum și soluții create special, cum ar fi Solidity, Vyper și Scrypto. Mai multe limbaje de programare pot fi benefice pentru spațiul blockchain, deoarece oferă dezvoltatorilor o serie de instrumente cu care să lucreze. 

De exemplu, dezvoltatorii care sunt familiarizați cu C++, JavaScript și Python pot găsi Solidity atractiv. Dezvoltatorii care sunt familiarizați cu Python ar putea gravita către Vyper, în timp ce dezvoltatorii familiarizați cu Rust pot alege să folosească limbajul Scrypto.

Recent: Tokenurile sociale vor fi motorul Web3, de la bazele de fani până la stimulare

Simmons este de acord, spunând lui Cointelegraph: „Cu mai multe limbi care vor veni pe Web3, probabil că vom vedea o perioadă de timp în care există destul de multe abordări concurente. Pe măsură ce aceste limbi se potrivesc cu piața de produse cu dezvoltatorii și, cel mai important, le permit acelor dezvoltatori să creeze DApp-uri puternice, utile și sigure, probabil că vom vedea industria gravitând spre cele care oferă cele mai bune rezultate.”

Soliditatea va fi în mod natural alegerea pentru dezvoltatorii care doresc să lucreze pe Ethereum și rețele blockchain similare. În același timp, Vyper și Scrypto ar putea atrage dezvoltatori care preferă simplitatea și securitatea suplimentară. Scrypto poate fi, de asemenea, de preferat pentru dezvoltatori datorită simplității sporite și a abordării orientate către active.

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