Vyper, Solidity және Scrypto: смарт келісімшарт тілдерін қалай салыстырады

Блокчейн желілеріне арналған үш түрлі бағдарламалау тілін және олардың қалай салыстырылатынын қараңыз.

Ethereum желісі смарт келісім-шарттарды блокчейн кеңістігіне әкеліп, сияқты тұжырымдамаларды жасады орталықтандырылмаған қаржы (DeFi) Мүмкін. 

Ақылды келісім-шарттар белгілі бір шарттар орындалғаннан кейін процестерді автоматты түрде орындай алады. Осы жаңа технологиямен қатар Solidity деп аталатын жаңа кодтау тілі жасалды.

Блокчейн индустриясы өсуін жалғастыруда және жаңа блокчейн желілері пайда болған сайын, ғарышқа қосымша бағдарламалау тілдері, атап айтқанда Vyper және Scrypto енгізілуде.

Бағдарламалау тілдері мәтін жолдары мен сандарды машина оқылатын кодқа түрлендіретін ережелер жиынтығы. Қарапайым тілмен айтқанда, бағдарламалау тілдері компьютерлерге адам енгізетін нұсқауларды түсінуге мүмкіндік береді. Блокчейн индустриясына келетін болсақ, Solidity, Python және Javascript ең жиі қолданылатын тілдердің бірі болып табылады, бірақ олардың барлығы басқаша жұмыс істейді.

Қаттылық дегеніміз не?

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 негізінде жасалған және Radix Engine v2 үшін арнайы функциялар мен синтаксисті қосқан кезде Rust мүмкіндіктерінің көпшілігін сақтайды. 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 транзакциялары әдетте смарт келісімшартқа шақыру болып табылады (себебі Ethereum-дағы DApps және таңбалауыштар ақылды келісімшарттар болып табылады). Керісінше, Scrypto транзакциялары активтерді бір компоненттен екіншісіне ауыстыруды қамтиды.

Мысалы, егер А пайдаланушысы B пайдаланушысына 10 теңшелетін таңбалауыштарды жібергісі келсе, олардың транзакциясы оларды қамтитын қоймадан 10 таңбалауышты алып тастауға әрекеттенетінін көрсетеді. Транзакция сонымен қатар олар осы белгілерді B пайдаланушысының тіркелгі құрамдас бөлігінің депозит әдісіне жіберетінін көрсетеді. Ресурстар (бұл жағдайда таңбалауыштар) бір жерде орналасуы керек болғандықтан, таңбалауыштарды А пайдаланушысынан B пайдаланушысына тасымалдау үшін шелек (контейнер) пайдаланылады.

Жоғарыда келтірілген мысалда пайдаланушы таңбалауыш смарт келісім-шартына қоңырау шалудың орнына ресурстарды (токендерді) қамтитын шелекті екінші пайдаланушының депозиттік әдісіне тасымалдайды. DApps-пен өзара әрекеттесу пайдаланушылар өздерінің тіркелгілерінен таңбалауыштарды алып, оларды өзара әрекеттесуді қалайтын тиісті құрамдасқа беруімен бірдей жұмыс істейді. Қорытындылай келе, Scrypto активтерге негізделген тәсілді қолданады, пайдаланушылар нақты активтерді сақтайды және береді. Активке негізделген тәсіл сонымен қатар әзірлеушілерге DApps кодтауын жеңілдетеді, өйткені таңбалауыштармен (ресурстармен), таңбалауыш пулдарымен (қоймалар) және пайдаланушылармен (компоненттермен) өзара әрекеттесу оңайырақ.

Басқа мысал үшін, егер своптық DApp (Uniswap сияқты) Scrypto көмегімен кодталған болса, әзірлеушілер тек своп үшін сауда әдісін кодтауы керек. Біріншіден, DEX пайдаланушының A токенінің кіріс контейнерін анықтауы керек, содан кейін айырбас бағамын есептейді. Әрі қарай, кіріс таңбалауыштары депозитке салынады және DEX пайдаланушыға B таңбасының дұрыс мөлшерін қайтарады.

Блокчейн әзірлеушілері қандай бағдарламалау тілін таңдауы керек?

Әзірлеушілер блокчейнді дамыту үшін дәстүрлі бағдарламалау тілдерін (C++, Python, JavaScript), сондай-ақ Solidity, Vyper және Scrypto сияқты арнайы құрастырылған шешімдерді пайдалана алады. Бірнеше бағдарламалау тілдері блокчейн кеңістігі үшін пайдалы болуы мүмкін, өйткені ол әзірлеушілерге жұмыс істеу үшін көптеген құралдар береді. 

Мысалы, C++, JavaScript және Python тілдерімен таныс әзірлеушілер Solidity тартымды болуы мүмкін. Python-мен таныс әзірлеушілер Vyper-ге ұмтылуы мүмкін, ал Rust-пен таныс әзірлеушілер Scrypto тілін пайдалануды таңдауы мүмкін.

Соңғы: Әлеуметтік токендер жанкүйерлер базасынан бастап ынталандыруға дейін Web3 қозғалтқышы болады

Симмонс келіседі, Cointelegraph-қа: «Web3-ке көбірек тілдердің келуімен біз бәсекелес тәсілдер көп болатын уақыт кезеңін көреміз. Бұл тілдер өнім нарығында әзірлеушілерге сәйкес келетіндіктен және ең бастысы сол әзірлеушілерге қуатты, пайдалы және қауіпсіз DApp қолданбаларын құруға мүмкіндік беретіндіктен, біз саланың ең жақсы нәтиже беретіндерге қарай тартылатынын көретін боламыз.

Ethereum және ұқсас блокчейн желілерінде жұмыс істегісі келетін әзірлеушілер үшін беріктік, әрине, таңдау болады. Сонымен қатар, Vyper және Scrypto қарапайымдылық пен қосымша қауіпсіздікті қалайтын әзірлеушілерді тарта алады. Scrypto сонымен қатар қарапайымдылығы мен активтерге бағытталған көзқарасына байланысты әзірлеушілер үшін қолайлы болуы мүмкін.

Дереккөз: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare