Blockchain/Tahap II · Mekanisme/2.2 Transaksi/Pelajaran 4
Output baki
Baki yang mendedahkan penghantar, dan algoritma yang cuba menyembunyikannya
BahanPeneroka blok (contohnya, mempool.space atau blockchain.com)Dompet Bitcoin dengan sekurang-kurangnya dua UTXOHamparan (spreadsheet) untuk merekodkan ID transaksi, nilai input dan struktur output
Ingin tahu
- Mengapa transaksi yang membayar jumlah tepat sering kelihatan berbeza daripada transaksi yang memerlukan baki?
- Bagaimanakah seorang penganalisis dapat menentukan output mana yang merupakan pembayaran dan mana yang merupakan baki tanpa melihat keadaan dalaman dompet tersebut?
- Apakah yang mendorong algoritma pemilihan syiling untuk memilih yuran yang sedikit lebih tinggi berbanding yuran yang lebih rendah?
Teroka
- Input transaksi Bitcoin berfungsi seperti wang kertas fizikal yang tidak boleh dibahagikan. Jika Alice ingin membayar 5 BTC tetapi hanya memegang satu UTXO bernilai 20 BTC, dia tidak dapat membahagikan input tersebut. Dia mesti membelanjakan keseluruhan 20 BTC dan menerima semula 15 BTC sebagai baki, selepas mengambil kira yuran. Oleh itu, kebanyakan transaksi mempunyai dua output: satu untuk penerima dan satu lagi untuk memulangkan baki.
- Pada peringkat protokol, tiada perbezaan antara output ‘pembayaran’ dan output ‘baki’. Kedua-duanya ialah skrip penguncian standard, seperti P2PKH atau P2WPKH, yang menunggu syarat perbelanjaan dipenuhi. Hanya pencipta transaksi yang mengetahui output mana yang mana. Ketiadaan perbezaan ini merupakan mekanisme privasi yang teras: jika alamat baki dan alamat pembayaran kelihatan serupa, pemerhati luar tidak dapat membezakannya secara muktamad.
- Dompet menggunakan algoritma pemilihan syiling (coin selection) untuk menentukan input mana yang akan dibelanjakan. Jika Alice memegang dua UTXO masing-masing bernilai 50,000 satoshi dan ingin membayar Bob 85,000 satoshi, dia membelanjakan kedua-dua input (100,000 sats) dan mencipta dua output: satu untuk Bob (85,000 sats) dan satu untuk dirinya sendiri (15,000 sats tolak yuran). Bentuk ini, iaitu satu atau lebih input dan tepat dua output, adalah antara yang paling biasa di rantaian.
- Demi privasi, amalan standard ialah menetapkan baki kepada alamat baharu yang belum pernah digunakan daripada kumpulan kunci (key pool) dompet. Menggunakan semula alamat lama untuk baki membolehkan penganalisis rantaian menghubungkan aktiviti transaksi terdahulu dengan transaksi baharu. Dalam keadaan optimum, kedua-dua output pembayaran dan output baki ditetapkan kepada alamat baharu, memastikan kedua-duanya kelihatan serupa bagi pemerhati luar.
- Tidak setiap pembayaran memerlukan baki. Algoritma pemilihan syiling seperti Branch and Bound, yang diterangkan oleh Mark Erhardt pada tahun 2016 dan digunakan dalam Bitcoin Core, mencari set input yang jumlahnya cukup hampir dengan jumlah pembayaran ditambah yuran sehingga lebihan kecil boleh terus dimasukkan ke dalam yuran. Transaksi tanpa baki lebih murah, tidak mencipta output kecil yang baharu, dan memberi penganalisis satu petunjuk yang kurang.
- Output yang sangat kecil menimbulkan masalahnya sendiri. Di bawah ambang dust (secara lalai kira-kira 546 satoshi untuk output P2PKH dan 294 untuk P2WPKH), kos untuk membelanjakan sesuatu output lebih tinggi daripada nilainya, dan nod tidak akan me-relay transaksi yang menciptanya. Penganalisis juga mencari corak baki yang ketara: output dengan angka bulat biasanya ialah pembayaran, dan output yang jenis alamatnya sepadan dengan input selalunya ialah baki.
Fakta utama
- Input transaksi tidak boleh dibahagikan; lebihan selepas pembayaran dan yuran dipulangkan sebagai baki, melainkan jumlahnya cukup kecil untuk dimasukkan ke dalam yuran.
- Pada peringkat protokol, tiada perbezaan teknikal antara output baki dan output pembayaran; hanya pencipta transaksi yang tahu output mana yang mana.
- Pemilihan syiling Branch and Bound (Erhardt, 2016) mencari set input yang tidak memerlukan output baki.
- Transaksi tanpa baki tidak mempunyai output yang memulangkan dana kepada penghantar; sebarang lebihan kecil dimasukkan ke dalam yuran.
- Menggunakan alamat baharu yang belum pernah dilihat untuk baki menghalang pihak ketiga daripada membezakannya dengan mudah daripada output pembayaran.
- Ambang dust lalai Bitcoin Core ialah kira-kira 546 satoshi untuk output P2PKH dan 294 untuk P2WPKH.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 transaksi Bitcoin terkini yang telah anda perhatikan atau cipta. Catatkan bilangan input dan output bagi setiap satu, serta sama ada terdapat output baki.
6KelompokkanKumpulkan 9 transaksi tersebut ke dalam 6 kategori berdasarkan strukturnya: input tunggal/output tunggal, berbilang input/dua output (dengan baki), berbilang input/output tunggal (tanpa baki), coinbase, OP_RETURN, atau struktur kompleks yang lain.
3SaringKurangkan 6 kumpulan tersebut kepada 3 implikasi privasi yang berbeza berkaitan betapa mudahnya seorang penganalisis dapat menghubungkan output dengan identiti pengguna tertentu.
1KristalkanTulis 1 ayat yang menerangkan mengapa ketiadaan perbezaan teknikal antara output pembayaran dan output baki merupakan kelebihan bagi kebolehtukaran (fungibility) dan pada masa yang sama cabaran bagi privasi individu.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.
- M. Erhardt, 'An Evaluation of Coin Selection Strategies' (2016)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023)
- Bitcoin Core documentation on transaction relay policies and dust limits
- Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System