Develop with pleasure!

福岡でCloudとかBlockchainとか。

Lightning network

CLN v23.02〜v23.05.2に影響したDoS脆弱性

Core Lightnig v23.02〜v23.05.2に影響した脆弱性について、最近内容が開示された↓ DoS disclosure: Channel open race in CLN - Implementation - Delving Bitcoin ので、内容を確認してみる。詳細は報告者のブログ記事で説明されている↓ morehouse.github.…

LND v0.14.0とv0.15.0で修正された2つの脆弱性

最近、過去(2021年)のLND実装のサービス拒否の脆弱性が公開されてたので見てみる↓ Denial-of-service bugs in LND's channel update gossip handling - Implementation - Delving Bitcoin (最近は、Delving Bitcoinフォーラムでの議論も増えてるっぽい。…

コンテンツを復号可能な鍵をアトミックに交換できるBitStream

BitVMやZeroSyncの開発者であるRobin Linusが先日公開したBitStreamのペーパー↓ https://robinlinus.com/bitstream.pdf 分散型のコンテンツホスティングネットワークに対して(最近ユーザーが増えてるNostrとか)、持続可能なインセンティブを持たせるため、…

Simple Taproot Channel(Part 3)

Simple Taproot Channelの提案について、これまで チャネルの開設フロー↓ techmedia-think.hatenablog.com 支払いの転送フロー↓ techmedia-think.hatenablog.com とみてきたので、最後はチャネルの閉鎖フローの変更点について↓ https://github.com/lightning…

Simple Taproot Channel(Part 2)

前回の記事では、Simple Taproot Channelの開設ステップを見てきたので↓ techmedia-think.hatenablog.com 今回は、支払い(HTLC)の転送の変更点についてみていく。 https://github.com/lightning/bolts/blob/e25132d8de0164224578964fcd3f7328ddfc3281/bolt…

Simple Taproot Channel(Part 1)

lnd v0.17.0のリリースで、実験的にTaproot Channelのサポートが追加される↓ https://github.com/lightningnetwork/lnd/blob/master/docs/release-notes/release-notes-0.17.0.md#protocol-features 従来のLNでは、チャネルを開く際、チャネル参加者の両名が…

lnd v0.15.3-betaで発生した2度目の障害の内容

少し間が空いたけど、 techmedia-think.hatenablog.com の障害からそんなに間を開けずに、再度LNDでチェーン同期ができなくなる障害が発生したので、その内容をまとめておく。 障害の原因 障害のトリガーとなったは、500,142 byte(125,109 vbyte)のこのト…

Taroのオンチェーンアドレス仕様

techmedia-think.hatenablog.com ↑のアセットの新規発行に続いて、アセットを送付しようと思ったけど、その前にアセットを受け取る際に必要になるTaroのオンチェーンアドレス仕様について見ておく。 Taroアドレス Taroのアセットを受け取る際のアドレスは既…

Taroのアセット発行の仕組み

前回の記事でTaroのアセットツリーの構造を確認したので↓ techmedia-think.hatenablog.com 今回は、Taroでのアセット発行の仕組みをRubyで実装しながらみていく。 tarocliを使ったアセットの発行 tarocliのassets mintコマンドを利用するとアセットを新規発…

lnd v0.15.1-beta以下で発生したチェーン同期の障害

lnd v0.15.1-beta以下で発生したlndでチェーンの同期ができなくなる不具合↓についてまとめておく。 github.com 正確には、btcdの不具合↓ github.com 障害の内容 今回発生した障害は、lndでブロックチェーンの同期ができなくなるというもの。そのため、その間…

Taroのアセットツリーの構造

