Slide 1

Slide 1 text

Pay to Anchorと1P1Cリレー 


Slide 2

Slide 2 text

1 Bitcoinのロックスクリプトの種類
 ● P2K:公開鍵へのロック
 ● P2PKH:公開鍵ハッシュへのロック
 ● P2SH:スクリプトハッシュへのロック
 ● RAW Multisig :マルチシグスクリプトへのロック 
 ● OP_RETURN :任意のデータを登録
 ● P2WPKH:P2PKHのSegwit版
 ● P2WSH:P2SHのSegwit版
 ● P2TR:Taproot 
 ● P2A(Pay to Anchor ):アンカー用のアウトプット←New


Slide 3

Slide 3 text

2 Pay to Anchor
 OP_1 <4e73> 
 witness version 
 witness program 
 bc1pfeessrawgf 
 アドレス
 v1はTaproot に適用されるwitness version だが、
 witness program が32 byteの場合のみに適用されるため、 
 P2Aは誰でも使用可能(anyone can spend)なアウトプット 
 
 ※ P2Aは使用時にwitness が空でよく、
  スクリプトOP_TRUE のみのP2WSH よりもサイズが小さい 
 
 ● CPFP によるトランザクションの引き上げのアンカーポイントとして利用 
 ● Bitcoin Core v28.0 から、P2Aをインプットで使用する Txを標準ポリシーで許可 


Slide 4

Slide 4 text

3 1P1Cリレー
 1 Parent 1 Child(1P1C) に限定したパッケージリレー
 
 【事前署名Txの手数料問題】
 急な手数料の高騰で、事前署名済みTxの手数料率がmempoolの最小手数料率を下回ると 
 該当Txをネットワークでリレーできなくなる。 
 
 親子関係のあるTxをパッケージとして扱いパッケージの手数料率を考慮することでリレー可能にする 
 
 
 
 
 
 
 
 
 
 ※ 汎用的なパッケージリレーを実現するためにはP2Pメッセージの拡張が必要
  BIP-331 :https://github.com/bitcoin/bips/blob/master/bip-0331.mediawiki
 Node A 
 Node B 
 親Tx
 Low Fee 
 子Tx
 High Fee 
 親Tx単体では最小手数料率を下回るためリジェクト
 ※ 親Txより先に子Txを受信した場合はこの処理はなし
 親Txを要求
 親Tx
 Low Fee 
 親Tx
 子Tx
 High Fee 
 Low Fee 
 親子Txの手数料をパッケージとして評価
 対象の手数料率がmempoolの最小手数料率より大きければ受け入れ
 ※ 親Tx(TRUC)は手数料0でもOK


Slide 5

Slide 5 text

4 エフェメラルダスト
 【ダスト制限】 
 UTXOを使用する際に、UTXOが持つ金額より手数料の方が高く使用するのに 
 経済的な合理性のないUTXOの増加を防止するため、 
 UTXOの各タイプ毎に最低金額を定め、下回る場合はリレーしない 
 
 P2Aのダスト制限は、240 sats (※ 現在のP2Aにはこれ以上の金額をセットする必要がある) 
 
 【エフェメラルダスト】 
 Block 
 親Tx
 子Tx
 P2A Output 
 TRUCなどCPFPによる手数料引き上げが前提の場合にダスト制限に例外を設けるポリシー変更
 
 ● Tx内に金額0のP2Aアウトプットを1つだけ許可する
 ● 親Txの手数料は0でなければならない
 ● 基本的に親子セットでブロックに格納されるため、
 ダストとなるP2Aはブロック内で消費されるため、UTXOセットを汚染しない
 
 https://github.com/bitcoin/bitcoin/pull/30239