Pemberian Insentif dan Proof of Work Dalam Ekosistem Pertambangan Bitcoin
Kali ini kita akan membicarakan lebih jauh tentang insentif dan proof of work dalam Bitcoin. Kita telah melihat bagaimana konsensus Bitcoin dapat dicapai sebelumnya. Dan telah mengetahui bagaimana hal tersebut akan bisa bekerja dengan aman.
Pada pembahasan desentralisasi Bitcoin sebelumnya, kita mengetahui bahwa sistem Bitcoin banyak dilakukan dengan mengkombinasikan metode teknis dan rekayasa enginering. Lebih jauh di bagian ini kita akan membahas adanya insentif yang sebenarnya juga bersifat rekayasa engineering tersebut di dalam Bitcoin.
Kekuatan utama sistem bitcoin adalah dari seluruh node yang terhubung di dalam bitcoin. Namun node yang paling berpengaruh adalah “Full Node”. Karena Full Node tersebutlah yang bertugas untuk menjaga jaringan bitcoin. Full Node itu juga yang memvalidasi, terus menjaga otentikasi seluruh transaksi bitcoin.
Validasi transaksi bitcoin tidak hanya untuk validasi transaksi saat ini dan mendatang. Namun Full Node juga terus memvalidasi transaksi sebelumnya, sejak bitcoin mulai berjalan. Maka dalam hal ini, semakin banyak full node yang masuk dan berkontribusi semakin sehat pula jaringan bitcoin.
Oleh karena itu, perlu ada sebuah dorongan untuk manarik banyak orang dengan berkontribusi menjadi full node tersebut. Dalam hal ini, pemberian insentif dalam ekosistem pertambangan adalah cara yang paling jitu. Insentif pertambangan, sekaligus menjadi mekanisme distribusi unit-unit bitcoin baru.
Pemberian Insentif
Untuk mengawalinya, kita coba mengasumsikan bahwa kita bisa memilih simpul node (full node) secara acak. Katakanlah, setidaknya dari waktu kewaktu terdapat kurang lebih 50 persen node yang jujur di dalam jaringan Bitcoin. Asumsi pemberian insentif ini tentu akan menjadi persoalan jika pemberian insentif tersebut diberikan kepada node yang berusaha menggagalkan proses mekanisme Bitcoin.
Mengapa demikian? Karena kita tentu tidak bisa mengasumsikan bahwa semua node akan jujur. Yang lebih tepat adalah, bisakah kita memberikan insentif agar node bisa berlaku jujur? Tidak melakukan serangan ke dalam jaringan Bitcoin?
Mari kita tengok kembali pada bahasan konsensus tanpa identitas yang menyinggung tentang zero confirmation dan transaksi ganda. Bisakah kita coba memberikan hukuman kepada pelaku transaksi ganda tersebut? Hal ini tentu akan cukup sulit karena node dalam bitccoin tidak memiliki identitas yang sebenarnya. Begitupun halnya dengan pertanyaan bisakah kita memberikan balasan jasa kepada node karena telah membuat blok yang dan berada dalam konsensus blockchain dalam jangka panjang? Tentu juga akan sulit, mengingat node Bitcoin tidak bisa mengungkap identitas aslinya.
Kecuali jika kita bisa mengirimkannya dengan menggunakan mata uang digital. Sekarang kita mulai bisa mendapat gambaran tentang hal ini. Tentang pemberian Bitcoin sebagai insentif bagi node yang telah berlaku jujur dan membuat blok tersebut. Bagaimana pemberian reward ini bisa dilakukan? Dalam Bitcoin, ada dua macam mekanisme pemberian insentif. Yakni block reward dan Transaction Fees (Biaya transaksi).
1. Block Reward
Pada mekanisme pertama, block reward, diberikan kepada node yang telah membuat blok menyertakan juga transaksi khusus kedalam blok tersebut. Sedangkan yang dimaksud dengan transaksi khusus ini adalah transaksi pembuatan blok Bitcoin baru. Untuk bisa menerima reward ini, tentu saja node tersebut sudah mempunyai address sendiri sebagai tempat untuk menerima reward tersebut.
Sejauh yang kita tahu selama ini, nilai reward blok adalah sebesar 25 Bitcoin. Pada setiap 210.000 blok, nilai reward tersebut akan dibagi dua. Dan akan turun lagi kurang lebih dalam empat tahun selanjutnya. Diawal, reward blok sebesar 50 Bitcoin, dan telah menjadi 25 Bitcoin. Dan akan berkurang separuh lagi di masa mendatang. Tentu saja, pengurangan reward ini akan mempunyai implikasi tersendiri nantinya. Kita akan mengetahui implikasi dan relasinya lebih jauh.
Sampai disini kita mungkin akan bertanya, mengapa harus ada pemberian insentif reward blok ini? Dan mengapa reward ini hanya diberikan kepada node yang jujur saja? Tentu kita sudah mengetahui bahwa node inilah yang akan menjaga rantai blockchain, disamping juga untuk memproduksi blok baru Bitcoin dari waktu ke waktu. Tidak benar jika pemberian insentif juga berlaku untuk node yang telah berlaku tidak jujur di sistem Bitcoin. Node akan mendapatkan rewardnya jika blok tersebut berada dalam susunan konsensus blokchain dalam jangka panjang. Seperti juga pada transaksi lainnya. Penciptaan koin akan diterima jika telah berada dalam konsensus blokchain. Itulah yang menjadi latar belakang mekanisme pemberian insentif ini.
Mekanisme ini bisa berjalan cukup kuat. Dengan mekanisme ini, node akan lebih percaya bahwa node lainnya akan memperpanjang blok mereka. Dan jika sebagian besar node dalam jaringan Bitcoin mengikuti aturan yang sama ini, maka mekanisme pemberian insentif ini juga akan terus berjalan sebagaimana mestinya.
Sementara pembagian reward blok menjadi separuh jika telah mencapai 210.000 blok (kurang lebih 4 tahun), adalah berupa geometric series (baris ukur). Kita akan mengetahui bahwa hal itu berarti merupakan deret terhingga (finite sum). Dan bukan deret tak terhingga (infinite sum). Secara keseluruhan, pencapaian 210.000 blok itu adalah total sebesar 21 juta Bitcoin.
Catatan: Batasan 210.000 blok itu menjadi satu-satunya cara Bitcon baru bisa dan diperbolehkan diciptakan. Dan jumlah totalnya adalah sebesar 21 juta Bitcoin baru yang bisa dibuat. Jumlah nilai tersebut adalah sebagai aturan yang masih berlaku hingga saat ini.
Dengan demikian, maka artinya paling tidak reward penciptaan blok tersebut akan berakhir ditahun 2140. Lantas apakah nanti ditahun 2140 tersebut node menjadi tidak lagi memiliki insentif? Dan berujung pada banyaknya node yang akan berlaku tidak jujur? Hingga membuat situasi dan kondisi menjadi tidak aman lagi? Sepertinya asumsi dari pertanyaan-pertanyaan ini masih terlalu dini. Karena masih ada mekanisme pemberian insentif kedua di sistem Bitcoin.
2. Transaction Fees (Biaya Transaksi)
Mekanisme pemberian insentif kedua disebut dengan biaya tansaksi (Transaction fees). Yang dimaksud disini adalah, para pencipta transaksi dapat memilih untuk memasukkan biaya transaksi. Dengan membuat total output nilai transaksi kurang dari total nilai input. Bagi siapa saja yang telah menciptakan blok pertama bisa menempatkan biaya transaksi. Misalkan ada sebuah simpul node yang menciptakan blok. Katakanlah pada blok tersebut ada kurang lebih 200 transaksi. Maka jumlah biaya dari 200 transaksi tersebut akan dibayarkan kepada address pembuat blok tersebut.
Biaya transaksi tersebut murni berupa sukarela. Namun berdasarkan pemahaman kita pada sistem Bitcoin, sebenarnya biaya tersebut bersifat wajib. Apalagi jika nanti reward blok makin berkurang, dan mulai habis masa berlaku reward blok sebesar 25 Bitcoin. Sehingga cukup penting bagi pengguna untuk memasukkan biaya transaksi untuk bisa mendapat kualitas layanan pemprosensan transaksi yang wajar.
Meski masih belum diketahui secara pasti bagaimana sistem Bitcoin akan berkembang nantinya, namun pemberian biaya transaksi ini sudah mulai berjalan saat ini. Hal tersebut akan cukup menarik sebagai sebuah penelitian lebih lanjut pada sistem Bitcoin nantinya. Namun hal itu masih menyisakan beberapa masalah dengan mekanisme konsensus seperti yang kita singgung diawal. Pertama, bagaimana kita bisa memilih simpul node secara acak. Kedua, sistem Bitcoin bisa berjalan tidak stabil jika pemberian insentif tersebut berlaku untuk semua yang menjalankan node Bitcoin. Karena keseluruhan node tersebut berharap bisa mendapatkan reward itu.
Dan yang ketiga adalah jika ada node yang tidak jujur dan berusaha menumbangkan proses konsensur dengan melakukan Sybil Attack. Seperti yang telah digambarkan pada pembahasan sebelumnya tentang konsensus tanpa identitas. Untuk mengatasi ketiga keterkaitan permasalahan ini, maka dibutuhkan sebuah jembatan alternatif yang bisa muncul sebagai solusi.
Proof of Work
Ketiga permasalahan diatas saling berkaitan satu sama lain. Dan ketiganya juga bisa diselesaikan dengan satu hal yang sama. Yang disebut dengan proof of work (bukti kerja). Hal yang mendasari adanya ide tentang proof of work ini sebagai upaya untuk bisa melakukan pendekatan terhadap metode pemilihan node secara acak. Sebagai gantinya dengan pemilihan node berdasarkan sumber dayanya. Dengan harapan tidak ada yang akan memonopoli.
Sebagai contoh misalnya sumber daya itu adalah daya komputansi. Maka sumber daya tersebutlah yang menjadi sistem proof of work. Sedangkan alternatif lain adalah berupa proporsi kepemilikan mata uang digital. Atau yang disebut dengan proof of stake (bukti kepemilikian saham berupa mata uang digital). Meski proof of stake ini tidak digunakan dalam sistem Bitcoin, namun dengan bukti kepemilikan ini bisa dipakai sebagai alternatif yang sah. Selain itu, model alternatif ini juga telah dipakai di beberapa mata uang digital lain.
Selanjutnya mari mencoba untuk mengetahui lebih lanjut bagaimana cara yang lebih baik untuk bisa memilih node. Pemilihan node tersebut diharapkan bisa sebanding dengan daya komputansinya. Bisa jadi dengan cara ini akan memungkinkan node bersaing satu sama lain dengan menggunakan daya komputasinya. Sehingga akan bisa menghasilkan pemilihan node secara otomatis sesuai dengan proporsinya.
Dalam Bitcoin, pencapaian proof of work ini dilakukan dengan memecahkan teka-teki hash (hash puzzle). Dalam pembuatan blok baru, saat node mengusulkan blok baru diperlukan sebuah nomor, atau nonce. Ketika node tersebut menggabungkan nonce, hash sebelumnya dan daftar transaksi yang ada pada blok itu bisa diambil keseluruhan hash dan stringnya.
Sehingga output hash tersebut bisa menghasilkan angka yang lebih kecil, kaitannya dengan besarnya ruang output fungsi hash. Masih ingat kan tentang pembahasan ruang input dan output pada fungsi hash yang telah dibahas pada bahasan fungsi hash kriptografi? Jika belum, bisa dilihat lagi relasinya kenapa output hash ini harus bisa menghasilkan output yang lebih kecil dari besarnya ruang input fungsi hash pada bahasan tentang Fungsi Hash.
Mari kita lanjutkan. Karena output hash tersebut lebih kecil dari besarnya ruang input fungsi hash, maka bisa dikatakan bahwa ruang target output dalam nilai berapapun akan jatuh dibawah nilai target tertentu. Dalam hal ini, nonce harus memenuhi pertidaksamaan berikut:
(nonce || prev_hash || tx || tx || … || tx) arget H < target
Umumnya blok yang diusulkan oleh node akan berisi serangkaian transaksi. Selain itu blok juga berisi pointer hash yang menunjuk pada blok berikutnya. Maka sekarang blok tersebut juga membutuhkan sebuah nonce. Idenya adalah dengan membuatnya menjadi cukup sulit saat berusaha menemukan nonce yang bisa memenuhi sifat yang ini.
Caranya dengan melakukan hashing seluruh blok itu, termasuk juga nonce. Proses ini akan menghasilkan suatu jenis output. Sementara jika fungsi hash telah memenuhi sifat puzzle-friendliness seperti pada bahasan sebelumnya, maka satu-satunya cara untuk bisa memecahkan puzlle itu adalah dengan hanya mencoba nonce satu persatu hingga akhirnya berhasil.
Terlebih lagi jika ruang target ini hanya ada satu persen saja dari keseluruhan ruang output. Sehingga node harus mencoba kurang lebih 100 nonce sebelum akhirnya bisa berhasil dan beruntung. Kenyataannya, ruang ukuran target ini tidak lebih besar dari satu persen ruang output. Maka nilai nonce akan selalu jauh lebih kecil.
Hash Puzzle ini bisa bekerja dengan baik, serta telah memenuhi persyaratan untuk bisa memilih simpul node secara acak. Malah node bekerja secara independen saat mengkomputasi hash puzzle tersebut sepanjang waktu. Kadangkala salah satu dari mereka akan beruntung dan bisa menemukan nonce secara acak. Bagi node yang beruntung, maka ia bisa mengusulkan blok baru tersebut untuk dimasukkan ke dalam blockchain.
Singkatnya, cara-cara itulah yang digunakan Bitcoin untuk mencapai desentralisasi. Tidak ada yang bisa memutuskan node manakah yang akan bisa mengusulkan blok berikutnya.
- Komputasi Harus Dilakukan Dengan Cukup Rumit
Ada tiga fungsi penting dari pemecahan Hash puzzle. Pertama bahwa harus cukup sulit untuk dikomputasi. Mengapa? Karena seiring dengan waktu akan bervariasi tingkatan kesulitannya. Pada akhir tahun 2014 lalu, tingkat kesullitannya adalah sekitar 1020 hash per blok. Dengan kata lain, ukuran ruang target hanyalah 1/1020 dari ukuran ruang output fungsi hash.
Jumlah tersebut cukup banyak untuk dikomputasi. Karena itu, hanya beberapa node saja yang akan bisa bersaing dan menyelesaikan proses pembuatan blok. Proses ini akan terus dilakukan berulang-kali, mencoba memecahkan hash puzzle. Selanjutnya istilah untuk menggambarkan proses ini disebut dengan Bitcoin Mining (menambang Bitcoin). Dan selanjutnya node atau para partisipan yang turut dalam proses ini disebut dengan istilah Miners (para penambang).
- Menentukan Parameter Biaya
Sifat kedua adalah bagaimana untuk bisa menentukan parameter biaya. Namun bukan menjadi biaya yang konstan sepanjang waktu. Cara yang memungkinkan adalah bahwa semua node dalam jaringan peer-to-peer Bitcoin akan secara otomatis menghitung ulang target. Target disini adalah ukuran ruang target sebagai bagian kecil dari ruang output, pada setiap 2016 blok yang telah dicapai.
Mereka menghitung ulang target sedemikian rupa, sehingga rata-rata blok yang bisa diproduksi memakan waktu kurang lebih 10 menit. Dengan jangka waktu tersebut, blok sejumlah 2016 akan bisa diselesaikan dalam waktu dua minggu. Dengan kata lain, dalam dua minggu berikutnya, mereka akan kembali mengulang dan mengkalkulasi lagi targetnya.
Coba kita perdalam lagi maksudnya. Jika anda sebagai seorang penambang, dan anda telah menginvestasikan sejumlah uang untuk bisa mendapat peralatan menambang Bitcoin, sementara dalam ekosistem pertambangan secara keseluruhan akan tumbuh dan berkembang. Lebih banyak penambang lain yang akan ikut serta. Atau bisa juga beberapa produsen mengembangkan perangkat menambang dengan cepat. Sehingga dalam periode dua minggu tersebut, tentu jumlah blok yang akan ditemukan menjadi lebih sedikit.
Karena itulah node secara otomatis akan menyesuaikan target, sementara pekerjaan penambang untuk bisa menemukan blok menjadi kian meningkat. Maka jika anda memutuskan untuk menginvestasikan sejumlah uang dalam jumlah yang tetap untuk perangkat menambang, tingkat rata-rata anda untuk bisa menemukan blok sebenarnya juga bergantung pada apa yang telah dilakukan oleh penambang lainnya.
Sebagai contoh, Nita berusaha untuk bisa memenangkan blok berikutnya. Probabilitas Nita dalam pertambangan itu adalah setara dengan daya hash yang dimiliki. Katakanlah jika Nita memiliki perangkat menambang dengan daya kurang lebih 0,1 persen dari total daya hash, maka Nita akan menemukan satu dari setiap 1.000 blok.
Lalu apa tujuan adanya penyesuaian ini? Sementara mengapa harus mempertahankan waktu 10 menit? Alasannya cukup mudah. Jika terdapat blok yang dekat secara bersamaan, maka akan menjadi tidak efektif. Sehingga akan menjadi kurang optimal dalam memasukkan lebih banyak transaksi dalam satu blok. Hal ini menandakan bahwa sebenarnya tidak ada yang istimewa pada angka 10 ini. Dalam hal ini angka 10 yang dimaksud adalah jangka waktu 10 menit. Sehingga meski diturunkan dari 10 menit menjadi 5 menit juga tidak akan berpengaruh secara signifikan, dan sistem akan tetap baik-baik saja.
Ada banyak perbedaan pendapat mengenai jumlah ini, namun kebanyakan orang banyak yang setuju mengapa harus ada jumlah waktu yang tetap. Karena hal tersebut tidak bisa dibiarkan turun tanpa adanya batasan. Itulah sebabnya mengapa Bitconn memiliki fitur penghitungan otomatis. Perumusan parameter biaya dan proof of work ini akan selanjutnya merumuskan asumsi tentang keamanan. Pada akhirnya kita mengetahui bahwa jika ada banyak serangan dalam sistem, mayoritas penambang dengan pertimbangan daya hash yang mengikuti protokol akan mengatasinya. Hal ini bisa dikatakan akan menjadi solusi karena banyak penambang yang akan berkompetisi untuk bisa mengusulkan blok berikutnya. Sehingga setidaknya 50 persen node akan bisa bertindak dan berperilaku jujur. Seperti yang juga telah disebutkan di awal.
Mari kita lanjutkan pembahasannya kembali. Dalam memecahkan teka-teki hash dilakukan dengan menggunakan probabilitas. Karena tidak ada yang bisa memprediksi nonce. Secara matematis, proses ini disebut dengan percobaan Bernouli (Bernoulli trials). Percobaan Bernouli ini adalah sebuah eksperimen yang menghasilkan dua hasil yang paling memungkinkan. Sedangkan pada setiap probabilitas yang dihasilkan dilakukan secara berturut-turut.
Disini, hasil dari percobaan itu baik itu lebih jauh atau lebih dekat dengan target, asumsi fungsi hash akan tetap bersifat acak. Probabillitas hasil percobaan tersebut adalah tetap. Biasanya, node akan mencoba dengan banyak nonce yang akan diujicobakan. Sedangkan proses itu bisa juga dilakukan dengan melakukan proses probabilitas kontinyu atau yang disebut dengan proses Poisson. Proses ini adalah proses dimana peristiwa terjadi secara idependen pada tingkat rata-rata yang konstan dan tetap. Hasil dari semua itu adalah bahwa fungsi probabilitas akan menunjukkan adanya kepadatan yang memungkinkan secara relatif dari waktu. Hingga blok berikutnya bisa terlihat dan akhirnya bisa ditemukan.
Selanjutnya proses ini disebut dengan distribusi eksponen. Ada beberapa kemungkinan kecil bahwa blok bisa ditemukan. Blok berikutnya akan bisa ditemukan segera setelahnya. Bisa dikatakan, blok berikutnya akan ditemukan dalam jangka beberapa detik atau beberapa menit. Selain itu ada juga kemungkinan kecil bahwa akan memakan waktu yang lebih lama. Katakanlah kurang lebih selama satu jam untuk bisa menemukan blok berikutnya.
Namun secara keseluruhan, jaringan akan secara otomatis menyesuaikan kesulitannya. Sehingga waktu antar blok yang berhasil ditemukan bisa dipertahankan timing rata-ratanya. Dalam jangka yang panjang adalah 10 menit. Jika anda adalah seorang penambang, mungkin anda akan sangat tertarik untuk menghitung berapa lama yang dibutuhkan untuk bisa menemukan sebuah blok. Penghitungan tersebut bisa diwakili dengan persamaan berikut:
Maksudnya disini adalah, jika anda memiliki 0,1 persen dari total daya komputansi di jaringan, maka dengan persamaan ini akan diketahui bahwa anda akan bisa menemukan blok setiap 10.000 menit (kurang lebih satu minggu). Pecahan daya komputansi pada persamaan tersebut adalah prosentase daya komputansi anda dibandingkan dengan total daya komputansi dalam jaringan. Sehingga tidak hanya waktu penyelesaian saja yang akan meningkat, tetapi varian ditemukan blok antar blok juga akan menjadi meningkat. Inilah beberapa implikasi yang sempat kita singgung diawal.
- Trivial to Verify
Ketiga, fungsi penting dari proof of work adalah Trivial to Verify. Maksudnya disini adalah bahwa untuk memverifikasi node yang telah mengkomputansi proof of work dengan benar menjadi hal yang sepele. Meskipun rata-rata node akan melakukan 1020 percobaan untuk bisa menemukan nonce, dan bisa membuat hash blok jatuh dibawah target. Selanjutnya nonce tersebut harus dipublish sebagai bagian dari blok. Maka menjadi sepele bagi node lain untuk bisa melihat isi blok tersebut. Karena mereka melakukannya bersama-sama. Dan juga telah memverifikasi, bahwa output kurang dari target.
Hal ini menjadi sifat yang penting. Nonce, akan memungkinkan kita untuk membuang jauh-jauh sentralisasi. Sehingga kita tidak memerlukan otoritas terpusat untuk memverifikasi bahwa para penambang telah melakukan pekerjaan mereka dengan benar. Semua penambang atau node akan bisa secara instan memverifikasi bahwa sebuah blok telah berhasil ditemukan oleh penambang lain, dan juga telah memenuhi sifat proof of work.
Sekarang kita telah mengetahui gambaran keseluruhan tentang adanya Insentif dan Proof of Work dalam sistem Bitcoin. Dan mengetahui mengapa diperlukan Insentif dan Proof of Work tersebut. Pembahasan selanjutnya akan memperbicangkan secara teknis kelanjutan keseluruhan proses dari pembahasan sebelumnya.