Yuya

Yuya

@ogw_yuya

ちょビットコイナー

ペイメントチャネルを強制閉鎖できない、CPFPもできない

昨日あたりからビットコイン送金が大量に発生しています。それに伴い送金手数料も高騰しており、手数料が14.5 sats/vByte以下のトランザクションはmempoolから排除されています(引用元はこちら。mempoolのサイズは各ノードごとに異なる)。手数料が低いトランザクションを送信後マイニングされずにmempoolに停滞する場合、RBFやCPFPで手数料を引き上げることができます。ライトニングネットワークではCPFPを使ってタイムセンシティブなHTLCを素早くマイニングさせるような仕組みを取っています。 ライトニングネットワークのペイメントチャネルは、両者が署名をすることで協調的にチャネルを閉鎖します。しかし、相手がオフラインになっている時など協調的にチャネル閉鎖できない場合は、事前に署名しておいたcommitment_txを送信することで一方的にチャネルを強制閉鎖させることができます。 LNDのデフォルトではこのcommitment_txの手数料が10 sats/vByteとなっています。そのため、mempoolが混雑している現時点でこのトランザクションを送信してもネットワークを伝播することができず、チャネルを強制閉鎖することができません。LNのペイメントチャネルには手数料を引き上げるためにアンカーアウトプットがついているので、これを使ってCPFPをさせることができますが、そもそもcommitment_txがmempoolに存在しない状態ではCPFPができず、それが問題だと指摘されています。

mempoolfullrbf、その論点と結末

現在、Bitcoin Coreにmempoolfullrbfという機能を追加する話題でちょっとした論議が繰り広げられています。 このmempoolfullrbf(以下fullrbfと称す)の説明には、まずはRBF(Replace by Fee)について理解する必要があります。基本的にビットコインの送金は取り消しやキャンセルができません。しかし、RBFという仕組みはブロック承認前(言い換えるとmempoolに存在する場合)であれば、送信した取引データを手数料を高くした取引データで置換できるというものです。このRBFという仕組みはBIP125に準じて実装されていて、送信する取引データに「この取引データはRBFを許容するものですよ」というシグナリングをする必要があります。このシグナルがない取引データに対してはRBFは使えません。 fullrbfは、取引データにシグナルがなくてもRBFを許容する機能で、デフォルトではオフになっています。そもそもシグナルを付与すればRBFできるのに、なぜfullrbfが必要なのか、その動機とはなんでしょうか。シグナリングによるRBFではLNやDLCなど1つのUTXOを共有するコントラクトの場合に問題が発生する可能性があります。2者間によるコントラクトの場合、悪意ある相手がシグナリングせずに取引データをブロードキャストすることができてしまいます。これはPinning攻撃と呼ばれる攻撃手法の一種で、最悪の場合資産を失う危険性があります。fullrbfが導入されればシグナリングがなくてもRBFが可能となり、不正なデータを正しいデータへ置換でき、上記の攻撃を回避することができます。 一方、fullrbfは0承認をサポートしているサービスに問題が生じるかもしれません。例えば、店頭で商品を購入し、店を出てから支払い先のアドレスを自身のアドレスへ変更する、という不正ができてしまいます(店頭なので顔がバレてしまいますが笑)。現状はシグナリングされていない送金であれば、RBFされることはないので0承認を許容してもさほど問題はありません。しかしfullrbfが導入されるとシグナリングがなくても支払いがキャンセルできてしまうので、小売店が抱えるリスクが上がってしまいます。 このようにRBFにはメリットデメリットがありますが、mempoolfullrbfの実装はすでに終わっており、Bitcoin Coreにマージされました。 しかし、このマージ後に再度fullrbfの賛否を問う議論がはじまり、この機能を削除しようという<a href="https://github.com/bi

オニオンメッセージと非同期ペイメント

以前の投稿でライトニング決済における受信者の匿名性向上についての技術や現在策定中の仕様について紹介しました。その主な技術はルートブラインディング、オニオンメッセージ、オファーの3つで、それらを仕様確定前に実験的に実装していたのがCore-lightningとEclairで、それを追随するかのようにLDKがオニオンメッセージをサポートしたことが明らかになりました。 <iframe style="position: static; visibility: visible; width: 550px; height: 576px; display: block; flex-grow: 1;" id="twitter-widget-0" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen" class="" title="Twitter Tweet" src="https://platform.twitter.com/embed/Tweet.html?dnt=true&embedId=twitter-widget-0&features=eyJ0ZndfdGltZWxpbmVfbGlzdCI6eyJidWNrZXQiOlsibGlua3RyLmVlIiwidHIuZWUiLCJ0ZXJyYS5jb20uYnIiLCJ3d3cubGlua3RyLmVlIiwid3d3LnRyLmVlIiwid3d3LnRlcnJhLmNvbS5iciJdLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X2hvcml6b25fdGltZWxpbmVfMTIwMzQiOnsiYnVja2V0IjoidHJlYXRtZW50IiwidmVyc2lvbiI6bnVsbH0sInRmd190d2VldF9lZGl0X2JhY2tlbmQiOnsiYnVja2V0Ijoib24iLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3JlZnNyY19zZXNzaW9uIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19jaGluX3BpbGxzXzE0NzQxIjp7ImJ1Y2tldCI6ImNvbG9yX2ljb25zIiwidmVyc2lvbiI6bnVsbH0sInRmd190d2VldF9yZXN1bHRfbWlncmF0aW9uXzEzOTc5Ijp7ImJ1Y2tldCI6InR3ZWV0X3Jlc3VsdCIsInZlcnN

PeerSwapをUmbrelへDockerイメージからインストールする

[2022-08-27 更新] confファイルとDocker runのパラメータを変更 前回の記事ではPeerSwapについての概要や操作方法について解説しました。PeerSwapは現在ベータ版ということもあり、メインネットでの使用は自己責任でという注意書きがあります。しかし、この界隈で生き残っている強者は、自己資産の紛失よりも最先端技術を試してみたいという知的好奇心旺盛な方が多いと思います。そこで、Umbrel上でもPeerSwapを動かせるような環境を作ってみました。 まずはUmbrelのコンソールへSSHログインします。そして以下のコマンドでPeerSwapのDockerイメージをインストールしてください。 ※dockerコマンドがアクセス制限されたらコマンドの先頭に sudo を付与してください。※SSHログインや後述のconfファイルの作成・編集方法についてはこちらの記事を参考にしてみてください。 $ docker pull yuya207503/peerswap:v0.2 次に以下のコマンドを実行し、confファイルのサンプルを参考にpeerswap.confファイルを作成します。 $ mkdir ~/peerswap $ nano ~/peerswap/peerswap.conf confファイルのサンプル lnd.tlscertpath=/lnd/tls.cert lnd.macaroonpath=/lnd/data/chain/bitcoin/mainnet/admin.macaroon 以下のコマンドを実行してPeerSwapを起動します。コンテナ終了時に削除するオプションrmを追加しているので、適宜消してください。 docker run \ --rm \ --name peerswap \ --network="host" \ --add-host=umbrel.local:10.21.21.9 \ -v $HOME/peerswap:/root/.peerswap \ -v $HOME/umbrel/app-data/lightning/data/lnd:/lnd:ro \ yuya207503/peer

受信者の匿名性を向上させるルートブラインディング

現在、ライトニングネットワークの新しい仕様について開発者間で議論が進めらている。その中でも注目されているのが、ライトニング送金による受信者の匿名性を向上させるルートブラインディングと呼ばれる技術である。仕様自体がまだ固まっていないのでblinded pathsなどと呼ばれることもある。この技術はそれ単体で使われるわけではなく、複数の新しい技術と組み合わせて使われる予定で、ルートブラインディング、オニオンメッセージ、オファーの三つが深く関わりあっている。以下が各仕様決めについてのリンクである。 Route Blinding (Feature 24/25) by t-bast · Pull Request #765 · lightning/bolts (github.com) BOLT 7: Onion message support (features 38/39) by rustyrussell · Pull Request #759 · lightning/bolts (github.com) Offers by rustyrussell · Pull Request #798 · lightning/bolts (github.com) ライトニングネットワーク上の送金は、受信者がインボイスを生成して送信者へメールなどで送付し、送信者はそのインボイスに記載されている受信者ノードへ送金する。送金する際は、送信者が任意の経路を選択して経路情報をカプセル化して送金するので(これはTorで使われるオニオンルーティングと呼ばれる仕組み)、中継者や受信者は誰が送金したかを知ることはできない。一方、送信者は受信者を知る必要があるので、例えば、小売店で決済を受け付ける場合、小売店とノードIDが紐づいてしまい、小売店のプライバシーが損なわれる可能性がある。このようにライトニングでは送信者にはある程度の匿名性はあるが、受信者にはないのが現状である。以下では受信者の匿名性を向上させる3つの関連技術について簡単にまとめた。 ルートブラインディングは、受信者の匿名性を向上させる技術で、受信者がイントロダクションポイントと呼ばれるノードを指定して、そのノードから自身までの経路を暗号化したブラインド情報を送信者へ渡す。送信者はその情報をもとにイントロダクションポイントまでの経路を作り、暗号化(ブラインド)された経路情報を付与して送金する。イントロダクションポイントからの中継は、各ブラインドされたノードがECDHを使っ

