btc: お釣りが必要かどうか
2025/09/09
Bitcoin トランザクションは INPUT となる UTXO があり、その総額をどこかに移動させる。
どこかは 2種類。
- scriptPubKey に送る
- 手数料としてマイナーに渡る
INPUT の総額と OUTPUT の総額を引いたものが手数料だ。
いま作っている送金コマンドはこういう入力を取る。
- UTXO の raw transaction hex string
- out_index
- spend address
- spend amount
- fee rate
raw tx と out_index から INPUT の額が決まる。
送金する額を決めているので、INPUT 額から引くと残額が分かる。
次は、お釣り OUTPUT を追加したトランザクションと fee rate から手数料を見積もる。
残額からその手数料を引いて dust_limit 以上あるなら、お釣りアドレスを追加してお釣りをセットする。
未満ならお釣りアドレスを取り除く。つまり残額は手数料になる。
完璧だ(たぶん)。
writer: hiro99ma