Vyper, Solidity dan Scrypto: Bagaimana perbandingan bahasa kontrak pintar

Lihat tiga bahasa pengaturcaraan yang berbeza untuk rangkaian blockchain dan bagaimana ia membandingkan.

Rangkaian Ethereum membawa kontrak pintar ke dalam ruang blockchain, membuat konsep seperti kewangan terdesentralisasi (DeFi) mungkin. 

Kontrak pintar boleh melaksanakan proses secara automatik apabila syarat tertentu telah dipenuhi. Bersama-sama dengan teknologi baharu ini, bahasa pengekodan baharu telah dibangunkan dipanggil Solidity.

Memandangkan industri blockchain terus berkembang dan rangkaian blockchain baharu muncul, bahasa pengaturcaraan tambahan sedang dibawa ke angkasa, terutamanya Vyper dan Scrypto.

Bahasa pengaturcaraan ialah satu set peraturan yang menukar rentetan teks dan nombor kepada kod yang boleh dibaca mesin. Secara ringkasnya, bahasa pengaturcaraan membolehkan komputer memahami arahan yang dimasukkan oleh manusia. Apabila ia datang kepada industri blockchain, Solidity, Python dan Javascript adalah beberapa bahasa yang paling biasa digunakan, namun semuanya berfungsi secara berbeza.

Apa itu Solidity?

Solidity ialah bahasa pengaturcaraan berorientasikan objek dan peringkat tinggi untuk membina kontrak pintar pada blockchain Ethereum dan rangkaian blockchain lain seperti BNB Smart Chain dan Avalanche. Bahasa ini dibangunkan pada 2014 dan berkongsi persamaan dengan bahasa pengaturcaraan seperti JavaScript, C++ dan Python.

Memandangkan Solidity ialah bahasa peringkat tinggi, kod komputer ditaip dengan cara yang mudah difahami dan boleh dibaca manusia dan bukannya satu dan sifar. Contohnya, kod Solidity akan menyertakan perkataan dan frasa seperti "fungsi" dan "kontrak", serta kurungan kerinting dan nombor.

Menjadi bahasa pengekodan berorientasikan objek bermakna Solidity berkisar menggunakan "objek", iaitu kepingan kod yang boleh digunakan semula untuk mencipta kepingan kod yang serupa tanpa menulis semula kod asal setiap kali.

Solidity juga menggunakan pengkompil untuk menukar kod tahap tinggi yang boleh dibaca manusia kepada kod yang boleh dibaca mesin yang dilaksanakan pada Mesin Maya Ethereum (EVM).

Apa itu Vyper?

Vyper ialah bahasa pengaturcaraan pythonic berorientasikan kontrak untuk kontrak pintar yang direka untuk digunakan dengan EVM. Bahasa ini direka bentuk untuk menambah baik Solidity dengan meningkatkan keselamatan dan kebolehbacaan kod. Vyper mempunyai tumpuan yang kuat pada kebolehdengaran kodnya. Disebabkan ini, salah satu prinsipnya ialah manusia harus dapat membaca kod Vyper sebanyak mungkin. 

Vyper juga bertujuan untuk menjadikannya sesukar mungkin bagi sesiapa sahaja untuk menulis kod yang mengelirukan. Kesederhanaan untuk pembaca (iaitu, juruaudit) adalah lebih penting daripada kesederhanaan untuk penulis (iaitu, pembangun). Dengan cara ini, lebih mudah untuk mengenal pasti kod hasad dalam kontrak pintar atau aplikasi terdesentralisasi (DApp).

Apa itu Scrypto?

Scrypto ialah bahasa kontrak pintar berorientasikan aset. Bahasa ini dibangunkan oleh Radix, berasaskan Rust, dan mengekalkan kebanyakan ciri Rust sambil menambah fungsi dan sintaks khusus untuk Radix Engine v2. Memandangkan Scrypto berorientasikan aset, ia boleh berinteraksi dengan aset seperti token, yang merupakan jenis sumber dalam bahasa. 

Dalam bahasa pengekodan seperti Solidity, token ERC-20 wujud sebagai kontrak pintar pada EVM. Aset dalam Scrypto ialah sumber yang wujud dalam bekas dan peti besi. Secara ringkasnya, ia seperti mempunyai baldi (bekas) dan mengisinya dengan syiling (aset) yang boleh disimpan di dalam bank celengan (kebal).

Terbaru: Permintaan untuk bakat dalam kripto kurang bergantung pada pasaran apabila industri semakin matang

Scrypto juga memfokuskan untuk menjadi mesra pembangun dengan membenarkan mereka menulis kod yang diperlukan sahaja semasa berinteraksi dengan bekas dan sumber untuk mendayakan fungsi dalam DApp. Keselamatan ialah prinsip lain dengan pembangun dapat memberikan arahan khusus kepada DApp dan bukannya memberikan kebenaran menyeluruh.

