Bitcoin Transaksi Duplikat: Sebuah Celah Menarik Namun Berisiko Sangat Kecil
Transaksi Bitcoin biasanya menggunakan output yang tidak terpakai dengan merujuk pada ID transaksi sebelumnya. Output ini hanya dapat digunakan sekali, jika tidak, akan menyebabkan pembayaran ganda, yang membuat Bitcoin kehilangan nilai. Namun, dalam sejarah Bitcoin, memang pernah terjadi dua set transaksi yang benar-benar identik. Situasi ini dapat terjadi karena transaksi coinbase tidak memiliki input transaksi, melainkan menghasilkan koin baru. Oleh karena itu, dua transaksi coinbase yang berbeda mungkin mengirimkan jumlah koin yang sama ke alamat yang sama, dengan cara membangun yang sepenuhnya identik, sehingga menghasilkan ID transaksi yang sama.
Dua kelompok transaksi yang berulang ini terjadi antara 14 hingga 15 November 2010, dengan durasi sekitar 16 jam. Kelompok pertama transaksi yang berulang terjepit di antara kelompok kedua. Kami mengklasifikasikan transaksi dengan ID yang diawali dengan d5d2 sebagai transaksi berulang pertama, meskipun itu pertama kali muncul di blockchain setelah transaksi berulang lainnya.
Munculnya transaksi yang duplikat menyebabkan kebingungan pada dompet dan penjelajah blok, serta menyulitkan untuk menentukan sumber Bitcoin. Ini juga bisa membawa risiko serangan dan kerentanan. Misalnya, dua transaksi yang duplikat dapat digunakan untuk membayar seseorang dua kali, tetapi sebenarnya hanya setengah dari dana yang dapat digunakan.
Untuk mengatasi masalah ini, pada Maret 2012 dilaksanakan soft fork BIP30, yang melarang penggunaan ID transaksi yang duplikat, kecuali jika yang sebelumnya telah dibelanjakan. Pada September tahun yang sama, aturan ini diubah untuk berlaku pada semua blok, dengan hanya dua set transaksi duplikat yang awal yang dikecualikan. Pada Maret 2013, soft fork BIP34 mengharuskan transaksi coinbase menyertakan tinggi blok, yang tampaknya sepenuhnya menyelesaikan masalah transaksi duplikat.
Namun, dalam beberapa blok sebelum aktivasi BIP34, byte pertama dari scriptSig dalam transaksi coinbase kebetulan cocok dengan tinggi blok yang valid di masa depan. Ini berarti bahwa dalam beberapa kasus yang sangat jarang, transaksi yang sama masih mungkin terjadi. Blok berikutnya yang mungkin mengalami transaksi yang sama adalah 1,983,702, yang diperkirakan akan dihasilkan sekitar Januari 2046. Namun, biaya untuk memanfaatkan celah ini sangat tinggi, memerlukan pembakaran sejumlah besar Bitcoin, yang hampir tidak berguna bagi penyerang.
Mengingat kesulitan dan biaya dalam menyalin transaksi, serta kesempatan yang sangat jarang, celah ini tidak dianggap sebagai ancaman keamanan utama bagi Bitcoin. Namun, dalam jangka panjang, pengembang mungkin akan mencari perbaikan menyeluruh untuk masalah ini sebelum tahun 2046, yang mungkin perlu dilakukan melalui soft fork. Salah satu metode perbaikan yang mungkin adalah menegakkan komitmen SegWit.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Bitcoin kerentanan transaksi duplikat: Kasus langka dalam sejarah dan risiko potensial di masa depan
Bitcoin Transaksi Duplikat: Sebuah Celah Menarik Namun Berisiko Sangat Kecil
Transaksi Bitcoin biasanya menggunakan output yang tidak terpakai dengan merujuk pada ID transaksi sebelumnya. Output ini hanya dapat digunakan sekali, jika tidak, akan menyebabkan pembayaran ganda, yang membuat Bitcoin kehilangan nilai. Namun, dalam sejarah Bitcoin, memang pernah terjadi dua set transaksi yang benar-benar identik. Situasi ini dapat terjadi karena transaksi coinbase tidak memiliki input transaksi, melainkan menghasilkan koin baru. Oleh karena itu, dua transaksi coinbase yang berbeda mungkin mengirimkan jumlah koin yang sama ke alamat yang sama, dengan cara membangun yang sepenuhnya identik, sehingga menghasilkan ID transaksi yang sama.
Dua kelompok transaksi yang berulang ini terjadi antara 14 hingga 15 November 2010, dengan durasi sekitar 16 jam. Kelompok pertama transaksi yang berulang terjepit di antara kelompok kedua. Kami mengklasifikasikan transaksi dengan ID yang diawali dengan d5d2 sebagai transaksi berulang pertama, meskipun itu pertama kali muncul di blockchain setelah transaksi berulang lainnya.
Munculnya transaksi yang duplikat menyebabkan kebingungan pada dompet dan penjelajah blok, serta menyulitkan untuk menentukan sumber Bitcoin. Ini juga bisa membawa risiko serangan dan kerentanan. Misalnya, dua transaksi yang duplikat dapat digunakan untuk membayar seseorang dua kali, tetapi sebenarnya hanya setengah dari dana yang dapat digunakan.
Untuk mengatasi masalah ini, pada Maret 2012 dilaksanakan soft fork BIP30, yang melarang penggunaan ID transaksi yang duplikat, kecuali jika yang sebelumnya telah dibelanjakan. Pada September tahun yang sama, aturan ini diubah untuk berlaku pada semua blok, dengan hanya dua set transaksi duplikat yang awal yang dikecualikan. Pada Maret 2013, soft fork BIP34 mengharuskan transaksi coinbase menyertakan tinggi blok, yang tampaknya sepenuhnya menyelesaikan masalah transaksi duplikat.
Namun, dalam beberapa blok sebelum aktivasi BIP34, byte pertama dari scriptSig dalam transaksi coinbase kebetulan cocok dengan tinggi blok yang valid di masa depan. Ini berarti bahwa dalam beberapa kasus yang sangat jarang, transaksi yang sama masih mungkin terjadi. Blok berikutnya yang mungkin mengalami transaksi yang sama adalah 1,983,702, yang diperkirakan akan dihasilkan sekitar Januari 2046. Namun, biaya untuk memanfaatkan celah ini sangat tinggi, memerlukan pembakaran sejumlah besar Bitcoin, yang hampir tidak berguna bagi penyerang.
Mengingat kesulitan dan biaya dalam menyalin transaksi, serta kesempatan yang sangat jarang, celah ini tidak dianggap sebagai ancaman keamanan utama bagi Bitcoin. Namun, dalam jangka panjang, pengembang mungkin akan mencari perbaikan menyeluruh untuk masalah ini sebelum tahun 2046, yang mungkin perlu dilakukan melalui soft fork. Salah satu metode perbaikan yang mungkin adalah menegakkan komitmen SegWit.