Bagaimana Cara Kerja Bitcoin?

· 10 min read

Bitcoin adalah konsep mata uang digital yang diperkenalkan oleh sosok legendaris dan penuh teka-teki, Satoshi Nakamoto, pada 2009, menggunakan teknologi blockchain sebagai infrastruktur dan bekerja secara anti-sentral dari orang ke orang. Whitepaper yang menjelaskan konsep ini dan ditulis oleh Nakamoto wajib dibaca siapa pun yang ingin memahami Bitcoin dan cryptocurrency secara umum. Whitepaper ini tidak hanya menjelaskan Bitcoin sebagai konsep, tetapi juga menjelaskan bagaimana sistem toleransi kesalahan Bizantium (Byzantine fault tolerance) dapat bekerja di lingkungan yang terdesentralisasi.

Pertama-tama, siapa pun yang tertarik pada Bitcoin harus tahu bahwa faktor terbesar di balik terwujudnya konsep Bitcoin di dunia nyata adalah teknologi blockchain, dan ia perlu memahami bagaimana teknologi ini bekerja.

Apa itu blockchain?

Blockchain adalah rantai blok yang masing-masing berisi nilai data, dan tidak diawasi atau dikelola oleh otoritas pusat mana pun. Rantai informasi ini diamankan secara kriptografis dan tidak bisa dibungkam berkat strukturnya yang terdesentralisasi. Blockchain pada dasarnya memakai dua struktur data: Pointer dan Linked List.

Pointer

Pointer adalah variabel yang menunjukkan letak variabel lain di dalamnya. Dalam kondisi normal, variabel dalam pemrograman berisi data. (Pada contoh int a = 10, variabel integer a memiliki nilai 10.) Pointer, sebaliknya, tidak menyimpan nilai sebagai data, melainkan menunjuk ke lokasi variabel yang menyimpan data tersebut.

Linked List

Linked list adalah salah satu unit terpenting dalam struktur data dan kurang lebih bentuknya seperti ini.

Sebuah urutan blok, yang masing-masing berisi data tertentu dan terhubung ke blok berikutnya melalui pointer. Variabel pointer berisi alamat node berikutnya dan dengan demikian menyediakan koneksinya. Seperti yang kita lihat pada node terakhir, pointer di ujung tidak berisi data apa pun.

Poin pentingnya, setiap pointer berisi alamat blok berikutnya. Lalu di mana pointer untuk blok pertama? Blok pertama disebut genesis block dan pointer-nya berada di dalam sistem.

Hash pointer adalah pointer yang berisi hash dari blok sebelumnya.

Hash adalah proses yang mengambil data dengan panjang berapa pun dan menghasilkan keluaran dengan panjang yang sama, apa pun isi datanya, melalui fungsi tertentu. Dalam kasus Bitcoin, proses transfer diambil sebagai data dan diolah dengan algoritma SHA-256 untuk menghasilkan keluaran dengan panjang tetap. Berapa pun panjang data yang dimasukkan, algoritma SHA-256 selalu menghasilkan keluaran sepanjang 256 bit.

Blockchain dalam bentuk paling sederhananya adalah linked list seperti ditunjukkan di bawah.

Blockchain adalah linked list yang setiap bloknya berisi data dan sebuah hash pointer yang menunjuk ke blok sebelumnya. Lalu, apa itu hash pointer? Hash pointer sangat mirip dengan pointer biasa, tetapi selain berisi informasi alamat blok sebelumnya, ia juga berisi hasil hash dari data di blok sebelumnya. Perbedaan kecil inilah yang membuat teknologi blockchain begitu aman.

Mari kita andaikan sejenak seorang penyerang ingin menyerang blok 3 dan mengubah data di dalamnya. Karena sifat fungsi hash, perubahan sekecil apa pun pada data akan tercermin sebagai perbedaan yang luar biasa besar pada hasilnya. Perubahan terkecil pada data di blok 3 akan mengubah hasil hash yang tersimpan di blok 2, perubahan di blok 2 akan memengaruhi hasil hash di blok 1, sehingga seluruh rantai harus diubah — dan itu mustahil. Inilah metode yang membuat blockchain tak bisa dibungkam.

Apa itu Mining?

Mining adalah proses yang diperlukan untuk menciptakan bitcoin baru. Mining Bitcoin bekerja dengan prinsip Proof of Work (POW). Sederhananya, memecahkan sebuah masalah harus sangat sulit, tetapi begitu Anda memecahkannya, solusi Anda harus bisa dibuktikan benar dengan sangat mudah.

