← Back to list

RBFとCPFP

feerateとRBFとCPFP

uenohiro4 · 2024-01-10 11:25 · 2 claps · 5.1 min read
#bitcoin #lightning-network #cpfp
Open on Medium ↗
Wiki topics: CRY · Crypto & Web3

RBFとCPFP

2023年3月21日にCPFPの記事を書いていました。

[embed]LNDでCPFPして実効feerateを上げる LNDでの(Child Pays For Parent)medium.com

その中にこんな記述が・・・。

これで高かったんだねぇ(しみじみ)

これで高かったんだねぇ(しみじみ)

ちなみに、今日(2024/01/10 14:50)はこのくらいです。

2024/01/10 14:50

2024/01/10 14:50

3月に比べると倍くらいになっていますが、最近からするとずいぶん下がりました。mempool.space に出ている値は feerate の中央値なのですが、2023年末はこんな感じだったのです。

[embed]

feerate が下がったので、今まで後回しにしていた送金をやることもあるでしょうし、急に feerate が上がって confirm されないままになっていたトランザクションを何とかしたくなります。

既に展開されたトランザクションを何とかする手段としては「RBF (Replace-By-Fee)」か「CPFP (Child-Pays-For-Parent)」のどちらかになります。

RBF はいくつか条件がありますが、基本的にはより大きな feerate のトランザクションを展開して前回のトランザクションを無かったことにする行為です。 CPFP と比べた利点としては、余計なトランザクションが発生しないということです。前回のトランザクションはなかったことになるので、そのとき使おうとしていた fee も戻ってきます(というか、なかったことになる)。 新しいトランザクションを展開し直すので、前のトランザクションで何かしようとしていた場合には困ることになります。まあ、confirm されていないトランザクションで何かしようとする方がおかしいという話もありますが、ともかくそうなります。会社のBTCを移動する場合は経理の人にTXIDを伝えているのですが、RBF するたびに申し訳なく思いながらやり直してもらってます。

CPFP はそのトランザクションのお釣りを使って別のトランザクションを展開し、両方合わせると feerate が高いのと同じになりますよ、ということをします。mempool.space では「実効手数料レート」 という言葉で表現されています。

CPFPの場合はそのトランザクションは残っているので RBF のようなことにはならないのですが、CPFP のためのトランザクション展開を行う必要があります。何かトランザクションを展開する予定があって CPFP するならよいのですが、そのトランザクションを承認させるためだけに展開するとなると虚しくなります。虚しいだけなら良いのですが、前のトランザクションと合計して feerate を高くするので、かなり高い fee のトランザクションを展開しなくてはなりません。

例えば TX-A を fee が 100 sats で展開していたとします。 TX-Aのサイズが 100 vbyte で feerate が 1 sats/vbyte ということにしましょう。これを 実効feerate として 10 sats/vbyte まで上げたいとします。CPFP で展開するトランザクション TX-B のサイズが 100 vbyte だったとすると、TX-A と TX-B を合わせて 200 vbyte になります。200 vbyte のトランザクションに必要な fee は 200 vbyte x 10 sats/vbyte = 2000 sats になります。なので TX-B は残りの 1,900 sats を fee とすると計算が合うことになります。 これが RBF であれば TX-A を展開し直して fee が 1,000 sats の TX-A’ を展開すれば良いだけです。

(注:コメントに書きましたが、CPFPを実施する環境によってトランザクションを展開するタイミングをアルゴリズムによって待たされたり、CPFPしようとしたトランザクションをまとめられたりすることがあるようです。)

Lightning Network ではトランザクションを決めながら進めるので、だいたい CPFP を使うことになります。ただ、CPFP するトランザクションにはお釣りのアウトプットがなくてはなりません。 私は主に LND を使っているのですが、たまにお釣りがない funding transaction が作成されてしまい、CPFP できずに身動きが取れなくなることがあります。これを避ける方法を LND slack で質問したときは PSBT を使ってくれということだったのですが、LND v0.17 から --utxo オプションが追加されたので、もう少し避けやすくなったかもしれません。まあ、そうすると UTXO を選ぶという面倒が発生するのですが進歩は進歩です。

[embed]funding: fund channel with selected utxos by hieblmi · Pull Request #7516 · lightningnetwork/lnd This PR implements feature #6955. Background It extends the ways in which the user can instruct the OpenChannel RPC to…github.com

おわりに

とりとめがない話ばかりになってしまいましたが、feerate があのときはこういう値だったんだ、という思い出話ができてよいかなと思って書きました。


메타데이터
post_id
910cf5891492
slug
rbfとcpfp-910cf5891492
url
https://medium.com/@uenohiro4/rbf%E3%81%A8cpfp-910cf5891492
canonical_url
https://medium.com/@uenohiro4/rbf%E3%81%A8cpfp-910cf5891492
author_url
https://medium.com/@uenohiro4
status
ok
fetched_at
2026-07-24 15:01:39