Lightning Labsが発表したBitcoin上の新しいアセットプロトコルTaroについて、今回はTaroのアセットツリー周りのデータ構造/表現についてみていく。 Taroのアセットツリー Taroは、Taprootを利用したアセットのオーバーレイプロトコルになる(Taprootベース…

testnetで発見されたNeutrinoのTaproot関連の問題と軽量クライアントの課題

少し前に報告されたtestnetで発生したNeutrinoのフィルタ処理の問題について↓ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-November/019589.html Neutrinoの位置付け LNノード実装の1つであるLNDのブロックチェーンのバックエンドの連携…

c-lightningをRaspberry PiにセットアップしてUmbrelのBitcoin Coreと連携してみる

Diamond Handsに参加するのにUmbrel on Raspberry Pi 4を使ってフルノードのBitcoin CoreとLightningノードのLNDを家庭内LAN環境で稼働し始めたんだけど、1台Raspberry Pi 3が余っていたので、それを使って追加でc-lightningのノードを立ててみた。 Umbrelの…

Dust limitを悪用したLightningプロトコルの脆弱性の開示

LNの実装に影響を与える仕様レベルの脆弱性が公開されていたので内容を見てみよう↓ [Lightning-dev] Full Disclosure: CVE-2021-41591/ CVE-2021-41592 / CVE-2021-41593 "Dust HTLC Exposure Considered Harmful" 前提 まず、脆弱性の内容を理解するために…

LNDで実装されている経路探索アルゴリズム

LNを利用したオフチェーン支払いをする際、基本的に送信者が受信者までの支払いの経路を決めるようになっている。つまり、送信者はこの経路を探索する必要がある。LNのゴシップネットワークで、LNノードやそのチャネルの情報が(更新を含めて)配信されるの…

LN Offer

LN Offerは、ノードがLNを介してインボイスを要求、受信できるようにするプロトコルの拡張機能の1つで、BOLTにもBOLT 12として提案されている↓ https://github.com/rustyrussell/lightning-rfc/blob/guilt/offers/12-offer-encoding.md http://bolt12.org/ …

LNのゴシッププロトコルを使った流動性の提供

最近、C-Lightningで実験的にLNのチャネルの流動性(インバウンドキャパシティの提供)をLNのゴシッププロトコルを使って配信する機能がマージされた↓ https://github.com/ElementsProject/lightning/pull/4639 LNの支払いを受ける場合、チャネルにインバウ…

秘密鍵をオフラインにしたままLN支払いを受け入れ可能にするFast Forwardプロトコル

Lightning Networkでオフチェーン支払いをする場合、(オンチェーンの支払いと違って)チャネル参加者は常にオンラインである必要がある。その際、支払いによる状態の更新で新しいコミットメントトランザクションに署名するため、秘密鍵も同様にオンラインで…

lndが公開した2つの脆弱性CVE-2020-26895とCVE-2020-26896

先日lndに脆弱性が含まれているということで修正版のアナウンスがされていたけど、その内容が公開された↓ CVE-2020-26895: LND Low-S Tx-Relay Standardness https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-October/002858.html CVE-2020-…

Lightning Networkの新しいチャネルコントラクトの提案「Generalized Channels」

少し前に発表されたLightning Networkの改善提案のペーパー「Generalized Bitcoin-Compatible Channels」↓ https://eprint.iacr.org/2020/476.pdf 簡単に言うと↓の特性を持つ、現在のLightning NetworkのPoon-DryjaスタイルのPayment Channelの改良 共通のコ…

LNの新しいチャネルタイプAnchor Output

LNでは送金の度に残高を更新したコミットメントトランザクションを新しく作り署名する。チャネルを閉じる際には、 両者が協力してClosingトランザクションを作成し閉じるパターン (相手と通信できないなどで)片方の参加者が最新のコミットメントトランザク…

LNの中継者の資金を奪う攻撃手法

Bitcoin Optech Newsletterで取り上げられていた、LNのマルチホップ決済で中間者の資金を奪う攻撃方法について↓ bitcoinops.org もともとはLigning-DevやBitcoin-Dev MLでMatto Coralloによって議論されていた内容。 HTLCの構成 LNにおいてアリス→ボブ→マロ…

LNの経路情報を秘匿するRoute Blinding

送信者が受信者の完全な経路を知らなくても支払いやメッセージのルーティングを可能にするRoute Blindingの仕様のドラフトが提案されてるので見てみる↓ https://github.com/lightningnetwork/lightning-rfc/blob/route-blinding/proposals/route-blinding.md…

2P-ECDSAを必要とせずHTLCを代替する半Scriptlessプロトコル

LNのマルチホップ決済で使われるHTLCの仕組みを代替する仕組みとしてPoint Time Locked Contracts (PTLCs)が提案されている。 既存のHTLCを使ったマルチホップ決済は、支払い経路で同じハッシュのプリイメージが使われるため、プライバシーの懸念や中間者の…

冗長的な支払経路を用いることでLN支払のスループットを向上させるBoomerang

Lightning Networkで決済可能な金額は各チャネルのキャパシティに依存する。この制限を緩和するため、支払に複数の経路を使用するAtomic Multi-Path Payments(AMP)が提案され、各ノードに実装されつつある。AMPの仕組みについては以前書いた↓参照。 techme…

未使用のUTXOを所有していることをUTXOを明らかにせず証明するプロトコルPoDLE

BitcoinトランザクションのプライバシーやFungibilityの向上のためCoinJoinを実装しているJoinmarketで提案されているPoDLEというプロトコルが面白かったので見てみる↓ joinmarket.me PoDLEプロトコル PoDLEが解決するのは、自分があるUTXOを所有していて、…

AMPを実現する3つのプロトコル

Lightning Networkにおいて、単一の経路ではキャパシティが不足し送金額に満たないが、複数の経路を使えば送金額を満たす場合に、複数の経路を使った支払いをアトミックに行うプロトコルがAtomic Multi-Path Payments(AMP)だ。 AMPのプロトコルとしては、…

Watchtowerと連携したLightning Networkウォレットのバックアッププロトコル「Açai」

Scaling Bitcoin 2019復習シリーズ第一弾は、「Açai: a backup protocol for Lightning Network wallets」 動画:https://youtu.be/PM95oNcOAlU?t=9411 スライド:https://telaviv2019.scalingbitcoin.org/files/acai-a-backup-protocol-for-lightning-netwo…

複数のPayment Channelのアトミックな更新を可能にする「Atomic Multi-Channel Update」

Scaling Bitcoin 2019予習シリーズ第三弾は、「Atomic Multi-Channel Updates with Constant Collateral in Bitcoin-Compatible Payment-Channel Networks」。ホワイトペーパーは↓ https://eprint.iacr.org/2019/583.pdf 著者の1人のPedro Moreno-Sanchezは…

LNの支払い経路の計算をアウトソースするトランポリンペイメント

Scaling Bitcoin 2019予習シリーズ第二弾は、「Improving routing in the Lightning Network with Trampoline Payments」について。 特にホワイトペーパーが出てる訳でも無いので、確かな内容は分からないんだけど、おそらく現在BOLTにプルリクが出されてい…