Smart Contract dalam Ethereum
Awalnya ketika saya mendengar istilah smart contract, pikiran saya langsung terpaku pada konsep pay to script dari bitcoin dengan kompleksitas yang lebih tinggi, karena itu saya kemudian hanya terfokus pada eksplorasi teknologi blockchain untuk kebutuhan saya. Namun belakangan ini, saya mulai mempelajari smart contract dan menemukan jawaban atas kebutuhan - kebutuhan yang saya cari selama ini, meskipun tidak persis sama.Â
Bagi programmer, smart contract lebih cocok dianalogikan sebagai javascript pada browser, meskipun merupakan bahasa pemrograman yang lengkap, namun keduanya dibatasi oleh lingkungan eksekusinya (runtime environment) - yaitu browser pada javascript, apabila javascript dieksekusi berdasarkan pada event - event browser (click, mouseover dsb) dan hanya dapat memanipulasi tampilan layar (melalui HTML DOM) maka smart contract dieksekusi berdasarkan event - event finansial pada ethereum (pengiriman uang, interaksi dengan script lain dsb) dan hanya dapat memanipulasi variable - variable finansial yang ada di platform ethereum.
Sedang bagi orang awam, smart contract dapat dianalogikan sebagai sebuah mesin kiosk (ATM, vending machine) dimana memiliki fungsi spesifik , bekerja secara otomatis, terisolir, dan membutuhkan masukan (uang) untuk dapat melakukan fungsi tertentu. Sekilas smart contract tidak berbeda dengan program yang dibuat dengan bahasa pemrograman lainnya, dan memang benar, karena pembedanya adalah pada lingkungan eksekusinya
Distributed, Replicated, Immutable, Non repudiation
Distributed artinya data dan fungsionalitasnya terdistribusi (lawan dari sentralistik) di sejumlah server dengan lokasi berbeda - beda, Replicated artinya datanya diduplikasi/di backup ke berbagai tempat, Immutable artinya data yang sudah ditulis tidak dapat diubah - ubah lagi dan bersifat selamanya, Non Repudiation artinya siapa - siapa yang menuliskan perubahan dapat dibuktikan keterlibatannya dan tidak dapat mengelak.
Ke empat karakteristik itu tidak disediakan pada lingkungan ekseskusi pada umumnya, bisa dicapai hal yang sama namun diperlukan usaha yang berlipat - lipat. Keempat karakteristik tersebut disediakan oleh teknologi blockchain dimana pada ethereum selain digunakan untuk menyimpan data transaksi cyrptocurrency internalnya (ether) juga digunakan untuk menyimpan data - data yang digunakan oleh smart contract
Kekurangan
Meskipun membawa berbagai kelebihan namun platform smart contract tentunya memiliki kelemahan atau kekurangan. Blockchain mendorong transparasi, segala bentuk transaksi dan datanya dapat diakses oleh publik atau siapa saja dan tanpa adanya enkripsi, artinya apabila dalam transaksi smart contract kita mencantumkan data pribadi, maka kita akan kehilangan privasi.Â
Sebagai solusi alternatif (workaround) diantaranya dapat membangun private network (jaringan tertutup) dimana hanya mesin - mesin terpercaya yang dapat bergabung dalam jaringan yang kita bangun, atau alternatifnya memisahkan data pribadi dari smart contract, menggunakan file system terdistribusi seperti swarm atau IPFS (Interplanetary File System) untuk menyimpan data yang terenkripsi dan hanya mencantumkan alamat referensi di dalam data smart contract.
Masalah lain adalah kesalahan logika smart contract, berbeda dengan mata uang internal yang digunakan (ether) dimana sudah tersedia mekanisme valid untuk memastikan transaksi benar dan valid, pada smart contract verifikasi dan validasi bergantung pada kode yang kita tulis, artinya apabila kita tidak teliti maka terdapat kemungkinan kesalahan kalkulasi dan sebagainya yang sifatnya tercatat permanen dan dapat dieksploitasi oleh pengguna yang ada di jaringan.