Vyper, Solidity at Scrypto: Paano inihahambing ang mga smart contract na wika

Isang pagtingin sa tatlong magkakaibang programming language para sa mga network ng blockchain at kung paano sila naghahambing.

Ang Ethereum network ay nagdala ng mga matalinong kontrata sa blockchain space, na gumagawa ng mga konsepto tulad ng desentralisadong pananalapi (DeFi) maaari. 

Ang mga matalinong kontrata ay maaaring awtomatikong magsagawa ng mga proseso kapag natugunan na ang ilang partikular na kundisyon. Kasama ng bagong teknolohiyang ito, binuo ang isang bagong coding language na tinatawag na Solidity.

Habang ang industriya ng blockchain ay patuloy na lumalaki at ang mga bagong blockchain network ay lumilitaw, ang mga karagdagang programming language ay dinadala sa espasyo, lalo na ang Vyper at Scrypto.

Mga programming language ay isang hanay ng mga panuntunan na nagko-convert ng mga string ng text at mga numero sa code na nababasa ng makina. Sa simpleng mga termino, ang mga programming language ay nagbibigay-daan sa mga computer na maunawaan ang mga tagubilin na ipinapasok ng mga tao. Pagdating sa industriya ng blockchain, Solidity, Python at Javascript ang ilan sa mga karaniwang ginagamit na wika, ngunit lahat sila ay gumagana nang iba.

Ano ang Solidity?

Ang Solidity ay isang object-oriented at high-level na programming language para sa pagbuo ng mga matalinong kontrata sa Ethereum blockchain at iba pang blockchain network tulad ng BNB Smart Chain at Avalanche. Ang wika ay binuo noong 2014 at nagbabahagi ng mga pagkakatulad sa mga programming language tulad ng JavaScript, C++ at Python.

Dahil ang Solidity ay isang mataas na antas ng wika, ang computer code ay nai-type sa isang madaling maunawaan at nababasa ng tao sa halip na mga one at zero. Halimbawa, ang Solidity code ay magsasama ng mga salita at parirala tulad ng "function" at "kontrata," pati na rin ang mga kulot na bracket at numero.

Ang pagiging isang object-oriented coding language ay nangangahulugan na ang Solidity ay umiikot sa paggamit ng "mga bagay," na mga piraso ng code na maaaring magamit muli upang lumikha ng mga katulad na piraso ng code nang hindi muling isinusulat ang orihinal na code sa bawat pagkakataon.

Gumagamit din ang Solidity ng compiler para i-convert ang nababasa ng tao, mataas na antas ng code sa machine-readable na code na isinasagawa sa Ethereum Virtual Machine (EVM).

Ano ang Vyper?

Ang Vyper ay isang contract-orientated, pythonic programming language para sa mga matalinong kontrata na idinisenyo upang magamit sa EVM. Ang wika ay idinisenyo upang mapabuti ang Solidity sa pamamagitan ng pagpapabuti ng seguridad at pagiging madaling mabasa ng code. Ang Vyper ay may matinding pagtuon sa audibility ng code nito. Dahil dito, ang isa sa mga prinsipyo nito ay dapat na mabasa ng mga tao ang mas maraming Vyper code hangga't maaari. 

Nilalayon din ng Vyper na gawing mahirap hangga't maaari para sa sinuman na magsulat ng mapanlinlang na code. Ang pagiging simple para sa mambabasa (ibig sabihin, isang auditor) ay mas mahalaga kaysa sa pagiging simple para sa manunulat (ibig sabihin, developer). Sa ganitong paraan, magiging mas madaling matukoy ang malisyosong code sa loob ng isang smart contract o decentralized application (DApp).

Ano ang Scrypto?

Ang Scrypto ay isang asset-orientated na smart contract language. Ang wika ay binuo ng Radix, ay batay sa Rust, at pinapanatili ang karamihan sa mga tampok ng Rust habang nagdaragdag ng mga partikular na function at syntax para sa Radix Engine v2. Dahil ang Scrypto ay asset-orientated, maaari itong makipag-ugnayan sa mga asset gaya ng mga token, na isang uri ng mapagkukunan sa loob ng wika. 

