Kelahiran bitcoin dan blockchain melibatkan dua masalah lama dalam mata uang digital: Masalah Pembelanjaan Ganda dan Masalah Jenderal Bizantium
Dibandingkan dengan mata uang fisik dalam kehidupan sehari-hari, kesulitan terbesar dalam mengembangkan uang elektronik adalah bagaimana mengatasi “trust problem”. Alasan mengapa kerang dan logam mulia paling awal dapat digunakan sebagai padanan umum adalah karena mereka memiliki kelangkaan tertentu, dan uang kertas fisik selanjutnya mengandalkan kredibilitas negara untuk menyelesaikan masalah kepercayaan.
Mata uang fisik ini memiliki nilai dan mampu menyelesaikan transfer nilai secara instan. Di era digital, konten apa pun pada dasarnya adalah kombinasi kode 0 dan 1, dan uang digital dapat disalin menjadi dua salinan dan dirilis ke dua penerima berbeda pada saat yang bersamaan, yang disebut "masalah pembelanjaan ganda". Internet itu sendiri tidak memiliki kemampuan untuk merepresentasikan nilai, sehingga orang sebelumnya harus menggunakan sistem akun terpusat dengan server terpusat, seperti bank, untuk menggunakan kartu kredit dan jenis uang elektronik lainnya.
Tetapi apakah ada pihak ketiga yang benar-benar tepercaya adalah sebuah pertanyaan. Ada risiko satu titik kegagalan, seperti serangan pada server terpusat, dan bahkan pemerintah dapat mengumpulkan “Seigniorage” dengan mengeluarkan uang secara berlebihan. Solusi yang diusulkan Bitcoin adalah meninggalkan perantara pihak ketiga dan membangun buku besar terdistribusi di mana setiap orang berada di pusat buku besar.
Pertimbangkan sebuah desa di mana hanya ada satu "kepala" yang bertanggung jawab menyimpan buku besar, dan semua pengeluaran anggota desa dicatat oleh kepala desa, yang merupakan pusat dari sistem buku besar. Sistem dapat berjalan dengan baik jika kepala desa dapat dipercaya; namun, jika kepala suku, yang merupakan pusat dari sistem, adalah seorang pencuri, mungkin akan sulit bagi orang lain untuk mendeteksinya.
Pertimbangkan desa "terdesentralisasi" di mana setiap anggota memegang buku besar yang identik. Ketika seorang anggota ingin melakukan perubahan pada buku besar, dia harus memberi tahu anggota lain melalui “siaran” sehingga mereka dapat mengonfirmasi entri dan menyalinnya ke buku besar mereka sendiri. Proses transaksi belum selesai sampai semua anggota mengkonfirmasi dan memperbarui buku besar mereka. Ini pada dasarnya adalah bagaimana jaringan Bitcoin beroperasi.
Bitcoin menemukan sistem digital jenis baru untuk mencatat transaksi aset yang dikenal sebagai buku besar terdistribusi. Berbeda dengan perekaman terpusat, di mana data disimpan di server terpusat, blockchain adalah basis data terdesentralisasi, dengan setiap node dalam jaringan bertindak sebagai pemegang dan pengelola basis data.
Bitcoin adalah aplikasi blockchain skala besar pertama, dan blockchain adalah fondasi yang mendasari Bitcoin.
Sistem Bitcoin dapat dibagi menjadi tiga lapisan: lapisan data, lapisan protokol, dan lapisan aplikasi. Mari kita mulai dengan “buku besar” (lapisan data) yang dimiliki setiap anggota sistem Bitcoin.
Blockchain pada dasarnya adalah buku besar terdistribusi yang dikelola oleh semua node dalam jaringan, dengan setiap node menyimpan seluruh data blockchain. "Rantai" blok yang disimpan oleh sebuah node adalah rantai blok yang terurut yang terhubung bersama, dan blok itu sendiri adalah struktur data yang tidak dapat diubah yang dikelola oleh algoritma Cryptographic Hash.
Fungsi hash (SHA-256 dan RipeMD160) adalah algoritme kriptografi penting dalam Bitcoin yang dapat mengonversi nilai input panjang arbitrer menjadi output nilai panjang tetap dengan fitur acak, bebas tabrakan. Dan sulit untuk menebak nilai input untuk fungsi hash dari outputnya. Perubahan kecil pada input dapat menghasilkan output yang sangat berbeda. Output dari fungsi hash dapat dengan mudah diturunkan dari input, tetapi menyimpulkan input dari output membutuhkan enumerasi brute-force, yang membutuhkan banyak waktu dan daya komputasi. Penggunaan berulang fungsi hash menyederhanakan dan menentukan struktur data Bitcoin.
Blok Bitcoin terdiri dari dua bagian: badan blok dan header blok. Badan blok berisi semua informasi transaksi di blok itu, yang di-hash beberapa kali untuk membentuk struktur yang dikenal sebagai pohon Merkle, yang membentuk badan blok. Pesan transaksi pertama pada masing-masing blok ini juga dikenal sebagai transaksi coinbase dan merupakan transaksi yang menghasilkan bitcoin baru dan memberikannya kepada penambang, sementara semua transaksi lainnya adalah transfer antar pengguna satu sama lain.
Transaksi ini menjalani beberapa operasi hashing untuk akhirnya sampai pada nilai yang disebut Merkle Hash, yang merupakan jumlah dari semua data transaksi. Hash Merkle, bersama dengan Nunce, stempel waktu, hash blok induk, dan data lainnya, merupakan header blok, dan menghitung nilai hash dari header blok bisa mendapatkan Block Hash dari blok ini. Karena header blok dari setiap blok berisi nilai hash dari blok induk, semua blok terhubung ke dalam sebuah rantai. Blok saling bertautan, dan setiap perubahan pada data blok akan menghasilkan perubahan pada hash blok, yang akan memutus rantai.
Setelah memperkenalkan "buku besar" (lapisan data) yang dipegang oleh setiap node, mari beralih ke lapisan konsensus Bitcoin, yang bertanggung jawab atas keamanan jaringan.
Sebelum mempelajari konsensus terdistribusi, penting untuk memahami masalah "Jenderal Bizantium".
Masalah Jenderal Bizantium berasal dari periode abad pertengahan ketika tentara Bizantium mengandalkan utusan untuk mengirimkan informasi karena wilayah Bizantium yang luas. Jika seorang pengkhianat dengan sengaja salah mengartikan informasi operasional atasan, itu akan menyebabkan rencana operasional yang tidak konsisten, yang mengakibatkan "Masalah Jenderal Bizantium".
Jaringan Bitcoin terdiri dari sejumlah node terdesentralisasi, yang masing-masing merupakan “korps” independen, otonom, dan setara. Setiap node dalam jaringan memiliki salinan unik dari data blockchain, dan mereka semua ingin menjadi yang pertama mengemas transaksi dan mendapatkan hadiah bitcoin. Jadi, node mana yang akan berhasil mendapatkan hak buku besar dan meyakinkan seluruh jaringan untuk mencapai konsensus untuk memodifikasi data blockchain?
Jawaban Bitcoin adalah mekanisme konsensus Proof-of-Work (PoW), umumnya dikenal sebagai "penambangan", yang merupakan proses komputasi digital yang dilakukan oleh node, di mana node pertama yang menemukan "jawaban" mendapatkan hak buku besar. Secara khusus, node perlu terus mencoba mengubah Nunce dari header blok, menghitung hash blok, dan akhirnya mendapatkan hash blok di mana beberapa bit pertama adalah nol.
Pada titik ini, nilai Nunce adalah jawaban dari pertanyaan tersebut. Setelah menemukan jawabannya, node tersebut akan menyiarkannya ke node jaringan lain, dan setelah memverifikasi jawabannya, node lain akan segera mengambil blok tersebut sebagai node induk baru dan melanjutkan operasi penambangan putaran berikutnya.
Itu menimbulkan masalah karena data membutuhkan waktu untuk disiarkan antar node, dan sangat mungkin bahwa dua atau lebih node menemukan jawaban teka-teki pada saat yang sama sebelum komunitas secara keseluruhan mencapai kesepakatan. Namun, karena dua node mengemas transaksi coinbase yang berbeda, ini menghasilkan dua blok valid yang berbeda. Karena urutan pensinyalan yang berbeda, node penambang akan beroperasi pada kedua rantai garpu. Pada titik ini, jaringan Bitcoin akan mengikuti “aturan rantai terpanjang,” memperlakukan rantai garpu dengan blok terbanyak sebagai satu-satunya blockchain yang diakui. Persaingan fork ini biasanya diselesaikan dalam waktu kurang dari 6 blok, dan semua transaksi pada rantai yang ditinggalkan lainnya dibatalkan.
Node Bitcoin dapat menyinkronkan pembaruan ke buku besar yang didistribusikan dengan menambang dan aturan rantai terpanjang untuk mencapai konsensus. Buku besar terdistribusi berbasis konsensus ini juga memungkinkan mata uang digital peer-to-peer seperti Bitcoin.
Mata uang elektronik tradisional menggunakan sistem akun terpusat di mana akun dibuat untuk setiap pengguna di server pusat, dan data saldo disimpan untuk semua akun. Setelah setiap transaksi, saldo akun bertambah atau berkurang dalam urutan kronologis. Bitcoin, di sisi lain, menggunakan model UXTO, yang merepresentasikan keluaran dari transaksi yang tidak terpakai.
Kriptografi asimetris digunakan untuk mengamankan transaksi bitcoin. Setiap pengguna Bitcoin harus memiliki sepasang kunci publik dan pribadi, mirip dengan akun dan kata sandi. Pengguna harus menandatangani data transaksi dengan kunci privat, dan mempublikasikan data transaksi, tanda tangan, dan kunci publik secara bersamaan. Namun, dalam setiap transaksi, pengguna tidak mentransfer saldo akun secara langsung, tetapi menggunakan "jumlah yang tidak terpakai" dari beberapa transaksi sebelumnya, yaitu UTXO.
Dalam sistem Bitcoin, tidak ada konsep akun atau saldo akun, hanya UTXO dari semua transaksi dalam catatan sejarah. Dompet Bitcoin dapat memindai data dari semua transaksi sebelumnya dan menghitung total UTXO dari alamat tertentu (yaitu, kunci publik) untuk menentukan saldo akun. Selanjutnya, saat transaksi dimulai, dompet bitcoin dapat secara otomatis mencocokkan UTXO dengan saldo yang tepat untuk menyelesaikan transfer.
Kelahiran bitcoin dan blockchain melibatkan dua masalah lama dalam mata uang digital: Masalah Pembelanjaan Ganda dan Masalah Jenderal Bizantium
Dibandingkan dengan mata uang fisik dalam kehidupan sehari-hari, kesulitan terbesar dalam mengembangkan uang elektronik adalah bagaimana mengatasi “trust problem”. Alasan mengapa kerang dan logam mulia paling awal dapat digunakan sebagai padanan umum adalah karena mereka memiliki kelangkaan tertentu, dan uang kertas fisik selanjutnya mengandalkan kredibilitas negara untuk menyelesaikan masalah kepercayaan.
Mata uang fisik ini memiliki nilai dan mampu menyelesaikan transfer nilai secara instan. Di era digital, konten apa pun pada dasarnya adalah kombinasi kode 0 dan 1, dan uang digital dapat disalin menjadi dua salinan dan dirilis ke dua penerima berbeda pada saat yang bersamaan, yang disebut "masalah pembelanjaan ganda". Internet itu sendiri tidak memiliki kemampuan untuk merepresentasikan nilai, sehingga orang sebelumnya harus menggunakan sistem akun terpusat dengan server terpusat, seperti bank, untuk menggunakan kartu kredit dan jenis uang elektronik lainnya.
Tetapi apakah ada pihak ketiga yang benar-benar tepercaya adalah sebuah pertanyaan. Ada risiko satu titik kegagalan, seperti serangan pada server terpusat, dan bahkan pemerintah dapat mengumpulkan “Seigniorage” dengan mengeluarkan uang secara berlebihan. Solusi yang diusulkan Bitcoin adalah meninggalkan perantara pihak ketiga dan membangun buku besar terdistribusi di mana setiap orang berada di pusat buku besar.
Pertimbangkan sebuah desa di mana hanya ada satu "kepala" yang bertanggung jawab menyimpan buku besar, dan semua pengeluaran anggota desa dicatat oleh kepala desa, yang merupakan pusat dari sistem buku besar. Sistem dapat berjalan dengan baik jika kepala desa dapat dipercaya; namun, jika kepala suku, yang merupakan pusat dari sistem, adalah seorang pencuri, mungkin akan sulit bagi orang lain untuk mendeteksinya.
Pertimbangkan desa "terdesentralisasi" di mana setiap anggota memegang buku besar yang identik. Ketika seorang anggota ingin melakukan perubahan pada buku besar, dia harus memberi tahu anggota lain melalui “siaran” sehingga mereka dapat mengonfirmasi entri dan menyalinnya ke buku besar mereka sendiri. Proses transaksi belum selesai sampai semua anggota mengkonfirmasi dan memperbarui buku besar mereka. Ini pada dasarnya adalah bagaimana jaringan Bitcoin beroperasi.
Bitcoin menemukan sistem digital jenis baru untuk mencatat transaksi aset yang dikenal sebagai buku besar terdistribusi. Berbeda dengan perekaman terpusat, di mana data disimpan di server terpusat, blockchain adalah basis data terdesentralisasi, dengan setiap node dalam jaringan bertindak sebagai pemegang dan pengelola basis data.
Bitcoin adalah aplikasi blockchain skala besar pertama, dan blockchain adalah fondasi yang mendasari Bitcoin.
Sistem Bitcoin dapat dibagi menjadi tiga lapisan: lapisan data, lapisan protokol, dan lapisan aplikasi. Mari kita mulai dengan “buku besar” (lapisan data) yang dimiliki setiap anggota sistem Bitcoin.
Blockchain pada dasarnya adalah buku besar terdistribusi yang dikelola oleh semua node dalam jaringan, dengan setiap node menyimpan seluruh data blockchain. "Rantai" blok yang disimpan oleh sebuah node adalah rantai blok yang terurut yang terhubung bersama, dan blok itu sendiri adalah struktur data yang tidak dapat diubah yang dikelola oleh algoritma Cryptographic Hash.
Fungsi hash (SHA-256 dan RipeMD160) adalah algoritme kriptografi penting dalam Bitcoin yang dapat mengonversi nilai input panjang arbitrer menjadi output nilai panjang tetap dengan fitur acak, bebas tabrakan. Dan sulit untuk menebak nilai input untuk fungsi hash dari outputnya. Perubahan kecil pada input dapat menghasilkan output yang sangat berbeda. Output dari fungsi hash dapat dengan mudah diturunkan dari input, tetapi menyimpulkan input dari output membutuhkan enumerasi brute-force, yang membutuhkan banyak waktu dan daya komputasi. Penggunaan berulang fungsi hash menyederhanakan dan menentukan struktur data Bitcoin.
Blok Bitcoin terdiri dari dua bagian: badan blok dan header blok. Badan blok berisi semua informasi transaksi di blok itu, yang di-hash beberapa kali untuk membentuk struktur yang dikenal sebagai pohon Merkle, yang membentuk badan blok. Pesan transaksi pertama pada masing-masing blok ini juga dikenal sebagai transaksi coinbase dan merupakan transaksi yang menghasilkan bitcoin baru dan memberikannya kepada penambang, sementara semua transaksi lainnya adalah transfer antar pengguna satu sama lain.
Transaksi ini menjalani beberapa operasi hashing untuk akhirnya sampai pada nilai yang disebut Merkle Hash, yang merupakan jumlah dari semua data transaksi. Hash Merkle, bersama dengan Nunce, stempel waktu, hash blok induk, dan data lainnya, merupakan header blok, dan menghitung nilai hash dari header blok bisa mendapatkan Block Hash dari blok ini. Karena header blok dari setiap blok berisi nilai hash dari blok induk, semua blok terhubung ke dalam sebuah rantai. Blok saling bertautan, dan setiap perubahan pada data blok akan menghasilkan perubahan pada hash blok, yang akan memutus rantai.
Setelah memperkenalkan "buku besar" (lapisan data) yang dipegang oleh setiap node, mari beralih ke lapisan konsensus Bitcoin, yang bertanggung jawab atas keamanan jaringan.
Sebelum mempelajari konsensus terdistribusi, penting untuk memahami masalah "Jenderal Bizantium".
Masalah Jenderal Bizantium berasal dari periode abad pertengahan ketika tentara Bizantium mengandalkan utusan untuk mengirimkan informasi karena wilayah Bizantium yang luas. Jika seorang pengkhianat dengan sengaja salah mengartikan informasi operasional atasan, itu akan menyebabkan rencana operasional yang tidak konsisten, yang mengakibatkan "Masalah Jenderal Bizantium".
Jaringan Bitcoin terdiri dari sejumlah node terdesentralisasi, yang masing-masing merupakan “korps” independen, otonom, dan setara. Setiap node dalam jaringan memiliki salinan unik dari data blockchain, dan mereka semua ingin menjadi yang pertama mengemas transaksi dan mendapatkan hadiah bitcoin. Jadi, node mana yang akan berhasil mendapatkan hak buku besar dan meyakinkan seluruh jaringan untuk mencapai konsensus untuk memodifikasi data blockchain?
Jawaban Bitcoin adalah mekanisme konsensus Proof-of-Work (PoW), umumnya dikenal sebagai "penambangan", yang merupakan proses komputasi digital yang dilakukan oleh node, di mana node pertama yang menemukan "jawaban" mendapatkan hak buku besar. Secara khusus, node perlu terus mencoba mengubah Nunce dari header blok, menghitung hash blok, dan akhirnya mendapatkan hash blok di mana beberapa bit pertama adalah nol.
Pada titik ini, nilai Nunce adalah jawaban dari pertanyaan tersebut. Setelah menemukan jawabannya, node tersebut akan menyiarkannya ke node jaringan lain, dan setelah memverifikasi jawabannya, node lain akan segera mengambil blok tersebut sebagai node induk baru dan melanjutkan operasi penambangan putaran berikutnya.
Itu menimbulkan masalah karena data membutuhkan waktu untuk disiarkan antar node, dan sangat mungkin bahwa dua atau lebih node menemukan jawaban teka-teki pada saat yang sama sebelum komunitas secara keseluruhan mencapai kesepakatan. Namun, karena dua node mengemas transaksi coinbase yang berbeda, ini menghasilkan dua blok valid yang berbeda. Karena urutan pensinyalan yang berbeda, node penambang akan beroperasi pada kedua rantai garpu. Pada titik ini, jaringan Bitcoin akan mengikuti “aturan rantai terpanjang,” memperlakukan rantai garpu dengan blok terbanyak sebagai satu-satunya blockchain yang diakui. Persaingan fork ini biasanya diselesaikan dalam waktu kurang dari 6 blok, dan semua transaksi pada rantai yang ditinggalkan lainnya dibatalkan.
Node Bitcoin dapat menyinkronkan pembaruan ke buku besar yang didistribusikan dengan menambang dan aturan rantai terpanjang untuk mencapai konsensus. Buku besar terdistribusi berbasis konsensus ini juga memungkinkan mata uang digital peer-to-peer seperti Bitcoin.
Mata uang elektronik tradisional menggunakan sistem akun terpusat di mana akun dibuat untuk setiap pengguna di server pusat, dan data saldo disimpan untuk semua akun. Setelah setiap transaksi, saldo akun bertambah atau berkurang dalam urutan kronologis. Bitcoin, di sisi lain, menggunakan model UXTO, yang merepresentasikan keluaran dari transaksi yang tidak terpakai.
Kriptografi asimetris digunakan untuk mengamankan transaksi bitcoin. Setiap pengguna Bitcoin harus memiliki sepasang kunci publik dan pribadi, mirip dengan akun dan kata sandi. Pengguna harus menandatangani data transaksi dengan kunci privat, dan mempublikasikan data transaksi, tanda tangan, dan kunci publik secara bersamaan. Namun, dalam setiap transaksi, pengguna tidak mentransfer saldo akun secara langsung, tetapi menggunakan "jumlah yang tidak terpakai" dari beberapa transaksi sebelumnya, yaitu UTXO.
Dalam sistem Bitcoin, tidak ada konsep akun atau saldo akun, hanya UTXO dari semua transaksi dalam catatan sejarah. Dompet Bitcoin dapat memindai data dari semua transaksi sebelumnya dan menghitung total UTXO dari alamat tertentu (yaitu, kunci publik) untuk menentukan saldo akun. Selanjutnya, saat transaksi dimulai, dompet bitcoin dapat secara otomatis mencocokkan UTXO dengan saldo yang tepat untuk menyelesaikan transfer.