Bagaimana perbandingan bahasa kontrak pintar

Solidity mempunyai pelbagai sumber pembelajaran dalam talian dan banyak sokongan komuniti kerana penggunaannya dalam rangkaian blockchain utama seperti Ethereum. Solidity juga mempunyai pelbagai ciri yang diambil daripada pengaturcaraan berorientasikan objek (OOP), menjadikannya modular dan lebih mudah untuk menyelesaikan masalah apabila terdapat masalah. Sebagai contoh, jika objek dari kelas tertentu tidak berfungsi, ia boleh dikesan kembali ke asal kelas. 

Ini berfungsi kerana Solidity menggunakan enkapsulasi, bermakna setiap objek adalah serba lengkap, dengan setiap fungsi berfungsi secara bebas. Modulariti bahasa pengekodan juga membolehkan pembangun bekerja pada berbilang objek secara serentak, menjadikannya lebih cekap untuk membina, membetulkan dan menggunakan kontrak pintar.

Vyper ialah bahasa pengekodan yang lebih mudah daripada Solidity, menekankan ketelusan, kesederhanaan struktur bahasa dan kebolehdengaran. Vyper juga mempunyai ciri yang lebih sedikit daripada Solidity, yang dilakukan dengan sengaja atas sebab keselamatan. Set ciri terhad mengurangkan bilangan kelemahan yang boleh dieksploitasi oleh pelakon berniat jahat.

Sebagai contoh, Solidity menggunakan pengubah suai yang menunjukkan bahawa semakan telah dijalankan sebelum dan selepas proses dilaksanakan. Walau bagaimanapun, Vyper tidak menggunakan pengubah suai kerana pembangun percaya ia memudahkan untuk menulis kod yang mengelirukan. Ia juga menggalakkan individu untuk membangunkan kod yang melantun ke seluruh fail, mengurangkan kebolehdengaran. Memandangkan pengubah suai tidak terdapat dalam Vyper, adalah mustahil untuk menambah sebarang perubahan keadaan pada kod.

Ciri lain yang dikecualikan daripada Vyper ialah pewarisan. Dalam Solidity, berbilang kontrak boleh mewarisi ciri daripada kontrak induk. Sekiranya terdapat perselisihan faham, ia juga memerlukan individu memahami norma keutamaan. Vyper tidak menggunakan warisan kelas kerana ia menghapuskan potensi sumber kerumitan dalam kod, yang menyumbang kepada kebolehdengaran yang lebih baik. Secara umum, Vyper ialah bahasa pengekodan yang lebih minimalis yang memperdagangkan beberapa fungsi untuk meningkatkan keselamatan dan pemeriksaan yang lebih baik terhadap pangkalan kodnya untuk melindungi pengguna kontrak pintar berasaskan Vyper dengan lebih baik.

Walaupun Solidity mungkin salah satu bahasa pengaturcaraan yang paling popular dan terkenal dalam ruang blockchain, sesetengah bahasa mempunyai keluk pembelajaran yang lebih mudah untuk pembangun. Di samping itu, bahasa pengaturcaraan yang lebih mudah memudahkan untuk menarik pembangun baharu ke industri.

Adam Simmons, ketua pegawai strategi di RDX Works — pembangun di sebalik Radix — memberitahu Cointelegraph, “Memiliki alatan yang betul untuk tugas itu membuat perbezaan yang besar — ​​dan pada masa ini, pemaju blockchain tidak mempunyai alatan yang betul. Ini bukan sahaja tentang menjadikan bahasa lebih mudah, tetapi menjadikan alat pembangun yang intuitif dan selamat,” meneruskan:

“Pada kemuncaknya, DeFi meningkat kepada lebih $200 bilion TVL dalam masa dua tahun sahaja — jelas sekali, terdapat tahap permintaan yang sangat tinggi. Namun, di sebalik pertumbuhan 200x dalam modal ini, bilangan pemaju hanya meningkat sebanyak 2x, kepada jumlah sekitar 19,000 (daripada sekitar 30 juta pemaju di seluruh dunia).”

Walaupun tahap pertumbuhan yang tinggi dilihat dalam ruang kewangan terdesentralisasi, bilangan pemaju tidak berkembang untuk menyamai permintaan. Simmons percaya bahawa pemaju mungkin mendapati Solidity terlalu sukar untuk mereka beralih ke pembangunan blokchain:

“Pembangun teragak-agak untuk menggunakan Web3 sepenuh masa kerana keluk pembelajaran Solidity yang curam dan tahap risiko yang tinggi di sekitar keselamatan. Walaupun pembangun berbakat tinggi dan berjuta-juta dolar dibelanjakan untuk audit keselamatan, DeFi masih mengeluarkan wang daripada penggodaman dan eksploitasi. Ini sahaja sudah cukup untuk menghalang pemaju daripada memasuki ruang.”

