October 26, 2020

Solidity vs Plutus

Keisha Dwyer

Screenshot_2-1.png

Saat ini, ada dua platform blockchain yang memungkinkan penggunanya untuk membangun smart contracts di atas jaringan blockchainnya; yang paling terkenal adalah Ethereum dan Cardano (nanti saat Goguen dirilis). Kedua jaringan blockchain tersebut memiliki bahasa pemrogramannya masing-masing dalam pembuatan smart contracts. Ethereum memilih Solidity sebagai bahasa pemrograman smart contracts-nya; sebuah bahasa pemrograman smart contracts yang paling populer saat ini. Sementara itu, Cardano memilih Plutus sebagai bahasa pemrograman smart contractsnya. Namun, apa sih sebenarnya perbedaan dari kedua bahasa pemrograman tersebut? Let’s find out together, shall we?

Solidity

Ethereum Blockchain menggunakan bahasa pemrograman solidity untuk smart contractnya. Solidity dikembangkan oleh Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai dan beberapa mantan kontributor inti Ethereum untuk memungkinkan penulisan smart contracts pada platform blockchain seperti Ethereum.

Solidity dibuat secara khusus untuk smart contract. Ada banyak fitur dalam bahasa pemrograman ini untuk membuat eksekusi smart contract menjadi lebih mudah. Solidity dipengaruhi oleh banyak program dan konsep pemrograman populer. Solidity memiliki elemen pemrograman berorientasi objek, pengembangan web, bahasa assembly, dll. Bahasa pemrograman Solidity mencakup berbagai kasus penggunaan, seperti DeFi, voting, supply chain, dll.

Solidity ditulis dalam file .sol; solidity sangat mirip dengan C++ dalam penulisan sintaksnya. Jika Anda familiar dengan bahasa pemrograman C++ dan sintaksnya, maka Anda tidak akan merasa kesulitan untuk menulis solidity.

A simple diagram to show how Solidity works

Ketika kita menulis sebuah contract dengan menggunakan solidity, hal tersebut disebut sebagai contract definition. Namun contract definition bukan-lah kode yang sebenarnya dieksekusi pada jaringan Ethereum. Contract definition yang sudah ditulis menggunakan solidity akan di-compile menggunakan solidity compiler. Compiler ini akan membagi contract definition menjadi 2 buah file. File yang pertama berisi bytecode; bytecode ini adalah kode yang sebenarnya di-deploy pada jaringan Ethereum. Dan file yang lain adalah Application Binary Interface atau biasa disebut sebagai ABI. ABI inilah yang akan menjadi layer untuk pengguna berinteraksi dengan smart contract menggunakan web application, dan lain-lain.

Bagaimana cara saya untuk mencoba menggunakan solidity?

Anda dapat mencoba Solidity secara online, tanpa perlu mengunduh atau menginstal apapun, melalui Remix IDE. Remix tersedia secara open source. Anda dapat menemukan code, dokumentasi, dan source-nya pada link ini.

Plutus

Cardano memilih Haskell dan Plutus sebagai bahasa pemrograman pilihan mereka. Haskell akan digunakan untuk koding pada blockchain Cardano, sementara Plutus akan digunakan untuk pembuatan smart contracts. Keduanya adalah bahasa pemrograman fungsional.

Apa yang dimaksud dengan hal itu?

Dua Tipe Bahasa Pemrograman (A slight detour)

Ketika berbicara tentang bahasa pemrograman, ada dua tipe:

  • Imperatif
  • Fungsional.

Bahasa Pemrograman Imperatif

Dalam pendekatan imperatif, pembuat kode perlu menjelaskan semua langkah yang perlu diambil komputer untuk mencapai tujuan. Semua bahasa pemrograman tradisional seperti C ++, Java, dan bahkan Solidity adalah bahasa pemrograman imperatif. Pendekatan pemrograman semacam ini juga disebut pemrograman algoritmik.

Mari kita ambil contoh. Mari kita lihat bahasa pemrograman C++. Misalkan kita ingin menambahkan angka 5 dan 3.

int a = 5;

int b = 3;

int c;

c = a + b;

Jadi, seperti yang Anda lihat, proses penambahan tersebut mengambil alih beberapa langkah dan setiap langkah terus-menerus mengubah state of the program karena semuanya dijalankan secara bergantian.

