Sekitar kurang lebih satu tahun yang lalu, saya mulai mempelajari teknologi cryptocurrency (bitcoin), bukan untuk mencari keuntungan tetapi lebih kepada bagaimana menggunakan teknologinya untuk keperluan lainnya, secara spesifik teknologi blockchain -nya
BlockChainsecara sederhana block di dalam blockchain adalah sebuah buku, berisi catatan transaksi semacam buku akuntansi, bedanya apabila buku akuntansi menggunakan sistem debit credit, di dalam blockchain ini lebih sederhana lagi, sekedar mencatat dana sumber - input - (dari siapa jumlahnya berapa) dan tujuan transfer -output- (kepada siapa jumlahnya berapa).
Buku ini kemudian di segel menggunakan fungsi kriptografi lalu disusun bersamaan dengan buku-buku sebelumnya membentuk blockchain dan disebarkan atau di copy ke tempat - tempat lainnya yang tersebar dimana - mana sebagai bukti sekaligus backup yang dapat dibaca oleh siapa saja. Dalam proses penulisan buku (block) ini, node (tempat yang menyimpan buku2 ini) sebelum menuliskannya akan memeriksa apakah data yang dituliskan sebagai sumber transaksi (input) tadi benar - benar ada, jumlahnya benar, belum pernah digunakan di transaksi lain, dan yang menginput apakah orang yang berhak atau tidak, mekanisme ini dinamakan sebagai double spending prevention (update : mekanisme ini berlaku pada sistem bitcoin blockchain)
Alamat
Dalam konsep cryptocurrency, alamat dapat diidentikan sebagai nomor rekening, alamat dibuat dari sebuah pasangan kunci (key pair) yang dihasilkan dari fungsi acak. Satu kunci sifatnya pribadi (private key) yang harus disimpan baik - baik oleh pemilknya, dan satu lagi sifatnya publik (public key) yang dijadikan sebagai alamat atau nomor rekening.
Dalam perkembangannya bitcoin tidak hanya mendukung penggunaan public key sebagai alamat, saat ini bitcoin dapat menggunakan alamat yang diturunkan dari sebuah kode khusus (script) untuk mencapai fleksibilitas. Namun konsep alamat ini masih tidak berubah, selain berfungsi sebagai nomor rekening, juga dapat merepresentasikan identitas atau kode otorisasi.
Masalah dan KebutuhanBuat saya blockchain mengandung solusi yang saya perlukan, namun demikian konsep blockchain yang digunakan pada bitcoin dan cryptocurrency pada umumnya memiliki kelemahan dari sudut pandang kebutuhan saya. Nilai uang (BTC kalau dalam bitcoin) dihasilkan dari sebuah proses mining yang sifatnya terdistribusi dan tidak dapat ditentukan secara spesifik (baik jumlah dan waktunya), dan nilai uang yang telah dibuat secara teknis tidak dapat dikembalikan atau dihilangkan dari sistem. Karakteristik in membuat konsep blockchain ini akan sulit diadopsi untuk model nilai atau asset yang membutuhkan konsep inventory (keluar masuk barang) dan pengaturan secara tersentral (central authority)
EthereumBitcoin adalah cryptocurrency generasi pertama dan mungkin yang paling populer saat ini, setelah bitcoin muncul cryptocurrency lainnya seperti lite coin, ripple, ethereum dan masih banyak lagi. Ethereum adalah salah satu dari cryptocurrency yang mendukung konsep smart contract, berbeda dengan bitcoin meskipun sama - sama memiliki bentuk smart contract (script) , ethereum menyediakan keleluasaan untuk membuat smart contract dengan kompleksitas setara program - program yang ditulis dengan bahasa pemrograman pada umumnya (complete turing machine)
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
KekuranganMeskipun 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.
Sebagai pengguna di lingkungan publik ethereum, sangat disarankan untuk berhati - hati terhadap smart contract yang tidak jelas pembuatnya (ethereum hanya berpegang pada kepercayaan dan niat baik), sedangkan sebagai pengembang sebaiknya melakukan uji coba di jaringan sendiri dan menggunakan pattern dimana smart contract kedepannya dapat di update.
Distributed Service Market PlaceMenurut saya, visi dari smart contract ini lebih sekedar membuat platform mata uang seperti bitcoin, dengan teknologi ini diharapkan para pengembang akan membuat layanan - layanan baru atau bahkan mata uang baru yang ditersedia secara publik, pengguna hanya perlu mengirimkan / memasukkan uang (ether) ke alamat kontrak untuk dapat menggunakan layanan tersebut.
Lebih jauh lagi para pengembang ethereum sedang berupaya mendorong konsep yang dinamakan web 3 , dimana semuanya bersifat terdistribusi dan memiliki nilai ekonomis. Apabila bitcoin menawarkan sebuah sistem perbankan, maka ethereum dengan smart contractnya menawarkan sebuah negara digital dengan sistem perbankannya dimana penduduknya (penggunanya) dapat membuat perusahaan - perusahaan (smart contract) di dalamnya dan memperoleh keuntungan darinya
Pengembangan dan PemanfaatanEthereum seperti halnya bitcoin merupakan sebuah project open source, saat ini berbagai institusi tidak hanya dari finansial sedang berusaha mengeksplorasi konsep blockchain melalui smart contract untuk berbagai keperluan, mulai dari crowd funding, p2p lending, transfer antar bank, manajemen identitas, manajemen aset, supply chain, otomotif , bahkan sampai pada industri musik dan digital aset. Menurut saya teknologi blockchain dan smart contract adalah salah satu teknologi yang akan berkembang di masa depan.
Sumber :
https://www.kompasiana.com/zeanonim/mengenal-smart-contract-masa-depan-finansial-dan-web-economy_587c76c6c5afbd690c72a41c ( dengan beberapa perubahan )