Umbrel導入時におけるIBDの省略手順

UmbrelでLightning Nodeを利用するためには1からBitcoin Nodeをインストールする必要がある。この際に500GBほどあるブロックチェーンのデータを同期する必要があり、Umbrelで実行すると同期に数日かかる。(これはInitial Block Download (IBD)と呼ばれている) 私の場合はUmbrelを導入する前からBitcoin Nodeを利用していたので、このデータを利用してIBDを省略できないかと検索。 https://github.com/getumbrel/umbrel-os/issues/119#issuecomment-691949967GIthubのissueを参考にしてコピー。具体的手順としては HPのUmbrelのセットアップ手順に従ってインストール Bitcoin Coreをインストールした後に設定画面からUmbrelをshutdown 手元のPCにUmbrelに先程セットアップしたSSDを接続して一番最新のコメントに従ってディレクトリをコピー(Umbrelv0.5からはディレクトリの場所が変わったようで正確なディレクトリを記載してる資料が少ない。) Same here! I had to finally reindex from scratch... Too bad I didn't scroll all the way down. One more thing, now the default paths for the three folders are: • ~/umbrel/app-data/bitcoin/data/bitcoin/blocks • ~/umbrel/app-data/bitcoin/data/bitcoin/chainstate • ~/umbrel/app-data/bitcoin/data/bitcoin/indexes "blocks"と"chainstate","indexes"を既存のBitcoin Nodeからコピーする。コピーの際にはデータが大きいのでcpではなくrsyncを使用する。その際進捗を確認したいのでoptionに&mdash;progressをつける。実際には以下のようなコマンドを使用(/path/to/umbrelは各々の環境によって変

tanakei purchased this article bflghgqur

100

kojisan purchased this article bflghgqur

100

Sent a tip 8ezxxp1vv

-1000

Purchased this article 8ezxxp1vv

-100

tanakei purchased this article z1mk21yed

100

culizusi purchased this article 8lr4dnla4

100

まくら purchased this article g51rpxui9

100

Purchased this article e6yfecqnz

-100

Purchased this article q70puql9t

-100

まくら purchased this article p5bkaovrb

100

btc_dakara purchased this article kfz7philc

100

Anonymous purchased this article kfz7philc

100

tanakei purchased this article kfz7philc

100

Marimox purchased this article kfz7philc

100

Ky purchased this article 8lr4dnla4

100

Marimox purchased this article 8lr4dnla4

100

ロクヨウ purchased this article 8lr4dnla4

100

ラバ purchased this article 8lr4dnla4

100

tanakei purchased this article 8lr4dnla4

100

katakoto purchased this article 8lr4dnla4

100

Popular stories

LNノードの運用益はどれぐらい?パート1

1603

LNノードの運用益はどれぐらい?パート3

977

【Muun】ちょっと変わったライトニング搭載ノンカストディアルウォレット

889

Archives

2022-12
1posts
2022-11
2posts
2022-10
2posts
2022-09
1posts
2022-08
5posts
2022-07
4posts
2022-06
1posts
2022-05
4posts
2022-04
3posts
2022-03
2posts
2022-02
3posts
2022-01
2posts
2021-10
2posts
2021-09
5posts
2021-08
5posts
2021-07
9posts
2021-06
2posts
2021-05
4posts
2021-04
9posts
2021-03
11posts
2021-02
5posts
2021-01
4posts
2020-12
8posts
2020-10
2posts
2020-09
20posts
2020-08
4posts
2020-07
5posts
2020-06
10posts
2020-05
7posts
2020-04
10posts
2020-03
3posts
2020-02
3posts
2020-01
6posts
2019-12
6posts
2019-11
5posts
2019-09
1posts
2019-08
1posts
2019-07
1posts
2019-05
4posts
2019-04
7posts
2019-03
4posts
2019-02
5posts