142 / 691SELECT

Coin Selection

Pemilihan UTXO untuk transaksi

Coin Selection menentukan UTXO mana yang dibelanjakan dompet. Ini memengaruhi biaya saat ini, kembalian, biaya mendatang, dan keterkaitan riwayat pembayaran.

Coin Selection adalah prosedur dompet yang memilih UTXO untuk mendanai keluaran dan biaya transaksi. Ini merupakan keputusan lokal, bukan aturan konsensus yang mewajibkan semua dompet memakai algoritma yang sama.

Setiap masukan membelanjakan satu UTXO tertentu secara utuh. Selisih jumlah masukan dan keluaran adalah biaya; dana yang dikembalikan kepada pengirim memerlukan keluaran terpisah. Dalam contoh ilustratif, masukan 100000 sat, pembayaran 60000 sat, dan biaya 1000 sat menyisakan kembalian 39000 sat. [Bitcoin Developer Guide — Transactions]

Nilai nominal saja tidak cukup: menambahkan masukan memperbesar transaksi. Nilai efektif mengurangi UTXO dengan biaya membelanjakannya pada tarif yang dipilih. Contoh masukan 10000 sat dengan perkiraan 68 vB pada 10 sat/vB menyumbang 9320 sat; bagian transaksi lainnya tetap memerlukan biaya sendiri. Ukuran sebenarnya bergantung pada skrip dan tanda tangan. [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]

Branch-and-bound (BnB) mencari kombinasi masukan untuk pembayaran tanpa kembalian. Rentang target mengizinkan kelebihan hingga biaya membuat dan kemudian membelanjakan kembalian; kelebihan itu menjadi biaya. Jadi tidak harus cocok persis. Pencarian terbatas mungkin tidak menemukan solusi maupun optimum global. [Bitcoin Core — Coin selection implementation]

Bitcoin Core 29.0 mempertimbangkan BnB, Knapsack, dan Single Random Draw (SRD); CoinGrinder ikut digunakan jika tarif efektif melebihi tiga kali tarif jangka panjang. Kandidat dibandingkan memakai waste metric. BnB dilewati ketika biaya dikurangi dari keluaran. Ini menjelaskan versi tertentu, bukan urutan algoritma universal semua dompet. [Bitcoin Core 29.0 — Transaction creation]

Waste metric membandingkan biaya masukan sekarang dan pada tarif jangka panjang, bersama biaya kembalian atau kelebihan yang diberikan sebagai biaya. Tarif jangka panjang adalah asumsi, bukan prediksi. Konsolidasi dapat mengurangi jumlah masukan mendatang, tetapi memerlukan biaya hari ini dan menghubungkan keluaran yang dipakai; biaya langsung terkecil bukan satu-satunya tujuan. [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]

Membelanjakan penerimaan berbeda secara bersamaan memberi analis petunjuk hubungan, bukan bukti satu orang. Coin Control dan label membantu memisahkan konteks pembayaran. BIP 329 menjelaskan pemindahan label dan metadata kelayakan pembelanjaan; standar itu tidak memilih koin sendiri, dan ekspor dapat membuka hubungan sensitif. Bahkan tanpa kembalian pun anonimitas tidak dijamin. [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]

Pemilihan harus mematuhi kelayakan pembelanjaan, konfirmasi, keluaran terkunci, dan batas transaksi. Dalam RPC walletcreatefundedpsbt Core 29.0, include_unsafe juga mengizinkan masukan belum terkonfirmasi yang berisiko; jika transaksi asalnya hilang, pembayaran yang dibentuk dapat menjadi tidak valid. Transaksi leluhur yang belum terkonfirmasi juga dapat memerlukan biaya tambahan. Saldo besar saja tidak menjamin kombinasi masukan yang sesuai. [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Dalam walletcreatefundedpsbt Core 29.0, masukan dapat ditentukan dengan txid dan vout; add_inputs mengendalikan penambahan masukan lain. fee_rate memakai sat/vB, sedangkan feeRate memakai BTC/kvB. PSBT yang dihasilkan adalah persiapan untuk pemrosesan berikutnya, bukan pembayaran terkonfirmasi. Sebelum menandatangani, penerima, total biaya, dan kembalian milik sendiri diperiksa; pemilihan manual tidak menghapus tanggung jawab tersebut. [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

Untuk gambaran yang lebih utuh, baca entri ini bersama UTXO, Coin Control, Output kembalian, Fee Rate, PSBT, Privasi Bitcoin. Entri ini juga dirujuk dari Watch-only Wallet, Output kembalian, Inventing Bitcoin.

DOC · 001Bitcoin Developer Guide — TransactionsDokumentasi ↗DOC · 002Bitcoin Core — Coin selection implementationSumber primer ↗DOC · 003Bitcoin Core 29.0 — Transaction creationSumber primer ↗DOC · 004BIP 329 — Wallet Labels Export FormatSpesifikasi ↗DOC · 005Bitcoin Core 29.0 — walletcreatefundedpsbt RPCDokumentasi ↗DOC · 006Bitcoin Design — Coin selection and privacyDokumentasi ↗
Utamakan sumber · Bukan nasihat investasi