Vyper, Solidity a Scrypto: Jak se porovnávají jazyky inteligentních smluv

Pohled na tři různé programovací jazyky pro blockchainové sítě a jejich srovnání.

Síť Ethereum přinesla chytré smlouvy do blockchainového prostoru, díky čemuž se koncepty líbí decentralizované financování (DeFi) je to možné. 

Chytré smlouvy mohou automaticky provádět procesy, jakmile jsou splněny určité podmínky. Spolu s touto novou technologií byl vyvinut nový kódovací jazyk nazvaný Solidity.

Jak odvětví blockchainu stále roste a objevují se nové blockchainové sítě, přicházejí do vesmíru další programovací jazyky, zejména Vyper a Scrypto.

Programovací jazyky jsou sada pravidel, která převádějí řetězce textu a čísel na strojově čitelný kód. Jednoduše řečeno, programovací jazyky umožňují počítačům porozumět instrukcím, které zadávají lidské bytosti. Pokud jde o blockchainový průmysl, Solidity, Python a Javascript jsou některé z nejčastěji používaných jazyků, ale všechny fungují jinak.

Co je to Solidity?

Solidity je objektově orientovaný a vysokoúrovňový programovací jazyk pro vytváření chytrých smluv na blockchainu Ethereum a dalších blockchainových sítích, jako jsou BNB Smart Chain a Avalanche. Jazyk byl vyvinut v roce 2014 a sdílí podobnosti s programovacími jazyky jako JavaScript, C++ a Python.

Vzhledem k tomu, že Solidity je jazyk na vysoké úrovni, počítačový kód se píše snadno srozumitelným a člověkem čitelným způsobem namísto jedniček a nul. Kód Solidity bude například obsahovat slova a fráze jako „funkce“ a „smlouva“ a také složené závorky a čísla.

Být objektově orientovaným kódovacím jazykem znamená, že Solidity se točí kolem používání „objektů“, což jsou části kódu, které lze znovu použít k vytvoření podobných částí kódu, aniž by bylo nutné pokaždé přepisovat původní kód.

Solidity také používá kompilátor k převodu lidsky čitelného kódu na vysoké úrovni na strojově čitelný kód, který se spouští na virtuálním stroji Ethereum (EVM).

Co je Vyper?

Vyper je kontraktově orientovaný, pythonic programovací jazyk pro chytré kontrakty navržený pro použití s ​​EVM. Jazyk byl navržen tak, aby zlepšil Solidity zlepšením zabezpečení a čitelnosti kódu. Vyper se silně zaměřuje na slyšitelnost svého kódu. Díky tomu je jednou z jeho zásad, že lidé by měli být schopni přečíst co nejvíce kódu Vyper. 

Vyper si také klade za cíl co nejvíce zkomplikovat psaní zavádějícího kódu pro každého. Jednoduchost pro čtenáře (tj. auditora) je důležitější než jednoduchost pro autora (tj. vývojáře). Tímto způsobem bude snazší identifikovat škodlivý kód v rámci chytré smlouvy nebo decentralizované aplikace (DApp).

Co je Scrypto?

Scrypto je jazyk inteligentních smluv zaměřený na aktiva. Jazyk byl vyvinut Radixem, je založen na Rustu a zachovává většinu vlastností Rustu a přidává specifické funkce a syntaxi pro Radix Engine v2. Vzhledem k tomu, že Scrypto je zaměřen na aktiva, může interagovat s aktivy, jako jsou tokeny, které jsou typem zdroje v rámci jazyka. 

V kódovacích jazycích, jako je Solidity, existují tokeny ERC-20 jako inteligentní smlouvy na EVM. Aktiva v rámci Scrypto jsou zdroje, které existují v kontejnerech a trezorech. Jednoduše řečeno, je to jako mít kbelík (nádobu) a naplnit ho mincemi (aktivum), které lze uložit do prasátka (sejfu).

Poslední: Poptávka po talentech v kryptoměnách je méně závislá na trhu, jak průmysl dozrává

Scrypto se také zaměřuje na to, aby bylo přátelské k vývojářům tím, že jim umožňuje psát pouze nezbytný kód při interakci s kontejnery a zdroji, aby byla umožněna funkčnost v rámci DApp. Zabezpečení je dalším principem, kdy vývojáři mohou dávat konkrétní pokyny DApp namísto udělování paušálních oprávnění.

Jak se porovnávají jazyky inteligentních smluv

Solidity má širokou škálu online vzdělávacích zdrojů a velkou podporu komunity díky jejímu použití ve velkých blockchainových sítích, jako je Ethereum. Solidity má také širokou škálu funkcí převzatých z objektově orientovaného programování (OOP), díky čemuž je modulární a snáze se řeší, když se vyskytne problém. Pokud by například objekt z určité třídy selhal, bylo by možné jej vysledovat zpět k původu třídy. 

To funguje, protože Solidity používá zapouzdření, což znamená, že každý objekt je samostatný a každá funkce pracuje nezávisle. Modularita kódovacího jazyka také umožňuje vývojářům pracovat na více objektech současně, což zefektivňuje vytváření, opravy a nasazení chytrých kontraktů.

Vyper je jednodušší kódovací jazyk než Solidity, klade důraz na transparentnost, jednoduchost jazykové struktury a slyšitelnost. Vyper má také méně funkcí než Solidity, což bylo provedeno záměrně z bezpečnostních důvodů. Omezená sada funkcí snižuje počet zranitelností, které mohou útočníci zneužít.

Solidity například používá modifikátory, které označují, že kontroly byly provedeny před a po provedení procesu. Vyper však nepoužívá modifikátory, protože vývojáři věří, že to usnadňuje psaní zavádějícího kódu. Vyzývá také jednotlivce, aby vyvíjeli kód, který se odráží v celém souboru a snižuje slyšitelnost. Protože ve Vyperu nejsou přítomny modifikátory, není možné do kódu přidávat žádné změny stavu.

Další funkcí, která je z Vyperu vyloučena, je dědičnost. V Solidity může více smluv zdědit funkce z nadřazené smlouvy. Pokud dojde k neshodě, vyžaduje to také, aby jednotlivci rozuměli normám přednosti. Vyper nepoužívá dědičnost tříd, protože eliminuje potenciální zdroj složitosti v kódu, což přispívá ke zlepšení slyšitelnosti. Vyper je obecně minimalistický kódovací jazyk, který vyměňuje některé funkce za zvýšenou bezpečnost a lepší prozkoumání své kódové základny, aby lépe chránil uživatele chytrých smluv založených na Vyperu.

Zatímco Solidity může být jedním z nejpopulárnějších a nejznámějších programovacích jazyků v blockchainovém prostoru, některé jazyky mají pro vývojáře snazší křivky učení. Jednodušší programovací jazyky navíc usnadňují přilákání nových vývojářů do odvětví.

Adam Simmons, hlavní strategický ředitel společnosti RDX Works – vývojáři za Radixem – řekl Cointelegraphu: „Mít správné nástroje pro tuto práci znamená velký rozdíl – a vývojáři blockchainu momentálně nemají ty správné nástroje. Nejde jen o to zjednodušit jazyky, ale vytvořit vývojářské nástroje, které jsou intuitivní a bezpečné,“ pokračuje:

„Na svém vrcholu DeFi vyrostla na více než 200 miliard $ TVL během pouhých dvou let – takže je jasné, že poptávka je velmi vysoká. Navzdory tomuto 200násobnému nárůstu kapitálu se počet vývojářů zvýšil pouze 2x na celkových přibližně 19,000 30 (z přibližně XNUMX milionů vývojářů po celém světě).

Navzdory vysoké úrovni růstu v decentralizovaném finančním prostoru nerostl počet developerů tak, aby odpovídal poptávce. Simmons se domnívá, že vývojářům se mohlo zdát, že Solidity je pro ně příliš obtížné přejít na vývoj blockchainu:

„Vývojáři váhají, zda jít do Web3 na plný úvazek, kvůli strmé křivce učení Solidity a vysoké úrovni rizik souvisejících se zabezpečením. Navzdory vysoce talentovaným vývojářům a milionům dolarů vynaloženým na bezpečnostní audity, DeFi stále tlačí peníze z hacků a exploitů. To samo o sobě stačí k tomu, aby odradilo vývojáře od vstupu do prostoru.“

„Správné jazyky a nástroje umožní vývojářům růst celého odvětví mnohem rychleji. Stejně jako herní enginy poskytly vývojářům nástroje k revoluci ve výrobě videoher v 90. letech, správné jazyky a nástroje Web3 umožní vývojářům urychlit růst Web3,“ dodal Simmons.

Scrypto se také zaměřuje na bezpečnost, jednoduchost a uživatelskou přívětivost. Scrypto transakce jsou zaměřeny na aktiva. Definují, jak si uživatel přeje, aby byly systémové prostředky distribuovány. Mohou také naznačovat, jak by měl uživatel nebo jiná součást ve vícesložkové transakci zacházet s vrácenými zdroji.

Transakce na Ethereu jsou obvykle výzvou k chytré smlouvě (protože DApps a tokeny na Ethereu jsou chytré smlouvy). Naproti tomu transakce na Scrypto zahrnují přesun aktiv z jedné složky do druhé.

Pokud chce například uživatel A odeslat 10 vlastních tokenů uživateli B, jeho transakce ukáže, že se pokouší stáhnout 10 tokenů z trezoru, který je obsahuje. Transakce také ukáže, že odešlou tyto tokeny způsobem vkladu součásti účtu uživatele B. Vzhledem k tomu, že zdroje (v tomto případě tokeny) musí být někde umístěny, bude k přenosu tokenů od uživatele A k uživateli B použit kbelík (kontejner).

Ve výše uvedeném příkladu uživatel převede kbelík obsahující prostředky (tokeny) do metody vkladu druhého uživatele namísto volání token smart contractu. Interakce s DApps funguje podobně, kdy uživatelé stahují tokeny ze svých účtů a předávají je příslušné komponentě, se kterou chtějí interagovat. Stručně řečeno, Scrypto používá přístup založený na aktivech, kdy uživatelé ukládají a předávají skutečná aktiva. Přístup založený na aktivech také usnadňuje vývojářům kódování DApps, protože je snazší komunikovat s tokeny (zdroji), fondy tokenů (sejfy) a uživateli (komponenty).

Jiný příklad, pokud by swapovací DApp (jako Uniswap) byl kódován pomocí Scrypto, vývojáři by potřebovali pouze kódovat obchodní metodu pro swap. Nejprve by DEX musel identifikovat příchozí kontejner uživatele s tokenem A a poté vypočítat směnný kurz. Dále budou příchozí tokeny uloženy a DEX odešle správné množství tokenu B zpět uživateli.

Jaký programovací jazyk by si vývojáři blockchainu měli vybrat?

Vývojáři mohou používat tradiční programovací jazyky (C++, Python, JavaScript) pro vývoj blockchainu i specificky vytvořená řešení jako Solidity, Vyper a Scrypto. Více programovacích jazyků může být pro blockchain přínosné, protože poskytuje vývojářům řadu nástrojů, se kterými mohou pracovat. 

Například vývojáři, kteří znají C++, JavaScript a Python, mohou považovat Solidity za atraktivní. Vývojáři, kteří znají Python, mohou tíhnout k Vyperu, zatímco vývojáři obeznámení s Rustem se mohou rozhodnout používat jazyk Scrypto.

Poslední: Sociální tokeny budou motorem Web3, od fanouškovské základny po pobídky

Simmons souhlasí a říká Cointelegraphu: „S příchodem více jazyků na Web3 pravděpodobně zažijeme období, kdy bude existovat poměrně málo konkurenčních přístupů. Vzhledem k tomu, že tyto jazyky shledají produktový trh přizpůsobený vývojářům, a co je nejdůležitější, umožňují těmto vývojářům vytvářet výkonné, užitečné a bezpečné DApps, pravděpodobně uvidíme, že průmysl bude tíhnout k těm, které poskytují nejlepší výsledky.“

Solidity bude přirozeně volbou pro vývojáře, kteří chtějí pracovat na Ethereu a podobných blockchainových sítích. Vyper a Scrypto by přitom mohly přilákat vývojáře, kteří preferují jednoduchost a další zabezpečení. Scrypto může být také výhodnější pro vývojáře kvůli jeho větší jednoduchosti a přístupu zaměřenému na aktiva.

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