PSBT
Bitcoin transaction format
BIP174
bips/bip-0174.mediawiki at master · bitcoin/bips
version 2 の draft あり
bips/bip-0370.mediawiki at master · bitcoin/bips
BitcoinJS と PSBT の歴史
部分的に署名されたトランザクション(PSBT)のフォーマットを定義するBIP-174 - Develop with pleasure!
【BIP-174】Partially Signed Bitcoin Transaction Format - Speaker Deck
bitcoin/psbt.md at master · bitcoin/bitcoin
BIP 370
Hex PSBT を bitcoin-cli analyzepsbt で処理するには
code:terminal
echo "HEX_PSBT" | xxd -r -p | base64 -w0 | bitcoin-cli -regtest -stdin analyzepsbt
別々に署名された PSBT をマージすることはできないのか?
Combiner がその役割を果たす?
関係あるかも?
Can PSBTs with unique signed inputs be combined together? How? : Bitcoin Andrew Chow
rust-bitcoin の場合普通に merge すれば良さそう
rust-bitcoin の psbt
UnexpectedUnsignedTx エラーで PSBT 同士をマージできない
このエラーを投げているのは -> https://github.com/rust-bitcoin/rust-bitcoin/blob/ed9856f800ff8878335361162da8d63f26450480/src/util/psbt/map/global.rs#L170
さきに sign してしまっているのが間違っている気がする
いま想像する PSBT の作り方
Creator -> PSBT を作る
Global は unsigned tx が必須
unsigned tx は PSBT から最終的に導出される Fully signed tx を構成することになる要素をすべてもっている必要がある。
ただし、signature や input はわからないので空になるよね?(tx の構造を復習しないと...)
PSBT 同士をマージする場合は、この Global が同じでないといけない
A Combiner must not combine two different PSBTs. PSBTs can be uniquely identified by 0x00 global transaction typed key-value pair
Updator
PSBT の input に対して?与えられる情報があれば追加する
witnessScript や BIP32 deriviation path?
BDK で PSBT CoinJoin つくるとすると...
Updator が使いやすいメソッドが存在しない
psbt に簡単に output を追加できなさそう
TxBuilder::add_psbt · Issue #153 · bitcoindevkit/bdk
複数 output も creator が用意する必要があるが、creator の wallet で作成すると insufficient fund になってしまうことあるよね
updator が簡単に扱えるメソッドがやはりほしい
この PR で変わりそう
wallet Transaction creation overhaul by LLFourn · Pull Request #258 · bitcoindevkit/bdk
add_foreign_utxo(BDK TxBuilder#6194f29e8f8ec70000beaede) がそれに当たりそうな感じ?
PSBT responsibilities by dr-orlovsky · Pull Request #456 · rust-bitcoin/rust-bitcoin
Refactoring PSBT with roles according to BIP 174 by dr-orlovsky · Pull Request #472 · rust-bitcoin/rust-bitcoin
https://www.youtube.com/watch?v=H6xZSRDXUiU