今週のニュースレターでは、LNユーザーに影響する最近のセキュリティの開示について言及し、 任意のプログラムを実行した結果に応じて支払いを行うことに関する論文および、 MuSig2用のPSBTフィールドのBIP提案の発表を掲載しています。 また、クライアントとサービスの改善や、新しいリリースとリリース候補の発表、 人気のあるBitcoinインフラストラクチャソフトウェアの注目すべき変更など恒例のセクションも含まれています。

ニュース

  • LNに影響する問題のセキュリティ開示: Antoine Riardは、 BitcoinプロトコルおよびさまざまなLN実装に取り組む開発者に以前責任を持って開示した問題の 完全な開示をBitcoin-DevメーリングリストおよびLightning-Devメーリングリストに投稿しました。 Core Lightning、Eclair、LDK、LNDの最新バージョンはすべて、 根本的な懸念を排除するものではありませんが、攻撃の実用性を低下させる緩和策を含んでいます。

    この情報開示は、Optechの通常のニュースの締め切り後に行われたため、 今週のニュースレターでは、上記リンクのみを提供します 来週のニュースレーターで、概要をお届けします。

  • 任意の計算を条件にした支払い: Robin Linusは、 BitVM について書いた論文をBitcoin-Devメーリングリストに投稿しました。 BitVMは、任意のプログラムが正常に実行されたことを証明することに成功した人にビットコインを支払えるようにする方法の組み合わせです。 注目すべきは、これは現在のBitcoinで可能であり、コンセンサスの変更は必要ないということです。

    Bitcoinのよく知られた機能は、スクリプトに関連付けられたビットコインを使用するために、 誰かが(Script と呼ばれる)プログラム式を満たすことを要求します。たとえば、 公開鍵を含むスクリプトは、対応する秘密鍵で支払いトランザクションにコミットする署名を作成する場合のみそれが満たされます。 スクリプトはコンセンサスによって強制されるため、(Script と呼ばれる)Bitcoinの言語で書かなければなりませんが、 Scriptは意図的に柔軟性が制限されています。

    Linusの論文は、その制限の一部を回避しています。アリスは、 プログラムが正しく実行されなかった場合にボブが行動を起こすことを信頼しますが、 それ以外のことについてボブを信頼したくない場合、アリスは資金をTaprootツリーに支払うことができます。 このツリーでは、アリスが任意のプログラムを正しく実行するのに失敗したことをボブが実証できたら、ボブはその資金を請求できるようになります。 アリスが正しくプログラムを実行した場合、ボブがアリスを止めようとしてもアリスは資金を使用することができます。

    任意のプログラムを使用するためには、それを非常に基本的なプリミティブ(NANDゲート)に分解し、 ゲート毎にコミットメントを作成する必要があります。これには、とても大量のデータ( かなり基本的なプログラムであっても数GBになる可能性があります)をオフチェーンで交換する必要があります。 しかし、アリスがプログラムを正しく実行したことをボブが同意した場合、必要なのは1つのオンチェーントランザクションのみです。 ボブが同意しない場合は、比較的少数のオンチェーントランザクションでアリスの失敗を実証できるはずです。 セットアップがアリスとボブのペイメントチャネルで行われた場合、チャネルのセットアップと、 ボブがアリスが任意のプログラムロジックを正しく実行するのに失敗したことを実証しようとする協調クローズもしくは強制クローズのいずれかを除いて、 オンチェーンのフットプリントなしで、複数のプログラムを並行にも順番にも実行できます。

    BitVMは、アリスとボブが敵対関係であるような場合、 たとえばチェスのゲームに勝った方に資金が支払われるアウトプットに資金を支払うような場合に、 これをトラストレスに行えます。両者は2つの(ほとんど同じ)任意のプログラムを使用し、 それぞれが同じ任意のチェスの手を実行します。 一方のプログラムはアリスが勝った場合にtrueを返し、もう一方のプログラムはボブが勝った場合にtrueを返します。 次にどちらか一方が、自分のプログラムがtrueと評価された(自分が勝った)と主張するトランザクションをオンチェーンで公開します。 相手は、その主張を受け入れるか(資金の損失を認めるか)、それが虚偽であることを証明します(成功した場合、資金を受け取れます)。 アリスとボブが敵対関係にない場合、 アリスはボブがアリスが正しく計算できなかったことを証明できれば資金ボブに提供するようにすることで、 正しい計算を検証するようボブにインセンティブを与えることができます。

    このアイディアは、メーリングリストだけでなく、 TwitterやBitcoinにフォーカスしたさまざまなポッドキャストでも多くの議論を呼びました。 今後数週間、数ヶ月にわたって議論が続くことを期待しています。

  • MuSig2用のPSBTフィールドのBIP提案: Andrew Chowは、 Sanket Kanjalkarによる先行作業を一部ベースとしたBIPドラフトを Bitcoin-Devメーリングリストに投稿しました。 この提案では、「MuSig2で生成される鍵およびパブリックナンス、部分署名」用のいくつかのフィールドを 全バージョンのPSBTに追加します。

    Anthony Townsは、提案されているBIPにアダプター署名用のフィールドも含めるかどうか 尋ねましたが、議論を続けた結果、おそらく別のBIPで定義する必要があることが示されました。