“Mempunyai bahasa dan alatan yang betul akan membolehkan pembangun mengembangkan keseluruhan industri dengan lebih pesat. Sama seperti enjin permainan memberi pembangun alat untuk merevolusikan pengeluaran permainan video pada tahun 90-an, bahasa dan alatan Web3 yang betul akan membolehkan pembangun mempercepatkan pertumbuhan Web3,” tambah Simmons.

Scrypto juga memfokuskan pada keselamatan, kesederhanaan dan kemesraan pengguna. Urus niaga Scrypto tertumpu pada aset. Mereka menentukan cara pengguna mahu sumber sistem diedarkan. Mereka juga mungkin menunjukkan cara sumber yang dikembalikan harus dikendalikan oleh pengguna atau komponen lain dalam transaksi berbilang komponen.

Transaksi pada Ethereum biasanya merupakan panggilan kepada kontrak pintar (memandangkan DApps dan token pada Ethereum ialah kontrak pintar). Sebaliknya, urus niaga pada Scrypto melibatkan pemindahan aset dari satu komponen ke komponen yang lain.

Sebagai contoh, jika Pengguna A ingin menghantar 10 token tersuai kepada Pengguna B, transaksi mereka akan menunjukkan bahawa mereka cuba mengeluarkan 10 token daripada peti besi yang mengandunginya. Urus niaga juga akan menunjukkan bahawa mereka akan menghantar token tersebut kepada kaedah deposit komponen akaun Pengguna B. Memandangkan sumber (dalam kes ini, token) perlu diletakkan di suatu tempat, baldi (bekas) akan digunakan untuk memindahkan token daripada Pengguna A kepada Pengguna B.

Dalam contoh di atas, pengguna memindahkan baldi yang mengandungi sumber (token) kepada kaedah deposit pengguna kedua dan bukannya membuat panggilan ke kontrak pintar token. Berinteraksi dengan DApps berfungsi sama, dengan pengguna mengeluarkan token daripada akaun mereka dan menyerahkannya kepada komponen berkaitan yang mereka ingin berinteraksi. Ringkasnya, Scrypto mengambil pendekatan berasaskan aset, dengan pengguna menyimpan dan menyampaikan aset sebenar. Pendekatan berasaskan aset juga memudahkan pembangun mengodkan DApps kerana lebih mudah untuk berinteraksi dengan token (sumber), kumpulan token (bilik kebal) dan pengguna (komponen).

Untuk contoh lain, jika DApp pertukaran (seperti Uniswap) dikodkan dengan Scrypto, pembangun hanya perlu mengekodkan kaedah dagangan untuk pertukaran tersebut. Mula-mula, DEX perlu mengenal pasti bekas masuk Token A pengguna, kemudian mengira kadar pertukaran. Seterusnya, token masuk akan didepositkan, dan DEX akan menghantar semula jumlah Token B yang betul kepada pengguna.

Bahasa pengaturcaraan manakah yang harus dipilih oleh pembangun blockchain?

Pembangun boleh menggunakan bahasa pengaturcaraan tradisional (C++, Python, JavaScript) untuk pembangunan blokchain serta penyelesaian yang dibina khusus seperti Solidity, Vyper dan Scrypto. Pelbagai bahasa pengaturcaraan boleh memberi manfaat untuk ruang blockchain kerana ia memberikan pembangun pelbagai alat untuk digunakan. 

Sebagai contoh, pembangun yang biasa dengan C++, JavaScript dan Python mungkin mendapati Solidity menarik. Pembangun yang biasa dengan Python mungkin tertarik kepada Vyper, manakala pembangun yang biasa dengan Rust boleh memilih untuk menggunakan bahasa Scrypto.

Terbaru: Token sosial akan menjadi enjin Web3, daripada pangkalan peminat kepada insentif

Simmons bersetuju, memberitahu Cointelegraph, "Dengan lebih banyak bahasa datang ke Web3, kita mungkin akan melihat tempoh masa di mana terdapat beberapa pendekatan yang bersaing. Memandangkan bahasa-bahasa ini mendapati pasaran produk sesuai dengan pembangun dan yang paling penting membolehkan pembangun tersebut membina DApp yang berkuasa, berguna dan selamat, kami berkemungkinan akan melihat industri tertarik ke arah yang memberikan hasil terbaik."

Solidity secara semula jadi akan menjadi pilihan untuk pembangun yang ingin mengusahakan Ethereum dan rangkaian blockchain yang serupa. Pada masa yang sama, Vyper dan Scrypto boleh menarik pembangun yang lebih suka kesederhanaan dan keselamatan tambahan. Scrypto juga mungkin lebih disukai untuk pembangun kerana peningkatan kesederhanaan dan pendekatan berorientasikan aset.

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