53 / 691CPFP

CPFP (Child Pays for Parent)

子トランザクションが親の手数料を補う

Child Pays for Parent (CPFP) は、低手数料のトランザクションを承認するマイナーの動機を高めます。新しいトランザクションがその出力を使用し、十分な手数料によって依存するトランザクション全体の手数料率を引き上げます。

CPFP は未承認の親トランザクションを変更も置換もしません。親のブロックへの収録を経済的に支える手数料を持つ子を追加します。親は子より前に承認済みであるか、同じブロック内で子より前に配置される必要があります。結果は合算手数料率、親の出力を使用できること、ノードのポリシー、マイナーの選択に左右されます。

CPFP は低手数料の親を保持し、その出力をより高い手数料率の子で使用します。親が未承認である間、子の収録には親とその他の必要な未承認祖先も必要です。マイナーはそれらの手数料をまとめて得られますが、親だけを子なしで承認することもできます。 [Bitcoin Core v31.0 — Package mempool acceptance] [Bitcoin Developer Guide — Transactions]

他に未承認祖先がない単純な親子では、両方の手数料を satoshi 単位で足し、vB 単位の仮想サイズの合計で割ります。結果は sat/vB 単位の手数料率であり、手数料総額ではありません。子の手数料増加が役立つのは合算率が競争力を持つ場合だけです。追加の必要な祖先があれば計算も変わります。ローカルのパッケージ受け入れでは mempool に受け入れ済みの取引を再計上せず、修正手数料を使う場合もあるため、表示される率はこの単純なマイニング計算と常に一致するわけではありません。 [Bitcoin Core v31.0 — Package mempool acceptance]

通常の CPFP には、親の出力を少なくとも一つ使用できることが必要です。送信者はお釣り出力である change、受信者は支払いの受取出力を使えます。必要な署名を含む使用条件を満たさなければなりません。出力を見る、または検査するだけでは、その権限を得られません。 [Bitcoin Developer Guide — Transactions]

RBF は元のトランザクションと使用する入力を少なくとも一つ共有する競合置換を作ります。入力全体の集合が同一である必要はありません。CPFP は親を保持し子を追加します。RBF では置換の入力条件、通常の CPFP では親の出力の使用条件を満たす必要があります。トランザクショングラフへの変更は異なります。 [Bitcoin Core v31.0 — Package mempool acceptance]

コンセンサスはトランザクションとブロックの有効性を決めます。mempool ポリシーはローカルでの受け入れと中継、マイナーの規則は候補ブロックへの選択を決めます。CPFP はコンセンサスを変更しません。経済的に有利なパッケージでもローカル規則に反する場合があり、一つのノードによる受け入れは他のノードやマイナーを拘束しません。 [Bitcoin Core v31.0 — Package mempool acceptance] [Bitcoin Developer Guide — Transactions]

Bitcoin Core 26 は submitpackage RPC と package CPFP を追加しました。子は mempool の動的最低手数料率を下回る親を支援できましたが、当時は最低中継手数料率を下回る親は対象外でした。この制限は不変ではありません。Core 31 は対応する親一つ・子一つのパッケージ中継で、minrelaytxfee を下回る親や手数料ゼロの親も、TRUC 以外を含めて許可します。子に他の未承認親がある場合、それらは既に mempool に存在する必要があります。ローカルで受け入れられても、ネットワーク全体で同じように伝播する保証はありません。 [Bitcoin Core 26.0 release notes] [Bitcoin Core 31.0 release notes]

制限はメモリ、CPU、帯域を保護します。古い Core は祖先と子孫の数やサイズを制限しましたが、Core 31 はこれらの mempool 制限を接続された cluster の制限に置き換えました。独立したパッケージ制限は残り、Core 31 文書では最大 25 トランザクション、合計重量 404000 WU です。重量は仮想サイズではありません。不適切な構造、競合、標準性違反は十分な手数料があっても CPFP を妨げます。 [Bitcoin Core 31.0 release notes] [Bitcoin Core v31.0 — Package mempool acceptance]

Bitcoin Core 31 は Cluster Mempool を使います。cluster は親子関係を方向を問わずたどってつながるトランザクションの集合です。既定値は cluster 当たり 64 トランザクションと仮想サイズ 101 kB で、設定可能です。順序は一緒に採掘される chunks というグループとその手数料率を考慮します。過去の CPFP carveout は子孫制限への限定的な例外でしたが、Core 31 で廃止されました。この方法で cluster のトランザクション数制限を回避することはできません。 [Bitcoin Core 31.0 release notes] [Bitcoin Core v31.0 — Mempool terminology]

競争力のある合算手数料率は承認の可能性を高め得ますが、次のブロックの空間を予約しません。ブロック空間の需要、取引の伝播、各マイナーの選択は変わり得ます。CPFP は手数料の動機を高める手段であり、承認時刻を保証しません。 [Bitcoin Core v31.0 — Package mempool acceptance]

Core 31 の getmempoolentry RPC は手数料、vsize、依存関係、chunk のデータを示し、getmempoolcluster は関連 cluster を示します。testmempoolaccept RPC は受け入れや配信をせずローカルで試験します。複数取引では祖先を子孫より先に並べ、相互にも mempool とも競合させてはいけません。submitpackage RPC は対応するパッケージを実際に mempool への受け入れと中継に提出するもので、単なる試験ではありません。各取引の結果、バージョン、設定を確認してください。どの結果も採掘を保証しません。 [Bitcoin Core 31.0 release notes] [Bitcoin Core 31.0 — getmempoolentry RPC] [Bitcoin Core 31.0 — testmempoolaccept RPC] [Bitcoin Core 31.0 — submitpackage RPC] [Bitcoin Core v31.0 — Mempool RPC implementation]

理解を深めるには、この項目とあわせて次もお読みください Replace-by-Fee (RBF), トランザクション手数料, Fee Rate, Mempool, トランザクション, UTXO. 次の項目からも参照されています お釣り出力, 承認, 二重支払い, Fee Rate.

DOC · 001Bitcoin Core 26.0 release notes文書 ↗DOC · 002Bitcoin Core 31.0 release notes文書 ↗DOC · 003Bitcoin Core v31.0 — Package mempool acceptance文書 ↗DOC · 004Bitcoin Core v31.0 — Mempool terminology文書 ↗DOC · 005Bitcoin Developer Guide — Transactions文書 ↗DOC · 006Bitcoin Core 31.0 — getmempoolentry RPC文書 ↗DOC · 007Bitcoin Core 31.0 — testmempoolaccept RPC文書 ↗DOC · 008Bitcoin Core 31.0 — submitpackage RPC文書 ↗DOC · 009Bitcoin Core v31.0 — Mempool RPC implementation一次資料 ↗
一次資料を優先 · 投資助言ではありません