Proses penjumlahan tersebut terdiri dari empat langkah dan langkah-langkahnya adalah:

  • Mendeklarasikan integer a dan memberikan nilai 5 padanya.
  • Mendeklarasikan integer b dan memberikan nilai 3 padanya.
  • Mendeklarasikan integer c.
  • Menambahkan nilai dari a dan b dan menyimpannya di c.

Bahasa Pemrograman Fungsional

Tipe kedua dari bahasa pemrograman adalah bahasa pemrograman fungsional. Tipe pemrograman ini dibuat untuk membangun pendekatan fungsional dalam pemecahan masalah. Pendekatan semacam ini disebut pemrograman deklaratif.

Jadi, bagaimana cara kerja pemrograman fungsional?

Misalkan ada fungsi f(x) yang ingin kita gunakan untuk menghitung fungsi g(x) dan kemudian kita ingin menggunakannya untuk bekerja dengan fungsi h(x). Alih-alih menyelesaikan semua itu secara berurutan, kita cukup menggabungkan semuanya dalam satu fungsi seperti ini:

h(g(f(x)))

Hal ini membuat pendekatan fungsional lebih mudah untuk proses nalar secara matematis. Inilah sebabnya mengapa program fungsional seharusnya menjadi pendekatan yang lebih aman untuk pembuatan smart contracts. Bahasa pemrograman fungsional memungkinkan kita untuk melakukan pembuktian secara matematis tentang apa yang dilakukan program dan bagaimana program itu bekerja. Hal ini membuat Plutus menyandang titel sebagai “Highly Assurance Code”.

This is precisely why the functional approach is so desirable.

Itulah alasan mengapa Cardano menggunakan bahasa pemrograman Haskell untuk ekosistem mereka dan Plutus untuk smart contractsnya. Haskell dan Plutus adalah bahasa fungsional.

Kembali ke Plutus

Bahasa pemrograman plutus adalah bahasa pemrograman based on Haskell. Ini berarti, seperti halnya Haskell, plutus memiliki lebih banyak kemiripan dengan matematika daripada pemrograman. Plutus dimaksudkan untuk digunakan oleh:

“financial institutions, places that do electronic trading and other such financial operations with money at stake.”

Lalu, mari kita lihat contoh dasar pemrograman menggunakan Plutus. Kode di bawah ini diambil dari Cardano docs.

Kode program plutus sederhana ini menunjukkan penambahan, perkalian, faktorial dan Fibonacci:

add : Nat -> Nat -> Nat {

add Zero n = n ;

add (Suc m) n = Suc (add m n)

}

mul : Nat -> Nat -> Nat {

mul Zero _ = Zero ;

mul (Suc m) n = add (mul m n) n

}

fac : Nat -> Nat {

fac Zero = Suc Zero ;

fac (Suc n) = mul (Suc n) (fac n)

}

fib : Nat -> Nat {

fib Zero = Suc Zero ;

fib (Suc Zero) = Suc Zero ;

fib (Suc (Suc n)) = add (fib n) (fib (Suc n))

}

Perbedaan antara pendekatan fungsional dan pendekatan imperatif dapat Anda lihat di barisan kode di atas.

Bagaimana cara saya untuk mencoba menggunakan plutus?

Anda dapat mencoba Plutus secara online, tanpa perlu mengunduh atau menginstal apapun, melalui Plutus Playground. Plutus Platform tersedia secara open source. Anda dapat menemukan code, dokumentasi, dan source-nya pada link ini.


Tentang EMURGO

EMURGO adalah perusahaan blockchain global yang menghadirkan solusi untuk developers, startups, enterprise, dan pemerintah. EMURGO mengembangkan aplikasi dengan standard enterprise, tools untuk developer, berinvestasi di startup, dan memberikan edukasi tentang teknologi blockchain. EMURGO memiliki kantor dan menangani proyek di Singapura, Jepang, Amerika Serikat, India, dan Indonesia. EMURGO juga adalah salah satu pendiri dari Cardano protocol.

Program Sertifikasi Blockchain: Foundations of Blockchain, Ethereum Developer Class

Pelajari lebih lanjut tentang EMURGO dengan mengunjungi website resmi kami di sini


Follow akun media sosial EMURGO Indonesia:

Twitter : http://bit.ly/EmurgotwitterId

Facebook :bit.ly/Emurgo_id

Instagram : http://bit.ly/EmurgoInstaId

Linkedin: http://bit.ly/emurgoidLinkedin

Related articles