Mari kita pahami dulu mengapa cryptocurrency membutuhkan sistem semacam ini sebelum Bitcoin menggunakan POW sebagai konsep.

Sebelum Bitcoin, berbagai mata uang digital pernah diciptakan, tetapi jika sebuah jaringan anti-sentral dan orang-ke-orang dibuat di lingkungan digital, masalah terbesarnya adalah persoalan logika yang disebut Byzantine Generals Problem. Karena Nakamoto berhasil mengatasi masalah ini di Bitcoin dengan POW, Bitcoin bisa memulai hidupnya dan terus berjalan dengan kuat.

Byzantine Generals Problem

Mari kita lanjutkan dengan menjelaskan Byzantine Generals Problem, yang juga sering dipakai dalam kajian akademis. Para jenderal Bizantium yang berencana menyerang kota musuh menghadapi dua masalah:

Para jenderal berada sangat berjauhan satu sama lain, sehingga mustahil pengepungan diarahkan oleh satu otoritas pusat.

Musuh juga memiliki pasukan yang kuat, sehingga serangan harus dilakukan oleh para jenderal secara bersamaan agar keberhasilan bisa dicapai.

Selagi pasukan pengepung mengelilingi kota, tiap pasukan meneruskan pesan perintah dari pasukan di sebelah kanannya ke pasukan di sebelah kirinya, dan komunikasi dijaga dengan cara ini. Namun masalahnya, ketika datang perintah "kita serang hari Rabu", ada pasukan yang mungkin belum siap dan mengirim balik pesan "jangan, kita serang hari Jumat". Atau, prajurit pembawa pesan bisa ditangkap musuh, atau isi pesan yang dibawanya bisa diubah. Di lingkungan yang tidak aman semacam itu, serangan apa pun akan gagal jika koordinasi penuh tidak tercapai.

Masalah logika yang sama berlaku untuk jaringan blockchain, yang menjadi infrastruktur cryptocurrency seperti Bitcoin. Ini adalah jaringan yang luar biasa besar — bagaimana kita bisa memercayai setiap orang di jaringan? Kita mungkin ingin mengirim 4 ether kepada seseorang, tetapi bagaimana kita yakin tidak ada pihak jahat yang mengubah jumlah itu menjadi 40 ether?

Satoshi Nakamoto berhasil mengatasi masalah logika ini dengan memperkenalkan protokol proof-of-work. Mari kita lihat cara kerjanya:

Ketika pasukan pengepung ingin menyampaikan pesan "kita menyerang hari Senin" ke pasukan di sebelah kirinya, ia harus mengikuti langkah-langkah berikut;

Pertama, pesan asli diberi nilai acak yang dibuat sekali pakai bernama "nonce". Nonce bisa berupa nilai apa pun dalam sistem bilangan heksadesimal.

Kemudian, pesan yang sudah diberi nilai nonce itu dilewatkan ke fungsi hash untuk memperoleh sebuah hasil. Dalam serangan imajiner kita ini, anggaplah para komandan sepakat untuk saling membagikan secara aman hasil fungsi hash yang lima digit pertamanya nol.

Jika hasil fungsi hash sesuai dengan yang diinginkan, mereka meneruskan pesan ke jenderal berikutnya. Jika hasilnya tidak sesuai, nilai nonce yang diberikan harus diubah secara acak dan prosesnya diulang sampai diperoleh hasil dengan lima digit pertama nol. Sistem ini membutuhkan daya komputasi dalam waktu yang luar biasa lama.

Jika prajurit pembawa pesan ditangkap atau isi pesan diubah, hasil hash akan berubah drastis karena karakteristik fungsi hash. Saat meninjau pesan, para jenderal akan menyadari bahwa lima digit pertama hasil hash-nya bukan nol dan akan membatalkan serangan.

Meski begitu, walau sangat kecil kemungkinannya, setiap fungsi hash bisa menghasilkan tabrakan (collision). Secara teori, ketika A dan B adalah dua input terpisah, H(A) dan H(B) seharusnya tidak mungkin menghasilkan H(A) = H(B), tetapi dalam penerapan di dunia nyata, tidak ada fungsi hash yang sepenuhnya kebal tabrakan.

Nah, dalam probabilitas kecil itu, apa yang terjadi jika prajurit pembawa pesan ditangkap, pesan diubah, dan terjadi serangan yang membuat hasil hash keluar sesuai keinginan para jenderal? Tentu prosesnya memakan waktu, tetapi bukan tidak mungkin. Untuk melawannya, para jenderal memakai keunggulan jumlah mereka.

