142 / 736SELECT

Coin Selection

Pemilihan UTXO untuk transaksi

Saat membayar, dompet memilih dana yang mana dari penerimaan sebelumnya untuk dibelanjakan. Pilihan itu memengaruhi biaya, kembalian, dan informasi tentang uang Anda yang dapat diketahui orang lain.

Coin Selection adalah cara dompet memilih dana untuk menyusun transaksi Bitcoin. Saldo bukan satu jumlah yang utuh dan bisa dipotong sesuka hati, melainkan kumpulan keluaran terpisah dari transaksi sebelumnya yang belum dibelanjakan, disebut UTXO. Dompet harus memilih dana yang cukup untuk pembayaran beserta biayanya. Biasanya ini dilakukan otomatis; memilihnya sendiri disebut Coin Control. Jaringan memeriksa apakah transaksi akhirnya valid, tetapi tidak mewajibkan semua dompet menggunakan metode pemilihan yang sama.

UTXO: kalkulator konsolidasiBandingkan biaya model untuk membelanjakan UTXO bersama nanti dengan konsolidasi hari ini lalu membelanjakan satu input nanti.

Anna ingin membayar 60000 sat. Dompetnya menyiapkan pembayaran: dompet adalah aplikasi atau perangkat untuk menerima dan mengirim bitcoin. Singkatan sat berarti satoshi, satuan terkecil untuk mencatat jumlah dalam transaksi Bitcoin. Ia memiliki UTXO senilai 100000 sat. Seperti membayar dengan selembar uang kertas, ia tidak bisa sekadar memotong sebagian nilainya: sebuah masukan dalam transaksi baru membelanjakan seluruh keluaran tersebut. Transaksi membuat keluaran 60000 sat untuk pedagang dan, jika biayanya 1000 sat, keluaran lain sebesar 39000 sat untuk Anna. Keluaran kedua adalah kembalian, atau change. Ini bukan pengembalian dana dari pedagang di kemudian hari, melainkan dibuat dalam transaksi Anna sendiri. Biaya adalah selisih antara jumlah seluruh masukan dan seluruh keluaran. [1] [7]

Dompet dapat mendanai pembayaran yang sama dengan UTXO berbeda. Namun, lebih banyak masukan biasanya berarti lebih banyak data, sehingga biayanya lebih tinggi pada tarif yang sama. Biaya bukan persentase dari jumlah yang dikirim. Perhitungannya mengikuti ukuran virtual transaksi dalam vB, atau byte virtual, yang memperhitungkan bobot berbeda pada bagian-bagiannya. Misalnya, UTXO 10000 sat memerlukan masukan yang diperkirakan menambah 68 vB. Pada 10 sat/vB, masukan itu sendiri menelan biaya 680 sat sehingga menyumbang 9320 sat untuk bagian pembayaran lainnya. Itulah nilai efektifnya. Bagian transaksi yang lain tetap memiliki biaya; ukuran masukan sebenarnya bergantung pada syarat pembelanjaan dalam skrip dan data tanda tangan. Skrip adalah program singkat yang menjelaskan syarat pembelanjaan. Dalam pembayaran biasa, dompet memakai kunci privat, yaitu nilai angka rahasia, untuk membuat tanda tangan digital: izin membelanjakan dana yang dapat diverifikasi. [2] [3] [7]

Anna mungkin menerima banyak jumlah kecil dari waktu ke waktu. Menggabungkannya menjadi keluaran milik sendiri yang lebih besar disebut konsolidasi. Ia mungkin membutuhkan lebih sedikit masukan nanti, tetapi penggabungan memerlukan biaya sekarang dan menghubungkan keluaran yang dipakai secara publik. Karena itu, menggabungkan semuanya secara otomatis bukan pilihan awal yang bijak. Bitcoin Core juga membandingkan biaya memakai waste metric: skor yang mempertimbangkan selisih biaya masukan saat ini dan pada asumsi tarif jangka panjang, ditambah biaya membuat serta membelanjakan kembalian nanti, atau kelebihan yang dijadikan biaya. Tarif jangka panjang adalah asumsi perhitungan, bukan ramalan. Skor ini mengukur biaya, bukan privasi. [2] [6]