Sa mga coding na wika tulad ng Solidity, umiiral ang mga token ng ERC-20 bilang mga matalinong kontrata sa EVM. Ang mga asset sa loob ng Scrypto ay mga mapagkukunan na umiiral sa loob ng mga container at vault. Sa madaling salita, ito ay tulad ng pagkakaroon ng balde (ang lalagyan) at pagpuno dito ng mga barya (ang asset) na maaaring itago sa loob ng alkansya (ang vault).

Kamakailan: Ang pangangailangan para sa talento sa crypto ay hindi gaanong nakadepende sa merkado habang lumalaki ang industriya

Nakatuon din ang Scrypto sa pagiging friendly ng developer sa pamamagitan ng pagpayag sa kanila na isulat lamang ang kinakailangang code habang nakikipag-ugnayan sa mga lalagyan at mapagkukunan upang paganahin ang functionality sa loob ng isang DApp. Ang seguridad ay isa pang prinsipyo kung saan ang mga developer ay makakapagbigay ng mga partikular na tagubilin sa isang DApp sa halip na magbigay ng malawak na pahintulot.

Paano inihahambing ang mga smart contract na wika

Ang Solidity ay may malawak na hanay ng mga mapagkukunan sa online na pag-aaral at maraming suporta sa komunidad dahil sa paggamit nito sa mga pangunahing blockchain network tulad ng Ethereum. Ang Solidity ay mayroon ding malawak na hanay ng mga feature na kinuha mula sa object-orientated programming (OOP), na ginagawa itong modular at mas madaling i-troubleshoot kapag may problema. Halimbawa, kung ang isang bagay mula sa isang partikular na klase ay hindi gumagana, maaari itong masubaybayan pabalik sa pinagmulan ng klase. 

Gumagana ito dahil gumagamit ang Solidity ng encapsulation, ibig sabihin, ang bawat object ay self-contained, na ang bawat function ay gumagana nang nakapag-iisa. Ang modularity ng coding language ay nagpapahintulot din sa mga developer na magtrabaho sa maraming bagay nang sabay-sabay, na ginagawang mas mahusay ang pagbuo, pag-aayos at pag-deploy ng mga matalinong kontrata.

Ang Vyper ay isang mas simpleng coding na wika kaysa Solidity, na nagbibigay-diin sa transparency, pagiging simple ng istraktura ng wika at audibility. Ang Vyper ay mayroon ding mas kaunting feature kaysa sa Solidity, na sadyang ginawa para sa mga kadahilanang pangseguridad. Ang limitadong hanay ng tampok ay binabawasan ang bilang ng mga kahinaan na maaaring pagsamantalahan ng mga malisyosong aktor.

Halimbawa, ang Solidity ay gumagamit ng mga modifier na nagsasaad na ang mga pagsusuri ay isinagawa bago at pagkatapos isagawa ang isang proseso. Gayunpaman, hindi gumagamit ang Vyper ng mga modifier dahil naniniwala ang mga developer na ginagawang mas madali ang pagsulat ng mapanlinlang na code. Hinihikayat din nito ang mga indibidwal na bumuo ng code na nagba-bounce sa buong file, na binabawasan ang audibility. Dahil ang mga modifier ay wala sa Vyper, imposibleng magdagdag ng anumang mga pagbabago sa estado sa code.

Ang isa pang tampok na hindi kasama sa Vyper ay pamana. Sa Solidity, maraming kontrata ang maaaring magmana ng mga feature mula sa isang kontrata ng magulang. Kung mayroong hindi pagkakasundo, kinakailangan din na maunawaan ng mga indibidwal ang mga pamantayan ng pangunguna. Hindi gumagamit ang Vyper ng class inheritance dahil inaalis nito ang isang potensyal na pinagmumulan ng pagiging kumplikado sa code, na nag-aambag sa pinahusay na audibility. Sa pangkalahatan, ang Vyper ay isang mas minimalist na coding language na nakikipagpalitan ng ilang functionality para sa mas mataas na seguridad at mas mahusay na pagsusuri sa codebase nito upang mas maprotektahan ang mga user ng mga smart contract na nakabatay sa Vyper.

Bagama't ang Solidity ay maaaring isa sa pinakasikat at kilalang programming language sa blockchain space, ang ilang mga wika ay may mas madaling pag-aaral ng mga curve para sa mga developer. Bilang karagdagan, ang mga mas simpleng programming language ay nagpapadali sa pag-akit ng mga bagong developer sa industriya.

Si Adam Simmons, punong opisyal ng diskarte sa RDX Works — ang mga developer sa likod ng Radix — ay nagsabi sa Cointelegraph, “Ang pagkakaroon ng mga tamang tool para sa trabaho ay may malaking pagkakaiba — at sa ngayon, ang mga developer ng blockchain ay walang mga tamang tool. Ito ay hindi lamang tungkol sa paggawa ng mga wika na mas simple, ngunit paggawa ng mga tool ng developer na madaling maunawaan at secure,” nagpapatuloy:

"Sa tuktok nito, ang DeFi ay lumago sa higit sa $200 bilyon na TVL sa loob lamang ng dalawang taon - napakalinaw, mayroong napakataas na antas ng demand. Gayunpaman, sa kabila ng 200x na paglagong ito sa kapital, ang bilang ng mga developer ay tumaas lamang ng 2x, sa kabuuang humigit-kumulang 19,000 (mula sa humigit-kumulang 30 milyong developer sa buong mundo).”

Sa kabila ng mataas na antas ng paglago na nakikita sa desentralisadong espasyo sa pananalapi, ang bilang ng mga developer ay hindi lumaki upang tumugma sa pangangailangan. Naniniwala si Simmons na maaaring nakita ng mga developer na ang Solidity ay napakahirap para sa kanila na lumipat sa pagbuo ng blockchain:

"Ang mga developer ay nag-aalangan na pumunta ng full-time sa Web3 dahil sa matarik na curve ng pagkatuto ng Solidity at ang mataas na antas ng panganib sa paligid ng seguridad. Sa kabila ng napakahusay na mga developer at milyun-milyong dolyar na ginugol sa mga pag-audit sa seguridad, ang DeFi ay nagdurugo pa rin ng pera mula sa mga hack at pagsasamantala. Ito lamang ay sapat na upang hadlangan ang mga developer na pumasok sa espasyo."

“Ang pagkakaroon ng mga tamang wika at tool ay magbibigay-daan sa mga developer na palaguin ang buong industriya nang mas mabilis. Kung paanong ang mga game engine ay nagbigay sa mga developer ng mga tool para baguhin ang produksyon ng video game noong 90s, ang tamang mga wika at tool sa Web3 ay magbibigay-daan sa mga developer na mapabilis ang paglago ng Web3,” dagdag ni Simmons.

Nakatuon din ang Scrypto sa seguridad, pagiging simple at pagiging kabaitan ng gumagamit. Ang mga transaksyon sa Scrypto ay nakatuon sa mga asset. Tinutukoy nila kung paano nais ng user na maipamahagi ang mga mapagkukunan ng system. Maaari rin nilang ipahiwatig kung paano dapat pangasiwaan ng user o ng isa pang bahagi ang ibinalik na mapagkukunan sa isang transaksyong maraming bahagi.

Ang mga transaksyon sa Ethereum ay karaniwang isang tawag sa isang matalinong kontrata (dahil ang mga DApp at mga token sa Ethereum ay mga matalinong kontrata). Sa kabaligtaran, ang mga transaksyon sa Scrypto ay kinabibilangan ng paglipat ng mga asset mula sa isang bahagi patungo sa isa pa.

