Ekosistem Python di Ethereum

Meskipun Ethereum dibuat oleh Vitalik Buterin dalam bahasa Python, namun dalam perkembangannya, Python agak ditinggalkan dalam pengembangan Ethereum. Yang paling banyak digunakan adalah bahasa Go, di mana Go-Ethereum (geth) sebagai node client (Ethereum Virtual Machine di dalamnya) secara de facto paling lengkap dan banyak digunakan. Python-pun hanya sekedar wrapper untuk memanggil geth (py-geth). Lalu apa saja perangkat lunak apa saja yang bisa digunakan untuk pengembangan Ethereum?

Apa itu Blockchain?

Sebelum melanjutkan ke ekosistem Python, kita mengenal dulu apa itu Blockchain. Konsep ini masih abstrak, jadi kita perlu parameter sesuatu itu disebut blockchain bila:

  1. Cryptographically Secure
    Seluruh transaki diamankan dengan kriptografi. Semua data disimpan dalam format hash.
  2. Transaction Singleton Machine
    Seluruh transaki diproses oleh banyak mesin secara fisik, namun secara konsep dianggap sebagai satu mesin. Bayangkan sebuah cluster yang terdiri dari banyak mesin/node di Internet, namun dianggap satu mesin
  3. With shared state
    Kondisi terakhir satu node, segera akan disinkronisasikan dengan node lain, sehingga semua node dalam blockchain memiliki ‘state‘ yang sama.

Cryptocurrency

Cryptocurrency adalah salah satu fitur yang dimilik oleh banyak blockchain, namun tidak semua blockchain menerapkan cryptocurrency. Beberapa diantaranya adalah Hyperledger dan Multichain. Munculnya cryptocurrency, meminjam salah satu tujuan Bitcoin, pionier implementasi blockchain pertama kali, adalah untuk memberikan insentif bagi para pemilik node yang mendedikasikan mesinnya memproses transaksi di blockchain. Dalam bitcoin dan blockchain dengan cryptocurrency lainnya

Apa itu Ethereum?

Ethereum adalah salah satu implementasi blockchain yang diusulkan oleh Vitalik Buterin, Gavin Wood dan Jefrey Wickle. Salah satu keunggulannya, selain menyimpan transaksi, Ethereum dapat ditumpangi fungsi/algoritma di atasnya. Dengan kata lain kita bisa membuat perangkat lunak di atas blockchain. Algoritma ini dikenal dengan nama Smart Contract.

Python di Ethereum

Hingga tulisan ini dibuat, implementasi Ethereum rata-rata menggunakan bahasa Go. Meskipun di awal Ethereum dibuat oleh Vitalik dalam bahasa Python, namun dalam pengembangannya Python tidak terlalu banyak diimplementasikan dalam Ethereum. Berikut beberapa implemantasinya:

  1. Node/Klien

    Software untuk menjalankan satu node klien ethereum secara penuh. Saat ini yang paling banyak digunakan adalah geth (Go Ethereum, lihat bagian EVM di bawah) dengan API (Application Program Interface – antar muka program yang bisa diakses dari luar program) yang lengkap, terutama Web3. Py-geth adalah implementasi Python yang sebetulnya wrapper untuk geth. Artinya Anda harus punya geth dulu untuk dapat menjalankan Py-geth. Sedangkah Pyethapp murni implementasi Python, namun masih memiliki keterbatasan antarmuka.

  2. RPC API

    Untuk bisa berkomunikasi dengan klien ethereum, perlu antarmuka yang bisa ditrigger untuk dijalankan. Mekanisme ini sering disebut RPC (Remote Procedure Call). Salah satu RPC API Ethereum yang paling banyak digunakan adalah Web3 yang diimplementasikan dalam Javascript. Python memiliki antar muka sendiri dengan nama Web3.py yang mengakomodir semua fungsi Web3 versi Javascript.

  3. Smart Contract Language

    Bahasa smart contract yang digunakan di Ethereum adalah Solidity, ditulis dalam bahasa Go. Implementasi Python pertama kali menggunakan Serpent. Meskipun demikian, saat ini mulai ditinggalkan. Puncaknya saat Augur, salah satu perusahaan blockchain besar berbasis Ethereum menghentikan penggunaan Serpent dan beralih ke Solidity. Saat ini Serpent banyak digunakan di ETC (Ethereum Classic), sedangkan Serpent beralih ke Vyper.

  4. Test RPC Node

    Untuk development di Ethereum, butuh satu ethereum node untuk bisa implementasi seluruh fungsi-fungsinya. Namun node ini tersambung ke jaringan Ethereum publik sehingga butuh ether untuk dapat melakukan transaksi, dan saat ini sangat mahal harganya. Di samping itu juga perlu sinkronisasi seluruh blok transaksi yang berjumlah sangat besar. Di sinilah fungsi Test RPC node, memungkinkan Anda mensimulasikan satu node Ethereum tanpa harus tersambung ke jaringan dan dapat di auto-mining.Implementasi paling mudah adalah Ganache-cli, merupakan bagian dari Truffle framework. Anda akan dibuatkan sepuluh account dengan saldo 100 ETH dan siap untuk digunakan. Di Python, hal yang sama dapat memanfaatkan eth-testrpc yang mendukung seluruh fungsi node Ethereum dan dimanfaatkan via JSON-RPC.

  5. EVM

    Ethereum Virtual Machine adalah mesin virtual, merupakan implementasi konsep Vitalik yang menginginkan Ethereum adalah satu Mesin Turing yang komplit. Dalam bahasa Go, tersedia Go-ethereum. Sementara di Python, tersedia Pyethereum yang kurang terawat, dan saat ini sedang ujicoba pengembangan Py-Evm, implementasi terbaru EVM di dalam Python dengan berbagai pertimbangan.

  6. Smart Contract Framework

    Membuat smart contract, melakukan pengujian, kompilasi menjadi format ABI dan mempublikasikan smart contract ke dalam jaringan Ethereum merupakan rangkaian pekerjaan yang makan waktu. Di sinilah framework dibutuhkan, agar semua proses di atas dapat dilakukan dalam satu aplikasi. Di samping itu saat smart contract terdiri lebih dari satu kontrak dan harus diatur sedemikian rupa, cukup menyulitkan dengan IDE editor teks biasa.Framework yang paling sering digunakan adalah Truffle, dikembangkan dalam bahasa Go. Sedangkan Python memiliki Populus, hingga saat ini masih aktif dikembangkan.

Secara ringkas dapat dilihat dalam tabel berikut:

Kesimpulan

Ekosistem Python masih belum memadai untuk dijadikan dasar dalam pengembangan di Ethereum. Memadai dalam arti dukungan komunitas ataupun perusahaan yang lebih kuat. Beberapa aplikasi bahkan lama tidak diperbarui dan beberapa tidak kompatibel dengan versi Ethereum terbaru. Meskipun demikian, hal ini juga merupakan peluang untuk ikut serta membantu komunitas dalam implementasi Python di Ethereum.

Artikel ini merupakan penjabaran dari presentasi saya, Mengenal Ethereum dengan Python.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *