Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RBFを使ったトランザクションの置換

 RBFを使ったトランザクションの置換

GBECの解説動画の資料です:
https://goblockchain.network/2021/07/rbf/

C403a9e0b7bfed4c94020220b5ab89f7?s=128

shigeyuki azuchi

July 13, 2021
Tweet

Transcript

  1. RBFを使ったトランザクションの置換


  2. 1 RBFとは?
 RBF = Replace By Fee
 
 Bitcoinにおいて送信済みトランザクションの手数料を上げるためのテクニック。
 


    
 
 • Full RBF
 元々Bitcoinに実装されていた機能。 
 ただトランザクション置換に手数料の制限などがなかったため、ネットワーク帯域を圧迫するようなDoS攻撃 が可能であり、Bitcoin Core 0.3.12から無効に。 
 
 • Opt-in RBF(BIP 125) 
 https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki Bitcoin Core 0.12.0以降に実装されているRBFのポリシー。 
 メモリプール内の未承認Txと(すくなくとも1つ)同じインプットを持ち、手数料率(BTC/vsat)、総手数料額 (BTC)の両方が高くなったトランザクションを置換が可能。 
 
 ※ いずれもノードポリシーであってコンセンサスルールではない。 

  3. 2 Opt-in RBF(BIP 125)
 RBFトランザクションのルール
 
 • トランザクションのインプットの nSequenceが
 最大値

    - 1(0xffffffff - 1)より小さい値であること。 
 このトランザクションはOpt-in RBFにより置換される可能性がある。 
 RBFの支払いを拒否する場合、この条件を満たさない形のトランザクションを要求する。 
 
 • 置換するトランザクションに適用される条件 
 ◦ メモリプール内の未承認トランザクションと同じインプットを少なくとも1つ持っている。 
 ◦ メモリプール内の未承認トランザクションより手数料率、手数料額が共に高い。 
 ※ 置換トランザクションのスパムにはより大きな手数料が必要になる。 
 ◦ アウトプットは別のものに変更可能。 
 
 ※ CPFPだと(親子)2つ分のトランザクション手数料が必要になるので、それに比べると安価。 
 ※RBFトランザクションはトランザクションが置換されることを保証する仕組みではない。 
 Tx Input
 OutPoint
 ScriptSig
 nSequence

  4. 3 RBFとバッチ処理の組み合わせ
 Service Provider
 引き出し
 Batch Tx
 Input
 Output for


    Output for
 Output for
 バッチ処理:
 支払いを1つのトランザクションにまとめることで、
 個別にトランザクションを作成するのに比べて
 手数料が節約できる。
 RBF + Batch Tx
 RBF enable 
 Output for
 Output for
 Output for
 引き出し
 RBF + Batch Tx
 RBF enable 
 Output for
 Output for
 Output for
 Output for
 RBF + バッチ処理:
 バッチトランザクションにRBFを組み合わせる。
 まだTxがmempool内に未承認で存在する場合、
 アウトプットを追加する。
 Replace

  5. • どのTxが承認されるか分からない(Reorg、マイナーのポリシー) 
 ◦ 最初のTx1が承認された場合、 Tx2, 3で追加したアウトプット分は、 
 別途支払いを行うTx4を作成しブロードキャストする必要がある。 


    ▪ その後Reorgが発生し Tx3が承認されるケース 
 Tx4も承認されてしまうと二重払いなってしまうので、 Tx4はTx1を親とする必要がある。 
 • バッチに含めるアウトプット数と承認目標数から適切な手数料を設定する。 
 • ユーザーへの注意
 ◦ ウォレットがRBFに対応しているか? 
 ◦ RBF Txを未承認で使わない。→交換されると使用した Txは無効になる。
 4 RBFとバッチ処理の組み合わせ
 CardCoinsの取り組み
 https://blog.cardcoins.co/rbf-batching-at-cardcoins-diving-into-the-mempool-s-dark-reorg-forest 
 
 Tx 1
 Replace
 Tx 2
 Tx 3
 Replace
 Tx 4
 Tx1が承認された場合
 Reorg対応

  6. 5 Bitcoin CoreとBIP-125の挙動の不一致
 BIP-125の仕様
 https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki
 
 
 
 
 


    
 
 
 ※ Bitcoin Coreの実装では、↑の子Txの交換ができない。
 btcdでは仕様通りに正しく実装
 親Tx
 RBF enable
 Output 1
 Output 2
 子Tx
 RBF disable
 Output 1
 Output 2
 子Tx自体はRBFが有効になっていなくても、 
 その親Txが
 • まだ承認されていない、かつ 
 • RBFが有効になっている 
 場合、子Txも交換可能 

  7. 6 宣伝
 ブロックチェーン技術概論 理論と実践(2021年、講談社)
 https://www.amazon.co.jp/dp/406524093X
 
 1. ブロックチェーン技術の原点 
 2. ブロックチェーンの概要

    
 3. スマートコントラクトと分散台帳 
 4. ブロックチェーンを構成する暗号技術の基礎 
 5. ビットコインのシステム構成と仕組み 
 6. ビットコインの仕組みの詳細 
 7. P2Pネットワーク
 8. さまざまなノード実装 
 9. トークンの表現と利用 
 10. ブロックチェーンのスケーラビリティ 
 11. 暗号技術とスマートコントラクト 
 12. ブロックチェーンと匿名化技術 
 13. ブロックチェーンを利用したシステム構成 
 14. ブロックチェーン特有のリスク 
 15. ブロックチェーンのビジネスへの導入