Ethereum adalah salah satu platform blockchain terbesar. Anda dapat menggunakannya untuk membangun aplikasi terdesentralisasi, kontrak cerdas, dan organisasi otonom terdesentralisasi (DAO).
Anda memerlukan bahasa untuk memprogram, untuk membangun di blockchain Ethereum. Meskipun Anda memiliki banyak opsi untuk pengembangan Ethereum, Solidity dan Vyper adalah yang paling populer.
Bahasa Pemrograman Solidity
Solidity adalah bahasa pemrograman tingkat tinggi yang sangat populer digunakan untuk pengembangan Ethereum. Ini adalah bahasa berorientasi objek dengan ekosistem perpustakaan lengkap yang dapat Anda gunakan untuk membangun aplikasi yang kompleks. Solidity berbagi beberapa kesamaan dengan JavaScript mengenai pengetikan statis, ekspresi dan kata kunci, dan pemrograman berorientasi objek. Inilah program Hello World sederhana di Solidity:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract HelloWorld {
// Create function to return "Hello world"
function helloWorld() public pure returns (string memory) {
return "Hello world";
}
}
Program di atas mendefinisikan fungsi helloWorld(). Fungsi helloWorld() mengembalikan sebuah string; dalam hal ini, frasa “Halo dunia”. Berikut hasil menjalankan program Hello World pada Remix IDE:
Apa Itu Bahasa Pemrograman Vyper?
Vyper adalah bahasa yang lebih baru untuk pengembangan Ethereum. Itu dirilis pada 2018; seperti Solidity, Vyper adalah bahasa yang diketik secara statis.
Vyper ditulis dalam sintaks yang sama dengan yang digunakan bahasa pemrograman Python, yang lebih sederhana daripada kode Solidity. Bahasa berfokus pada keamanan kontrak pintar. Berikut adalah program Hello World sederhana yang ditulis dalam Vyper:
# @version >=0.2.16 @external @view # define a function that returns a string def helloWorld() -> String[24]: return "Hello World!"
Seperti contoh Solidity, program ini mendefinisikan fungsi helloWorld() yang mengembalikan sebuah string. Dalam hal ini, fungsi mengembalikan Hello World!
Inilah hasil menjalankan program Vyper Hello World di Remix:
Perbedaan Antara Solidity dan Vyper
Meskipun Solidity dan Vyper memiliki kasus penggunaan yang serupa, ada perbedaan antara bahasa yang ingin Anda pertimbangkan saat memilih bahasa untuk pengembangan Ethereum.
Berikut adalah beberapa perbedaan antara Solidity dan Vyper.
Language Syntax
Vyper memiliki sintaks yang sederhana, sedangkan Solidity memiliki sintaks yang kompleks mirip dengan C++. Sintaks Solidity memudahkan pengembang untuk membangun aplikasi canggih. Vyper, di sisi lain, memiliki sintaks yang lebih terbatas. Itu tidak mendukung pengubah khusus, antarmuka, atau warisan.
Berikut adalah beberapa perbedaan spesifik antara sintaksis kedua bahasa.
Vyper menggunakan indentasi untuk membatasi blok kode, sedangkan Solidity menggunakan kurung kurawal. Berikut adalah program Vyper sederhana:
def test() -> none: if x > 5: # do something else: # do something else
Inilah program yang sama di Solidity:
function test() public { if (x > 5) { // do something } else { // do something else } }
Deklarasi variabel dan fungsi di Solidity lebih kompleks daripada di Vyper karena Anda harus menentukan visibilitas, lokasi penyimpanan, dll. Berikut adalah program sederhana yang mendefinisikan variabel dan fungsi di Solidity:
contract MyContract { // variable declaration in Solidity uint256 public x; // function declaration in Solidity function myFunc(uint256 _x) public returns (uint256) { // do something with _x return x; } }
Berikut adalah program sederhana yang mendefinisikan variabel dan fungsi di Vyper:
contract MyContract: # variable declaration in Vyper x: uint256 # function declaration in Vyper def myFunc(_x: uint256) -> uint256: # do something with _arg return self.x
Kode Vyper umumnya sedikit lebih mudah dibaca daripada kode Solidity.
Smart Contract Security
Vyper memastikan tingkat keamanan yang tinggi untuk kontrak pintar. Vyper memiliki lebih sedikit fitur daripada Solidity, membuatnya kurang rentan terhadap ancaman keamanan.
Solidity memiliki fitur seperti pewarisan, dukungan untuk pengubah kustom, dan tipe data lanjutan seperti pemetaan. Fitur-fitur ini tidak tersedia di Vyper, dan menggunakannya secara sembarangan di Solidity dapat menyebabkan ancaman keamanan yang serius.
Language Adoption and Developer Familiarity
Soliditas lebih populer dan diterima secara luas daripada Vyper. Solidity memiliki dukungan komunitas yang sangat baik dan sumber daya yang tersedia untuk pemula.
Di sisi lain, Vyper tidak diterima secara luas dan tidak memiliki dukungan komunitas, jadi pemula harus mengetahui banyak hal sendiri.
Jika Anda telah bekerja dengan bahasa pemrograman seperti Python, Anda akan merasa relatif lebih mudah untuk mempelajari Vyper. Di sisi lain, jika Anda terbiasa dengan bahasa pemrograman seperti Java dan C++, Solidity akan lebih mudah dipelajari.
Gas Efficiency
Vyper mengkonsumsi lebih sedikit gas daripada Solidity karena sintaks Vyper memudahkan Ethereum Virtual Machine (EVM) untuk membaca. Karena Solidity memiliki sintaksis yang lebih kompleks, kontrak yang ditulis dengan Solidity akan mengonsumsi lebih banyak gas dan menghasilkan biaya gas Ethereum yang lebih tinggi.
Jika membangun aplikasi yang aman dengan sedikit bahan bakar adalah prioritas Anda, Vyper adalah pilihan terbaik Anda. Soliditas umumnya kurang hemat gas dan aman dibandingkan Vyper karena banyak fiturnya yang dapat meningkatkan biaya gas. Mereka juga dapat membuat kontrak Anda rentan terhadap kerentanan.
Bahasa Apa Yang Harus Anda Gunakan untuk Aplikasi Ethereum?
Pertimbangkan perbedaan antara kedua bahasa tersebut, dan putuskan satu berdasarkan persyaratan proyek Anda dan preferensi Anda sendiri. Vyper adalah opsi yang lebih baik untuk kontrak cerdas karena keamanan tingkat tinggi dan sintaksis yang lebih mudah. Anda akan menemukan kelemahan menggunakan Vyper saat membuat aplikasi kompleks karena Vyper memiliki lebih sedikit fitur daripada Solidity.
Soliditas berguna untuk proyek yang kompleks, dan komunitas soliditas yang terus berkembang serta banyak fitur menjadikan Soliditas lebih disukai. Namun, jika Anda memilih Solidity, Anda harus sering mengaudit aplikasi Anda untuk menemukan bug dan kerentanan keamanan.
Izinkan Spesifikasi Proyek Anda Mempengaruhi Pilihan Anda
Pilihan bahasa Anda untuk mengembangkan di Ethereum paling baik bergantung pada fitur dan spesifikasi proyek Anda. Vyper dan Solidity memiliki pro dan kontra, jadi berdasarkan proyek Anda, Anda akan ingin memilih bahasa yang kerugiannya dapat Anda hindari dengan mudah.