Halimbawa, kung gustong magpadala ng User A ng 10 custom na token sa User B, ipapakita ng kanilang transaksyon na sinusubukan nilang mag-withdraw ng 10 token mula sa vault na naglalaman ng mga ito. Ipapakita rin ng transaksyon na ipapadala nila ang mga token na iyon sa paraan ng pagdedeposito ng bahagi ng account ng User B. Dahil ang mga mapagkukunan (sa kasong ito, ang mga token) ay kailangang matatagpuan sa isang lugar, isang bucket (lalagyan) ang gagamitin upang ilipat ang mga token mula sa User A patungo sa User B.

Sa halimbawa sa itaas, inilipat ng user ang isang bucket na naglalaman ng mga mapagkukunan (ang mga token) sa paraan ng pagdedeposito ng pangalawang user sa halip na tumawag sa isang token smart contract. Ang pakikipag-ugnayan sa DApps ay gumagana nang katulad, sa mga user na nag-withdraw ng mga token mula sa kanilang mga account at ipinapasa ang mga ito sa may-katuturang bahagi na nais nilang makipag-ugnayan. Sa buod, gumagamit ang Scrypto ng diskarteng nakabatay sa asset, kung saan ang mga user ay nag-iimbak at nagpapasa ng mga aktwal na asset. Pinapadali din ng diskarteng nakabatay sa asset para sa mga developer na mag-code ng DApps dahil mas madaling makipag-ugnayan sa mga token (mga mapagkukunan), mga token pool (mga vault) at mga user (mga bahagi).

Para sa isa pang halimbawa, kung ang pagpapalit ng DApp (tulad ng Uniswap) ay na-code gamit ang Scrypto, kakailanganin lamang ng mga developer na i-code ang paraan ng pangangalakal para sa swap. Una, kakailanganin ng DEX na tukuyin ang papasok na lalagyan ng Token A ng user, pagkatapos ay kalkulahin ang halaga ng palitan. Susunod, ang mga papasok na token ay idedeposito, at ipapadala ng DEX ang tamang halaga ng Token B pabalik sa user.

Aling programming language ang dapat piliin ng mga developer ng blockchain?

Maaaring gumamit ang mga developer ng tradisyonal na mga programming language (C++, Python, JavaScript) para sa pagbuo ng blockchain pati na rin ang mga partikular na binuong solusyon tulad ng Solidity, Vyper at Scrypto. Maramihang mga programming language ay maaaring maging kapaki-pakinabang para sa blockchain space dahil nagbibigay ito sa mga developer ng isang hanay ng mga tool upang magamit. 

Halimbawa, maaaring makita ng mga developer na pamilyar sa C++, JavaScript at Python ang Solidity. Ang mga developer na pamilyar sa Python ay maaaring mahilig sa Vyper, habang ang mga developer na pamilyar sa Rust ay maaaring pumili na gamitin ang wikang Scrypto.

Kamakailan: Ang mga social token ang magiging makina ng Web3, mula sa mga fanbase hanggang sa incentivization

Sumasang-ayon si Simmons, na nagsasabi sa Cointelegraph, "Sa higit pang mga wika na dumarating sa Web3, malamang na makakakita tayo ng isang yugto ng panahon kung saan may ilang mga nakikipagkumpitensyang diskarte. Habang nakikita ng mga wikang ito ang product-market na akma sa mga developer at higit sa lahat ay binibigyang-daan ang mga developer na iyon na makabuo ng makapangyarihan, kapaki-pakinabang at secure na mga DApp, malamang na makikita natin na ang industriya ay nakikitungo sa mga naghahatid ng pinakamahusay na mga resulta."

Ang solidity ay natural na magiging pagpipilian para sa mga developer na gustong magtrabaho sa Ethereum at mga katulad na blockchain network. Kasabay nito, maaaring maakit ng Vyper at Scrypto ang mga developer na mas gusto ang pagiging simple at karagdagang seguridad. Ang Scrypto ay maaari ding maging mas kanais-nais para sa mga developer dahil sa tumaas nitong pagiging simple at diskarte na nakatuon sa asset.

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