Vyper, Solidity и Scrypto: Как се сравняват езиците за интелигентни договори

Поглед към три различни езика за програмиране за блокчейн мрежи и как те се сравняват.

Мрежата Ethereum донесе интелигентни договори в блокчейн пространството, правейки концепции като децентрализирани финанси (DeFi) е възможно. 

Интелигентните договори могат автоматично да изпълняват процеси, след като са изпълнени определени условия. Заедно с тази нова технология беше разработен нов език за кодиране, наречен Solidity.

Тъй като блокчейн индустрията продължава да расте и се появяват нови блокчейн мрежи, в пространството се въвеждат допълнителни езици за програмиране, по-специално Vyper и Scrypto.

Програмни езици са набор от правила, които преобразуват низове от текст и числа в машинно четим код. С прости думи, езиците за програмиране позволяват на компютрите да разбират инструкции, въведени от човешки същества. Когато става въпрос за блокчейн индустрията, Solidity, Python и Javascript са едни от най-често използваните езици, но всички те работят по различен начин.

Какво е Solidity?

Solidity е обектно-ориентиран език за програмиране на високо ниво за изграждане на интелигентни договори в блокчейн Ethereum и други блокчейн мрежи като BNB Smart Chain и Avalanche. Езикът е разработен през 2014 г. и споделя прилики с езици за програмиране като JavaScript, C++ и Python.

Тъй като Solidity е език от високо ниво, компютърният код се въвежда по лесно разбираем и четим от човека начин вместо единици и нули. Например кодът на Solidity ще включва думи и фрази като „функция“ и „договор“, както и фигурни скоби и числа.

Това, че е обектно-ориентиран кодиращ език, означава, че Solidity се върти около използването на „обекти“, които са части от код, които могат да бъдат използвани повторно за създаване на подобни части от код, без да пренаписвате оригиналния код всеки път.

Solidity също използва компилатор за преобразуване на четим от човека код от високо ниво в машинно четим код, който се изпълнява на виртуалната машина Ethereum (EVM).

Какво е Vyper?

Vyper е ориентиран към договори, питоничен език за програмиране за интелигентни договори, предназначен да се използва с EVM. Езикът е проектиран да подобри Solidity чрез подобряване на сигурността и четливостта на кода. Vyper има силен фокус върху чуваемостта на своя код. Поради това, един от неговите принципи е, че хората трябва да могат да четат възможно най-много Vyper код. 

Vyper също има за цел да направи възможно най-трудно за всеки да пише подвеждащ код. Простотата за читателя (т.е. одитора) е по-важна от простотата за писателя (т.е. разработчика). По този начин ще бъде по-лесно да се идентифицира зловреден код в интелигентен договор или децентрализирано приложение (DApp).

Какво е Scrypto?

Scrypto е език за интелигентни договори, ориентиран към активи. Езикът е разработен от Radix, базиран е на Rust и запазва повечето функции на Rust, като добавя специфични функции и синтаксис за Radix Engine v2. Тъй като Scrypto е ориентиран към активи, той може да взаимодейства с активи като токени, които са вид ресурс в рамките на езика. 

В кодиращи езици като Solidity, токените ERC-20 съществуват като интелигентни договори на EVM. Активите в Scrypto са ресурси, които съществуват в контейнери и трезори. С прости думи, това е като да имате кофа (контейнерът) и да я напълните с монети (активът), които могат да се съхраняват в касичка (трезора).

Последно: Търсенето на таланти в криптовалутата зависи по-малко от пазара, тъй като индустрията узрява

Scrypto също се фокусира върху това да бъде удобен за разработчиците, като им позволява да пишат само необходимия код, докато взаимодействат с контейнерите и ресурсите, за да активират функционалност в рамките на DApp. Сигурността е друг принцип, при който разработчиците могат да дават конкретни инструкции на DApp, вместо да дават общи разрешения.

Как се сравняват езиците на интелигентния договор

Solidity разполага с широк набор от онлайн ресурси за обучение и много подкрепа от общността поради използването му в големи блокчейн мрежи като Ethereum. Solidity също има широк набор от функции, взети от обектно-ориентираното програмиране (OOP), което го прави модулен и по-лесен за отстраняване на неизправности, когато има проблем. Например, ако даден обект от определен клас се повреди, това може да бъде проследено до произхода на класа. 

Това работи, защото Solidity използва капсулиране, което означава, че всеки обект е самостоятелен, като всяка функция работи независимо. Модулността на езика за кодиране също позволява на разработчиците да работят върху множество обекти едновременно, което прави по-ефективно изграждането, коригирането и внедряването на интелигентни договори.

Vyper е по-опростен език за кодиране от Solidity, който набляга на прозрачност, простота на езиковата структура и чуваемост. Vyper също има по-малко функции от Solidity, което е направено умишлено от съображения за сигурност. Ограниченият набор от функции намалява броя на уязвимостите, които злонамерените участници могат да използват.

Например, Solidity използва модификатори, показващи, че проверките са извършени преди и след изпълнението на даден процес. Въпреки това, Vyper не използва модификатори, тъй като разработчиците смятат, че това улеснява писането на подвеждащ код. Той също така насърчава хората да разработват код, който отскача във файла, намалявайки чуваемостта. Тъй като модификаторите не присъстват във Vyper, е невъзможно да се добавят промени в състоянието към кода.

Друга функция, която е изключена от Vyper, е наследяването. В Solidity множество договори могат да наследяват функции от родителски договор. Ако има несъгласие, това също налага индивидите да разбират нормите за предимство. Vyper не използва наследяване на класове, защото елиминира потенциален източник на сложност в кода, което допринася за подобрена чуваемост. Като цяло, Vyper е по-минималистичен език за кодиране, който търгува с някои функционалности за повишена сигурност и по-добро изследване на своята кодова база, за да защити по-добре потребителите на интелигентни договори, базирани на Vyper.

Въпреки че Solidity може да е един от най-популярните и добре познати езици за програмиране в блокчейн пространството, някои езици имат по-лесни криви на учене за разработчиците. В допълнение, по-простите езици за програмиране улесняват привличането на нови разработчици в индустрията.

Адам Симънс, главен стратегически директор в RDX Works – разработчиците зад Radix – каза за Cointelegraph, „Наличието на правилните инструменти за работата прави голяма разлика – а в момента разработчиците на блокчейн нямат правилните инструменти. Не става въпрос само за опростяване на езиците, а за създаване на инструменти за разработчици, които са интуитивни и сигурни,” продължава:

„В своя пик DeFi нарасна до над $200 милиарда TVL само за две години — толкова ясно, че има много високи нива на търсене. И все пак, въпреки този 200-кратен ръст на капитала, броят на разработчиците се увеличи само с 2 пъти, до общо около 19,000 30 (от около XNUMX милиона разработчици по света).“

Въпреки високото ниво на растеж, наблюдавано в децентрализираното финансово пространство, броят на разработчиците не нарасна, за да отговори на търсенето. Симънс вярва, че разработчиците може да са намерили Solidity за твърде трудна за тях преход към разработка на блокчейн:

„Разработчиците се колебаят да преминат на пълен работен ден в Web3 поради стръмната крива на обучение на Solidity и високите нива на риск около сигурността. Въпреки изключително талантливите разработчици и милионите долари, похарчени за одити на сигурността, DeFi все още трупа пари от хакове и експлойти. Само това е достатъчно, за да възпре разработчиците да навлязат в пространството.“

„Наличието на правилните езици и инструменти ще позволи на разработчиците да развият цялата индустрия много по-бързо. Точно както двигателите на игрите дадоха на разработчиците инструментите за революция в производството на видеоигри през 90-те, правилните Web3 езици и инструменти ще позволят на разработчиците да ускорят растежа на Web3,” добави Симънс.

Scrypto също се фокусира върху сигурността, простотата и удобството за потребителя. Скрипто транзакциите са фокусирани върху активи. Те определят как потребителят иска да бъдат разпределени системните ресурси. Те могат също да посочват как върнатите ресурси трябва да се обработват от потребителя или друг компонент в многокомпонентна транзакция.

Транзакциите в Ethereum обикновено са извикване на интелигентен договор (тъй като DApps и токените в Ethereum са интелигентни договори). За разлика от тях транзакциите на Scrypto включват преместване на активи от един компонент в друг.

Например, ако потребител A иска да изпрати 10 персонализирани токена на потребител B, неговата транзакция ще покаже, че се опитват да изтеглят 10 токена от хранилището, което ги съдържа. Транзакцията също така ще покаже, че те ще изпратят тези токени към метода на депозит на компонента на акаунта на потребител B. Тъй като ресурсите (в този случай токените) трябва да бъдат разположени някъде, ще се използва кофа (контейнер) за прехвърляне на токените от потребител A към потребител B.

В горния пример потребителят прехвърля кофа, съдържаща ресурсите (токените) към метода за депозит на втория потребител, вместо да направи повикване към интелигентен договор за токени. Взаимодействието с DApps работи по подобен начин, като потребителите изтеглят токени от своите акаунти и ги предават на съответния компонент, с който желаят да взаимодействат. В обобщение, Scrypto използва подход, базиран на активи, като потребителите съхраняват и предават действителни активи. Подходът, базиран на активи, също така улеснява разработчиците да кодират DApps, тъй като е по-лесно да взаимодействат с токени (ресурси), токен пулове (трезори) и потребители (компоненти).

За друг пример, ако DApp за размяна (като Uniswap) беше кодиран със Scrypto, разработчиците ще трябва само да кодират метода на търговия за суапа. Първо, DEX ще трябва да идентифицира входящия контейнер на потребителя с Token A, след което да изчисли обменния курс. След това входящите токени ще бъдат депозирани и DEX ще изпрати правилното количество Token B обратно на потребителя.

Кой език за програмиране трябва да изберат блокчейн разработчиците?

Разработчиците могат да използват традиционни езици за програмиране (C++, Python, JavaScript) за разработка на блокчейн, както и специално създадени решения като Solidity, Vyper и Scrypto. Множество езици за програмиране могат да бъдат от полза за блокчейн пространството, тъй като предоставят на разработчиците набор от инструменти за работа. 

Например, разработчиците, които са запознати с C++, JavaScript и Python, могат да намерят Solidity привлекателна. Разработчиците, които са запознати с Python, може да гравитират към Vyper, докато разработчиците, запознати с Rust, могат да изберат да използват езика Scrypto.

Последно: Социалните токени ще бъдат двигателят на Web3, от фен бази до стимули

Симънс се съгласява, като казва на Cointelegraph: „С навлизането на повече езици в Web3 вероятно ще видим период от време, в който ще има доста конкурентни подходи. Тъй като тези езици намират за продуктовия пазар подходящи за разработчиците и най-важното позволяват на тези разработчици да създават мощни, полезни и сигурни DApps, вероятно ще видим индустрията да гравитира към тези, които дават най-добри резултати.

Solidity естествено ще бъде изборът за разработчици, които искат да работят върху Ethereum и подобни блокчейн мрежи. В същото време Vyper и Scrypto могат да привлекат разработчици, които предпочитат простотата и допълнителната сигурност. Scrypto може също да бъде за предпочитане за разработчиците поради повишената си простота и подход, ориентиран към активите.

Източник: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare