Meskipun kita tahu bahwa menandatangani transaksi dengan terlalu banyak UTXO dapat menyebabkan kegagalan perangkat, pernyataan umum ini masih menyisakan beberapa pertanyaan: apakah ada jumlah UTXO yang pasti yang akan menyebabkan dompet perangkat keras gagal saat menandatangani? Apakah UTXO tertentu dapat menyebabkan lebih banyak kesulitan dibandingkan UTXO lainnya?
Saat meneliti jawaban atas pertanyaan-pertanyaan tersebut, saya menemukan bahwa waktu dan upaya yang diperlukan dompet perangkat keras untuk menandatangani transaksi tidak hanya bergantung pada jumlah UTXO yang dikirim dan berapa banyak alamat penerima yang ada. Hal ini juga bergantung pada detail serupa seputar transaksi sebelumnya yang menjadi asal setiap UTXO, sebuah fenomena yang saya sebut “penandatanganan massal”. Saya tidak mengetahui adanya publikasi lain yang merujuk pada konsep ini.
Dengan kata lain, UTXO dengan massa penandatanganan yang lebih besar—dijelaskan lebih detail di bawah—bisa lebih sulit untuk ditandatangani dibandingkan UTXO lainnya. Meskipun dua UTXO mungkin menggunakan jumlah data yang sama di blockchain, satu UTXO mungkin memerlukan lebih banyak pemrosesan untuk menandatangani menggunakan dompet perangkat keras.
Fakta ini melampaui jenis alamat dan kuorum multisig; satu UTXO pada alamat multisig 2-dari-3 memerlukan upaya yang jauh lebih besar untuk ditandatangani dibandingkan UTXO lain pada alamat yang sama (atau alamat yang setara, dan bahkan jika jumlah bitcoin dan alamat tujuan sama persis).
Untuk memahami mengapa dua UTXO yang tampak serupa dapat memiliki massa penandatanganan yang sangat berbeda, Anda harus memahami metode tidak langsung yang digunakan dompet perangkat keras untuk memverifikasi jumlah masukan tanpa koneksi internet dan bagaimana kompleksitas transaksi dapat berbeda di antara berbagai metode penerimaan bitcoin ke dompet Anda.
Untuk transaksi bitcoin apa pun, penting untuk memverifikasi jumlah masukan; jika tidak, bitcoin Anda dalam jumlah besar dapat dibayarkan secara tidak sengaja kepada penambang. Mengapa? Karena biaya yang diambil oleh penambang tidak disebutkan secara eksplisit _dalam transaksi, tetapi dihitung _secara implisit dengan mengurangkan nilai output dari nilai input. Oleh karena itu, jika terdapat selisih yang besar antara kedua angka tersebut maka biaya yang diambil juga akan besar.
Sebagai contoh, jika Anda memiliki UTXO dengan total 0,8 BTC dan menggunakannya untuk mengirim 0,3 BTC ke suatu tempat, jika Anda tidak mengirimkan sisa ~0,5 BTC kembali ke diri Anda sendiri sebagai uang kembalian, penambang blok sekarang dapat mengklaim 0,5 BTC tersebut sebagai sebagian dari penghasilan mereka.
Jangan khawatir! Semua alat bitcoin yang modern dan dihormati mencakup mekanisme keamanan otomatis, sehingga membuat kesalahan ini akan sangat sulit (jika bukan tidak mungkin). Prosesnya bisa sesederhana mencari di blockchain untuk memverifikasi jumlah masukan dan kemudian membandingkan totalnya dengan jumlah keluaran yang dipilih untuk menentukan apakah biayanya masuk akal.
Namun tentu saja, dompet perangkat keras dirancang untuk berfungsi secara independen dari internet, yang terutama terlihat pada perangkat dengan celah udara. Tanpa internet atau koneksi node, blockchain tidak dapat diamati. Oleh karena itu, sebagian besar dompet perangkat keras harus menggunakan metode alternatif dan tidak langsung untuk memverifikasi jumlah masukan. Intinya, perangkat tidak hanya perlu mengimpor informasi yang menjelaskan transaksi yang akan ditandatangani, namun juga harus mengimpor riwayat dari mana setiap masukan berasal.
Dengan kata lain, untuk setiap UTXO yang dipindahkan, perangkat akan ingin memeriksa ulang detail transaksi secara langsung sebelumnya, yang mengarah pada pembuatan UTXO tersebut. Jika transaksi tersebut rumit, hal ini akan melibatkan impor lebih banyak data, yang akan tercermin dalam ukuran file PSBT. Mari kita lihat kompleksitas transaksi.
Kebanyakan orang menerima bitcoin ke dompet mereka dengan salah satu dari tiga cara berikut: dari bursa, dari kumpulan penambangan, atau langsung dari orang lain dalam transaksi peer-to-peer (P2P). Transaksi peer-to-peer biasanya memiliki kompleksitas yang sangat rendah, dan UTXO yang dihasilkan akan memiliki jumlah penandatanganan yang relatif kecil.
Namun, bursa dan kumpulan penambangan cenderung mendistribusikan dana secara berkelompok, mengirimkan bitcoin ke banyak orang sekaligus dalam transaksi yang sama. Transaksi ini lebih kompleks, dan UTXO yang dihasilkan akan memiliki jumlah penandatanganan yang lebih besar.
Saya menyelidiki kecenderungan distribusi untuk beberapa kumpulan penambangan dan bursa yang populer di Amerika, dan temuan saya disajikan pada grafik di bawah ini. Jumlah keluaran menunjukkan jumlah orang yang biasanya mengirim bitcoin dalam setiap distribusi. Jumlah yang lebih tinggi berarti lebih banyak kompleksitas transaksi dan beban massal penandatanganan yang lebih besar bagi penerimanya.
Angka-angka ini merupakan perkiraan pada saat penulisan dan dapat berubah sesuai dengan cara masing-masing pool atau bursa melakukan distribusi di masa depan.
Perhatikan bahwa distribusi kumpulan penambangan umumnya lebih besar daripada bursa, dan kumpulan penambangan tertentu seperti F2Pool menggunakan distribusi yang sangat besar. Akibatnya, jika Anda menerima UTXO langsung dari pembayaran F2Pool, UTXO tersebut kemungkinan besar menyebabkan dompet perangkat keras tertentu mengalami kesulitan penandatanganan.
Pada tahun 2017, terjadi soft fork saksi terpisah, dan proses penandatanganan diubah untuk transaksi SegWit. Persyaratan diperkenalkan untuk memasukkan jumlah input dalam data yang disetujui pengguna dengan tanda tangan. Oleh karena itu, diyakini bahwa segala upaya untuk mengelabui pengguna atau perangkat agar secara tidak sengaja menandatangani transaksi dengan biaya yang sangat tinggi akan dapat dicegah. Sebagian besar produsen dompet perangkat keras bertindak sesuai dengan hal tersebut, dengan menghapus pemeriksaan keamanan jumlah masukan dan menyederhanakan proses penandatanganan transaksi SegWit.
Namun, pada pertengahan tahun 2020, kerentanan ditemukan di BIP 143, mendorong banyak produsen dompet perangkat keras untuk memperkenalkan kembali pemeriksaan keamanan jumlah input untuk transaksi SegWit. Pada saat penulisan, pemeriksaan keamanan jumlah masukan tetap merupakan proses normal selama penandatanganan dompet perangkat keras. Terdapat beberapa diskusi di komunitas mengenai perubahan di masa depan yang dapat secara lebih efektif menghilangkan kebutuhan akan pemeriksaan keamanan jumlah input, seperti membuat biaya secara eksplisit dalam setiap transaksi dibandingkan secara implisit.
Variasi dalam penandatanganan massal berarti bahwa ketika Anda mencoba menarik bitcoin dari dompet penyimpanan dingin milik Anda, ada beberapa relevansi dengan cara Anda mendapatkan bitcoin tersebut. Metode yang Anda gunakan untuk memperoleh bitcoin dapat menimbulkan perbedaan ketika tiba waktunya untuk menyetujui transfer.
Jika Anda memegang UTXO yang dipindahkan dari dompet lain yang Anda kendalikan atau diterima dari transaksi peer-to-peer, kemungkinan besar transaksi tersebut relatif sederhana. UTXO akan memiliki jumlah penandatanganan yang lebih kecil dan lebih mudah untuk ditandatangani pada pembelanjaan di masa mendatang. Di sisi lain, jika Anda menerima UTXO langsung dari kumpulan penambangan, atau khususnya kumpulan penambangan yang melakukan distribusi sangat besar (seperti yang ditunjukkan pada grafik sebelumnya), Anda dapat memperkirakan bahwa UTXO akan lebih sulit untuk ditandatangani.
Untungnya, jika dompet perangkat keras Anda gagal ditandatangani karena Anda mencoba memindahkan terlalu banyak UTXO bermassa tinggi secara bersamaan, ini tidak berarti bitcoin Anda macet secara permanen. Solusi cepat dan mudah adalah dengan membagi transaksi Anda menjadi beberapa transaksi, sehingga memindahkan bitcoin Anda menjadi beberapa bagian. Setiap potongan hanya akan berisi sebagian kecil data, dan kemungkinan besar perangkat Anda akan berhasil memberikan tanda tangan.
Strategi lainnya adalah mencegah kegagalan penandatanganan dengan mengontrol jumlah UTXO yang Anda miliki dan jumlah penandatanganan UTXO tersebut. Meskipun Anda tidak dapat mengubah cara kumpulan penambangan dan bursa mendistribusikan dana, penting untuk diingat bahwa massa penandatanganan UTXO ditentukan oleh transaksi sebelumnya, bukan riwayat transaksi sebelumnya. Ini berarti Anda dapat menerima UTXO dari kumpulan penambangan dan segera mentransfernya ke dompet atau alamat lain yang Anda kendalikan, meniru transaksi peer-to-peer. UTXO yang dihasilkan di alamat baru akan memiliki massa penandatanganan yang kecil daripada massa penandatanganan yang besar.
Penting untuk digarisbawahi bahwa penandatanganan massal hanya memengaruhi waktu dan upaya yang diperlukan dompet perangkat keras untuk menandatangani transaksi, bukan biaya jaringan yang akan Anda bayarkan. Hal ini karena penandatanganan massal hanya relevan selama proses penandatanganan, dan tidak akan menyebabkan transaksi Anda mengambil lebih banyak data di blockchain.
Ini berarti Anda tidak perlu membayar lebih banyak biaya transaksi jika Anda menerima bitcoin dari kumpulan penambangan seperti F2Pool, dan biaya transaksi Anda juga tidak akan berkurang dengan memilih layanan yang menggunakan lebih sedikit output untuk distribusinya.
Meskipun kita tahu bahwa menandatangani transaksi dengan terlalu banyak UTXO dapat menyebabkan kegagalan perangkat, pernyataan umum ini masih menyisakan beberapa pertanyaan: apakah ada jumlah UTXO yang pasti yang akan menyebabkan dompet perangkat keras gagal saat menandatangani? Apakah UTXO tertentu dapat menyebabkan lebih banyak kesulitan dibandingkan UTXO lainnya?
Saat meneliti jawaban atas pertanyaan-pertanyaan tersebut, saya menemukan bahwa waktu dan upaya yang diperlukan dompet perangkat keras untuk menandatangani transaksi tidak hanya bergantung pada jumlah UTXO yang dikirim dan berapa banyak alamat penerima yang ada. Hal ini juga bergantung pada detail serupa seputar transaksi sebelumnya yang menjadi asal setiap UTXO, sebuah fenomena yang saya sebut “penandatanganan massal”. Saya tidak mengetahui adanya publikasi lain yang merujuk pada konsep ini.
Dengan kata lain, UTXO dengan massa penandatanganan yang lebih besar—dijelaskan lebih detail di bawah—bisa lebih sulit untuk ditandatangani dibandingkan UTXO lainnya. Meskipun dua UTXO mungkin menggunakan jumlah data yang sama di blockchain, satu UTXO mungkin memerlukan lebih banyak pemrosesan untuk menandatangani menggunakan dompet perangkat keras.
Fakta ini melampaui jenis alamat dan kuorum multisig; satu UTXO pada alamat multisig 2-dari-3 memerlukan upaya yang jauh lebih besar untuk ditandatangani dibandingkan UTXO lain pada alamat yang sama (atau alamat yang setara, dan bahkan jika jumlah bitcoin dan alamat tujuan sama persis).
Untuk memahami mengapa dua UTXO yang tampak serupa dapat memiliki massa penandatanganan yang sangat berbeda, Anda harus memahami metode tidak langsung yang digunakan dompet perangkat keras untuk memverifikasi jumlah masukan tanpa koneksi internet dan bagaimana kompleksitas transaksi dapat berbeda di antara berbagai metode penerimaan bitcoin ke dompet Anda.
Untuk transaksi bitcoin apa pun, penting untuk memverifikasi jumlah masukan; jika tidak, bitcoin Anda dalam jumlah besar dapat dibayarkan secara tidak sengaja kepada penambang. Mengapa? Karena biaya yang diambil oleh penambang tidak disebutkan secara eksplisit _dalam transaksi, tetapi dihitung _secara implisit dengan mengurangkan nilai output dari nilai input. Oleh karena itu, jika terdapat selisih yang besar antara kedua angka tersebut maka biaya yang diambil juga akan besar.
Sebagai contoh, jika Anda memiliki UTXO dengan total 0,8 BTC dan menggunakannya untuk mengirim 0,3 BTC ke suatu tempat, jika Anda tidak mengirimkan sisa ~0,5 BTC kembali ke diri Anda sendiri sebagai uang kembalian, penambang blok sekarang dapat mengklaim 0,5 BTC tersebut sebagai sebagian dari penghasilan mereka.
Jangan khawatir! Semua alat bitcoin yang modern dan dihormati mencakup mekanisme keamanan otomatis, sehingga membuat kesalahan ini akan sangat sulit (jika bukan tidak mungkin). Prosesnya bisa sesederhana mencari di blockchain untuk memverifikasi jumlah masukan dan kemudian membandingkan totalnya dengan jumlah keluaran yang dipilih untuk menentukan apakah biayanya masuk akal.
Namun tentu saja, dompet perangkat keras dirancang untuk berfungsi secara independen dari internet, yang terutama terlihat pada perangkat dengan celah udara. Tanpa internet atau koneksi node, blockchain tidak dapat diamati. Oleh karena itu, sebagian besar dompet perangkat keras harus menggunakan metode alternatif dan tidak langsung untuk memverifikasi jumlah masukan. Intinya, perangkat tidak hanya perlu mengimpor informasi yang menjelaskan transaksi yang akan ditandatangani, namun juga harus mengimpor riwayat dari mana setiap masukan berasal.
Dengan kata lain, untuk setiap UTXO yang dipindahkan, perangkat akan ingin memeriksa ulang detail transaksi secara langsung sebelumnya, yang mengarah pada pembuatan UTXO tersebut. Jika transaksi tersebut rumit, hal ini akan melibatkan impor lebih banyak data, yang akan tercermin dalam ukuran file PSBT. Mari kita lihat kompleksitas transaksi.
Kebanyakan orang menerima bitcoin ke dompet mereka dengan salah satu dari tiga cara berikut: dari bursa, dari kumpulan penambangan, atau langsung dari orang lain dalam transaksi peer-to-peer (P2P). Transaksi peer-to-peer biasanya memiliki kompleksitas yang sangat rendah, dan UTXO yang dihasilkan akan memiliki jumlah penandatanganan yang relatif kecil.
Namun, bursa dan kumpulan penambangan cenderung mendistribusikan dana secara berkelompok, mengirimkan bitcoin ke banyak orang sekaligus dalam transaksi yang sama. Transaksi ini lebih kompleks, dan UTXO yang dihasilkan akan memiliki jumlah penandatanganan yang lebih besar.
Saya menyelidiki kecenderungan distribusi untuk beberapa kumpulan penambangan dan bursa yang populer di Amerika, dan temuan saya disajikan pada grafik di bawah ini. Jumlah keluaran menunjukkan jumlah orang yang biasanya mengirim bitcoin dalam setiap distribusi. Jumlah yang lebih tinggi berarti lebih banyak kompleksitas transaksi dan beban massal penandatanganan yang lebih besar bagi penerimanya.
Angka-angka ini merupakan perkiraan pada saat penulisan dan dapat berubah sesuai dengan cara masing-masing pool atau bursa melakukan distribusi di masa depan.
Perhatikan bahwa distribusi kumpulan penambangan umumnya lebih besar daripada bursa, dan kumpulan penambangan tertentu seperti F2Pool menggunakan distribusi yang sangat besar. Akibatnya, jika Anda menerima UTXO langsung dari pembayaran F2Pool, UTXO tersebut kemungkinan besar menyebabkan dompet perangkat keras tertentu mengalami kesulitan penandatanganan.
Pada tahun 2017, terjadi soft fork saksi terpisah, dan proses penandatanganan diubah untuk transaksi SegWit. Persyaratan diperkenalkan untuk memasukkan jumlah input dalam data yang disetujui pengguna dengan tanda tangan. Oleh karena itu, diyakini bahwa segala upaya untuk mengelabui pengguna atau perangkat agar secara tidak sengaja menandatangani transaksi dengan biaya yang sangat tinggi akan dapat dicegah. Sebagian besar produsen dompet perangkat keras bertindak sesuai dengan hal tersebut, dengan menghapus pemeriksaan keamanan jumlah masukan dan menyederhanakan proses penandatanganan transaksi SegWit.
Namun, pada pertengahan tahun 2020, kerentanan ditemukan di BIP 143, mendorong banyak produsen dompet perangkat keras untuk memperkenalkan kembali pemeriksaan keamanan jumlah input untuk transaksi SegWit. Pada saat penulisan, pemeriksaan keamanan jumlah masukan tetap merupakan proses normal selama penandatanganan dompet perangkat keras. Terdapat beberapa diskusi di komunitas mengenai perubahan di masa depan yang dapat secara lebih efektif menghilangkan kebutuhan akan pemeriksaan keamanan jumlah input, seperti membuat biaya secara eksplisit dalam setiap transaksi dibandingkan secara implisit.
Variasi dalam penandatanganan massal berarti bahwa ketika Anda mencoba menarik bitcoin dari dompet penyimpanan dingin milik Anda, ada beberapa relevansi dengan cara Anda mendapatkan bitcoin tersebut. Metode yang Anda gunakan untuk memperoleh bitcoin dapat menimbulkan perbedaan ketika tiba waktunya untuk menyetujui transfer.
Jika Anda memegang UTXO yang dipindahkan dari dompet lain yang Anda kendalikan atau diterima dari transaksi peer-to-peer, kemungkinan besar transaksi tersebut relatif sederhana. UTXO akan memiliki jumlah penandatanganan yang lebih kecil dan lebih mudah untuk ditandatangani pada pembelanjaan di masa mendatang. Di sisi lain, jika Anda menerima UTXO langsung dari kumpulan penambangan, atau khususnya kumpulan penambangan yang melakukan distribusi sangat besar (seperti yang ditunjukkan pada grafik sebelumnya), Anda dapat memperkirakan bahwa UTXO akan lebih sulit untuk ditandatangani.
Untungnya, jika dompet perangkat keras Anda gagal ditandatangani karena Anda mencoba memindahkan terlalu banyak UTXO bermassa tinggi secara bersamaan, ini tidak berarti bitcoin Anda macet secara permanen. Solusi cepat dan mudah adalah dengan membagi transaksi Anda menjadi beberapa transaksi, sehingga memindahkan bitcoin Anda menjadi beberapa bagian. Setiap potongan hanya akan berisi sebagian kecil data, dan kemungkinan besar perangkat Anda akan berhasil memberikan tanda tangan.
Strategi lainnya adalah mencegah kegagalan penandatanganan dengan mengontrol jumlah UTXO yang Anda miliki dan jumlah penandatanganan UTXO tersebut. Meskipun Anda tidak dapat mengubah cara kumpulan penambangan dan bursa mendistribusikan dana, penting untuk diingat bahwa massa penandatanganan UTXO ditentukan oleh transaksi sebelumnya, bukan riwayat transaksi sebelumnya. Ini berarti Anda dapat menerima UTXO dari kumpulan penambangan dan segera mentransfernya ke dompet atau alamat lain yang Anda kendalikan, meniru transaksi peer-to-peer. UTXO yang dihasilkan di alamat baru akan memiliki massa penandatanganan yang kecil daripada massa penandatanganan yang besar.
Penting untuk digarisbawahi bahwa penandatanganan massal hanya memengaruhi waktu dan upaya yang diperlukan dompet perangkat keras untuk menandatangani transaksi, bukan biaya jaringan yang akan Anda bayarkan. Hal ini karena penandatanganan massal hanya relevan selama proses penandatanganan, dan tidak akan menyebabkan transaksi Anda mengambil lebih banyak data di blockchain.
Ini berarti Anda tidak perlu membayar lebih banyak biaya transaksi jika Anda menerima bitcoin dari kumpulan penambangan seperti F2Pool, dan biaya transaksi Anda juga tidak akan berkurang dengan memilih layanan yang menggunakan lebih sedikit output untuk distribusinya.