サービスとクライアントソフトウェアの変更

この毎月の特集では、Bitcoinのウォレットやサービスの興味深いアップデートを取り上げています。

  • BIP-329 Python Libraryリリース: BIP-329 Python Libraryは、BIP329準拠のウォレットラベルファイルの読み取り、書き込み、 暗号化および復号ができるツールのセットです。

  • LNテストツールDopplerの発表: 最近発表されたDopplerは、LND、CLNおよびEclairの実装を一緒にテストするために、 ドメイン固有言語(DSL)を使用してBitcoinおよびLightningノードのトポロジーと オンチェーン/オフチェーン支払いのアクティビティを定義することをサポートします。

  • Coldcard Mk4 v5.2.0リリース: ファームウェアのアップデートには、バージョン2PSBTBIP370サポートと、 追加のBIP39サポートおよびマルチシード機能が含まれれています。

  • Tapleaf circuits: BitVMのデモ: Tapleaf circuitsは、ニュースレターの前半で説明したBitVMアプローチを使用したBristol回路の概念実証の実装です。

  • Samourai Wallet 0.99.98iリリース: 0.99.98iのリリースには、追加のPSBT、UTXOのラベル付および、バッチ送信機能が含まれています。

  • Krux: 署名デバイスファームウェア: Kruxは、汎用ハードウェアを使用してハードウェア署名デバイスを構築するためのオープンソースのファームウェアプロジェクトです。

リリースとリリース候補

人気のBitcoinインフラストラクチャプロジェクトの新しいリリースとリリース候補。 新しいリリースにアップグレードしたり、リリース候補のテストを支援することを検討してください。

注目すべきコードとドキュメントの変更

今週のBitcoin CoreCore LightningEclairLDKLNDlibsecp256k1Hardware Wallet Interface (HWI)Rust BitcoinBTCPay ServerBDKBitcoin Improvement Proposals(BIP)Lightning BOLTsおよび Bitcoin Inquisitionの注目すべき変更点。

  • Bitcoin Core #27255は、miniscripttapscriptに移植します。 このコードの変更により、miniscriptがP2TRアウトプット・ディスクリプターのオプションとなり、 「TapMiniscript descriptors」の監視と署名の両方がサポートされるようになりました。 これまでは、miniscriptはP2WSHのアウトプット・ディスクリプターでのみ利用可能でした。 作者は、P2WSHディスクリプターにおけるmultiセマンティクスに合致する、 P2TRディスクリプター専用の新しいmulti_aフラグメントが導入されたことに言及しています。 PRの議論では、作業の大部分は、Tapscriptのリソース制限の変更の適切な追跡のために行われました。

  • Eclair #2703は、ノードの残高が少なく、おそらく支払いを拒否する必要がある場合に、 利用者がローカルノードを経由して支払いを転送するのを抑制します。 これは、ノードがHTLCの上限額を下げたことをアドバタイズすることで実現されます。 支払いの拒否を防ぐことで、支払人の体験を向上させ、 最近の支払いの転送に失敗したノードを考慮する経路探索システムによってローカルノードがペナルティを受けるのを回避するのに役立ちます。

  • LND #7267は、ブラインド・パスへの経路を作成できるようにし、 LNDのブラインドペイメントの完全なサポートに大きく近づきました。

  • BDK #1041は、プログラムのRPCインターフェースを使用して、 Bitcoin Coreからブロックチェーンのデータを取得するためのモジュールを追加しました。