Masalah ini bisa diatasi dengan tiga jenderal mengirim pesan ke kiri secara bersamaan, alih-alih satu jenderal mengirim pesan dari kanan ke kiri secara bergiliran. Jika para jenderal yang membuat pesan masing-masing menyusun sebuah pesan kumulatif, melewatkan pesan ini ke fungsi hash, memberi nilai nonce pada hasilnya, lalu memasukkannya lagi ke fungsi hash, kali ini enam digit pertama hasilnya harus nol.

Pada tahap ini, menemukan nilai nonce pesan tersebut dan mengubah isi pesannya akan menjadi pemborosan waktu yang serius.

Sebaliknya, tugas para jenderal penerima pesan itu mudah; mereka hanya perlu menambahkan nilai nonce yang diberikan pada hasil hash dan membandingkan hasilnya. Langkah ini adalah proses yang sangat cepat dan sederhana. Ide inilah mekanisme kerja prinsip proof-of-work.

Menemukan nilai nonce untuk hash yang sesuai membutuhkan daya komputasi dan waktu yang sangat besar.

Namun, memeriksa hasilnya dan menentukan ada tidaknya niat jahat hanya butuh waktu sangat singkat.

Beginilah cara miner menerapkan protokol proof-of-work dalam mining Bitcoin. Mereka memakai daya komputasinya untuk memecahkan masalah kriptografi di hadapan mereka dan menciptakan blok berikutnya. Di blockchain Bitcoin, blok tercipta setiap 10 menit.

Bagaimana transfer terjadi di jaringan Bitcoin?

Misalkan John ingin mengirim sejumlah bitcoin kepada Dave. Bagaimana transfer ini terjadi? Transfer Bitcoin bekerja sangat berbeda dari transfer uang fiat. Jika John ingin memberikan 10 USD kepada Dave, ia tinggal mengeluarkan lembaran 10 USD dari dompetnya secara fisik, memberikannya kepada Dave, dan transfer pun selesai. Tapi untuk bitcoin lain ceritanya — ia bukan sesuatu yang kita miliki secara fisik. Yang kita miliki adalah bukti bahwa kita memiliki bitcoin.

Ada dua hal yang harus kita ketahui dan perhatikan;

Miner mengonfirmasi dan mengamankan transaksi transfer dengan data yang mereka tempatkan di blok yang mereka buat. Mereka juga memungut biaya untuk layanan ini.

Kalau kita lihat mata uang fiat, kita tidak mengetahui dan tidak melacak riwayat lembaran uang yang ada di tangan kita. Tidak ada cara praktis untuk melakukannya. Namun, setiap transaksi transfer bitcoin tercatat di jaringan Bitcoin.

Berbekal informasi ini, mari kita amati transfer bitcoin antara John dan Dave. Transfer ini punya dua bagian: input dan output.

Agar John bisa melakukan transfer ini, ia harus memiliki bitcoin dari transfer-transfer sebelumnya. Seperti disebutkan sebelumnya, semua transfer tercatat di jaringan Bitcoin.

John perlu mengumpulkan bitcoin dari transfer yang pernah ia terima dengan nama TR(0), TR(1), dan TR(2), lalu membuat transfer baru bernama TR(INPUT) dan mengirimkannya kepada Dave. Di sini TR(INPUT) menjadi data input untuk transfer baru tersebut.

Kurang lebih seperti itulah wujud transfer bitcoin dilihat dari sisi input.

Data output secara sederhana berisi jumlah bitcoin yang harus dimiliki Dave setelah transfer baru itu beserta sisa kembaliannya, yang kemudian dikirim kembali kepada John sebagai nilai TR(INPUT) untuk transfer berikutnya.

Proses ini mencakup satu hasil output jika bagian kembalian tidak kita hitung, tetapi transfer dengan banyak hasil output juga dimungkinkan. Uraian ini sekadar menunjukkan bagaimana sebuah transfer terjadi di jaringan Bitcoin. Namun, agar semuanya berlangsung sukses, ada syarat-syarat yang harus dipenuhi.

Syarat yang harus dipatuhi transfer:

TR(INPUT) > TR(OUTPUT). Transfer input harus selalu lebih besar daripada transfer output. Di setiap transfer, selisih antara input dan output (output + kembalian) dibayarkan kepada miner sebagai biaya. Jadi, Biaya Transaksi Mining = TR(INPUT)-(TR(OUTPUT)+KEMBALIAN)