Anna memberi label gaji pada satu penerimaan dan hadiah pada penerimaan lain. Membelanjakannya bersama memberi pengamat blockchain petunjuk bahwa keduanya berhubungan. Itu bukan bukti bahwa semua masukan dimiliki satu orang: transaksi juga dapat disusun bersama oleh beberapa peserta. Coin Control memungkinkan pemilihan UTXO tertentu, sementara label membantu mengingat asalnya. Label adalah catatan dalam dompet, bukan pesan yang ditulis ke blockchain. BIP 329 menjelaskan pemindahan catatan ini serta informasi apakah dompet menganggap suatu keluaran dapat dibelanjakan. Ini adalah pengaturan lokal dompet yang tidak mengubah aturan jaringan Bitcoin. Format itu tidak memilih dana sendiri. Ekspor label bisa mengungkap hubungan sensitif, dan pembayaran tanpa kembalian sekalipun tidak menjamin anonimitas. [4] [6]

Tidak semua saldo yang ditampilkan harus langsung bisa dipakai. Dompet dapat sengaja mengecualikan beberapa keluaran; yang lain menunggu konfirmasi atau terpenuhinya syarat pembelanjaan. Pemilihan juga harus mematuhi batas ukuran dan bobot transaksi. Membelanjakan penerimaan yang belum terkonfirmasi membuat pembayaran baru bergantung pada transaksi sebelumnya yang menciptakannya, disebut transaksi leluhur dalam konteks ini. Agar seluruh rangkaian terkonfirmasi, mungkin diperlukan biaya tambahan. RPC, antarmuka yang dipakai program untuk mengendalikan Bitcoin Core 29.0, menyediakan opsi include_unsafe pada walletcreatefundedpsbt. Opsi ini mengizinkan masukan belum terkonfirmasi yang berisiko. Jika transaksi asal diganti sehingga keluaran yang dibutuhkan tidak lagi ada, pembayaran yang bergantung padanya tidak dapat dikonfirmasi. Sebaliknya, sekadar menghapus transaksi asal sementara dari memori sebuah node tidak mengubah validitasnya. [3] [5]

Bagaimana dompet menjelajahi pilihannya? Branch-and-bound, atau BnB, mencoba kombinasi masukan dan meninggalkan cabang pencarian yang tidak dapat menghasilkan pilihan sesuai. Tujuannya mendanai pembayaran tanpa keluaran kembalian terpisah. Jumlahnya tidak harus tepat sama: rentang yang diizinkan mencakup kelebihan hingga sebesar biaya membuat dan kemudian membelanjakan kembalian. Kelebihan itu menjadi biaya, bukan tersimpan tersembunyi dalam dompet. Karena itu, pembayaran tanpa kembalian belum tentu yang termurah. Jumlah percobaan pencarian dibatasi sehingga solusi yang ada atau kombinasi terbaik dari semua kemungkinan bisa terlewat. [2]

Bitcoin Core 29.0 membandingkan kandidat dari BnB, Knapsack, dan Single Random Draw (SRD). Ketiganya merupakan cara berbeda untuk menemukan kumpulan masukan yang sesuai. CoinGrinder ditambahkan jika tarif efektif melebihi tiga kali tarif jangka panjang; metode ini mencari pilihan berbobot kecil dengan kembalian. Kandidat dibandingkan memakai waste metric yang dijelaskan sebelumnya. Jika pengguna memilih mengurangi biaya dari jumlah untuk penerima, BnB dilewati. Ini adalah penjelasan versi tertentu, bukan prosedur wajib bagi semua dompet atau pernyataan tentang rilis terbaru. [3]

Untuk pembayaran biasa, Anda tidak perlu memahami parameter pemrograman. Namun, sebelum menandatangani, Anda perlu memahami penerima, jumlah, total biaya, dan kembalian sendiri. Bagi pengguna tingkat lanjut, walletcreatefundedpsbt dalam Bitcoin Core 29.0 memungkinkan masukan ditentukan dengan txid, pengenal transaksi asal, dan vout, nomor indeks keluarannya. add_inputs mengatur apakah dompet boleh menambahkan masukan lain. Perhatikan perbedaan satuan: fee_rate memakai sat/vB, sedangkan feeRate memakai BTC/kvB, yaitu bitcoin per 1000 byte virtual. Hasilnya berupa PSBT, format untuk meneruskan transaksi yang telah disiapkan agar ditandatangani. Membuat PSBT saja tidak mengirim apa pun dan tidak mengonfirmasi pembayaran. Pemilihan manual maupun format ini tidak menjamin penerima yang benar atau validitas masukan belum terkonfirmasi. [5]

Untuk gambaran yang lebih utuh, baca entri ini bersama UTXO, Coin Control, Change Address, Fee Rate, PSBT, Privasi Bitcoin. Entri ini juga dirujuk dari Watch-only Wallet, Change Address, 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 DOC · 007Bitcoin Developer Guide — WalletsDokumentasi
Direvisi: Utamakan sumber · Bukan nasihat investasi