Di sisi input, harus berlaku TR(0)+TR(1)+TR(2)=TR(INPUT). Dengan kata lain, John harus punya cukup bitcoin untuk dikirim kepada Dave. Jika bitcoin-nya tidak cukup untuk memproses transaksi, transfer ditolak oleh para miner.

Selanjutnya Dave harus membuktikan bahwa dialah pemilik bitcoin yang dikirim kepadanya. John telah mengenkripsi transfer bitcoin-nya dengan public key milik Dave. Dave hanya bisa membuka kunci ini dengan private key miliknya.

Sementara itu, John harus membuktikan bahwa ia punya cukup bitcoin untuk dikirim kepada Dave. Ia melakukannya dengan menandatangani transfer yang ingin dilakukan menggunakan private key miliknya sendiri. Siapa pun bisa membukanya dengan public key John dan memverifikasi bahwa ia benar-benar memiliki jumlah bitcoin yang dibutuhkan. Bukti ini disebut data signature.

Data input (termasuk data signature) dan data output dijumlahkan lalu dilewatkan ke algoritma hash SHA-256. Keluaran algoritma inilah yang disebut transfer.

Ada satu hal yang perlu diingat: agar sebuah transfer bitcoin terjadi, miner yang menambang blok harus benar-benar memasukkan transfer itu ke dalam bloknya. Miner yang menambang blok berhak menerima biaya untuk semua transfer yang ia masukkan ke blok tersebut. Seiring jumlah transfer meningkat, transfer harus menunggu blok baru muncul karena blok-blok yang ada sudah terisi penuh. Bahkan, orang yang tidak mau menunggu membayar biaya mining lebih tinggi agar transfernya menonjol dan lebih menarik bagi miner.

Dari sinilah muncul prinsip replace-by-fee. Cara kerjanya sederhana: meskipun John mengirim 5 BTC kepada Dave, transfer itu tidak pernah masuk ke blok dan tetap menggantung karena biaya mining-nya terlalu rendah. Tidak ada cara untuk membatalkan transaksi ini karena bitcoin yang sudah dibelanjakan tidak bisa dipulihkan. Namun, jika John melakukan transfer ke alamat yang sama untuk jumlah BTC yang sama dengan biaya mining lebih tinggi, transfer lama dianggap tidak valid dan yang baru menunggu diproses.

Masa depan Bitcoin dan cryptocurrency secara umum penuh dengan kemungkinan tak terhitung. Aplikasi blockchain tak mengenal batas, dan proyek-proyek di bidang ini makin sukses dan makin aman dari hari ke hari.

Dalam perjalanan dari mata uang komoditas ke penggunaan logam mulia seperti emas dan perak, lalu ke uang kertas dan mata uang nominal, gagasan uang di lingkungan virtual sebenarnya bukan hal yang sangat baru — tetapi baru di masa kini gagasan itu bisa benar-benar diterapkan.

Menurut sebagian orang, ia adalah sebuah kelompok di CIA; menurut yang lain, ia alien, atau mungkin memang benar-benar seorang cyberpunk bernama Satoshi Nakamoto. Siapa pun dia, ia meninggalkan kita sendirian untuk memutuskan langkah berikutnya atas ide dan praktiknya yang akan sepenuhnya mengubah cara kita memandang aset dan cara menyimpannya. Ia membuka jalan bagi lahirnya ide-ide yang lebih maju dari miliknya sendiri dan meyakinkan dunia untuk memiliki cara pandang yang sama sekali berbeda.

Satoshi tidak lupa menyembunyikan sebuah pesan di genesis block — blok pertama — yang ia tulis sebagai hard code. Dengan mencantumkan tanggal 3 Januari 2009, ia melampirkan headline UK Times hari itu tentang bank-bank yang bertanggung jawab atas krisis ekonomi dunia: "Minister is on the verge of second bailout for banks". Ia kemungkinan sedang menyindir sistem perbankan federal reserve lewat kata-kata ini. Tidak diketahui mengapa Satoshi membuat alamat yang tidak bisa dibelanjakan ini di blok awal. Sejauh ini 16 BTC telah dikirim ke alamat tersebut secara anonim, sehingga total suplai 21 juta bitcoin sebenarnya tidak akan pernah benar-benar terwujud.

Bitcoin hanya butuh 9 tahun untuk mencapai level yang membuat bank-bank sentral dunia gentar, dan perjalanannya masih panjang.

cara kerja bitcoin apa itu blockchain mining bitcoin satoshi nakamoto transfer bitcoin proof of work