Develop with pleasure!

福岡でCloudとかBlockchainとか。

1P1Cパッケージリレー

Bitcoin Core v28.0で新たにサポートされた機能の1つが1P1C(1 Parent 1 Child)パッケージリレー。パッケージリレーというのは、複数の関連トランザクションをまとめてP2Pネットワークでリレーできるようにする機能のこと。 複数の関連トランザクションのセ…

オフチェーンベースの流動性提供スキームSuperScalar

LNのインバウンド流動性問題 LNでチャネルを新規に開設する場合、開設時は通常チャネル残高=自分の残高となる。これはチャネルを介して自分が支払うアウトバウンド流動性は保持しているけど、チャネルを介して支払いを受け取るインバウンド流動性はまったく…

ツーショットアダプター署名

アダプター署名と言えば、HTLCに代わるPTLCや、スクリプトレスなAtomic Swapを行う際に利用される暗号プリミティブ。簡単にSchnorr署名の例で説明すると*1、 鍵ペアをP = xG(P:公開鍵、x:秘密鍵、G:ベースポイント)として、メッセージmに署名する場合、…

Bitcoin Coreのデータの難読化

ウィルス対策ソフトウェアの誤検知により、BitcoinのブロックやUTXOセットのデータが自動的に隔離/削除され、bitcoindがクラッシュしデータの破損につながる事例がいくつか報告された結果、DBのデータを難読化する機能が搭載された。 UTXOセットのデータ(ch…

btcd v0.24.2未満に存在したコンセンサスバグの内容

先日公開されたbtcd v0.24.2未満に存在したコンセンサスバグについて↓ CVE-2024-38365 public disclosure (btcd `FindAndDelete` bug) - Implementation - Delving Bitcoin 署名検証時の動作 バグの原因となっていたのは、Segwit導入前のレガシーなトランザ…

Bitcoin Core v28.0でPay to Anchorをサポート

先日リリースされたBitcoin Core v28.0が、Pay to Anchorアウトプットを使用するトランザクションのリレーをサポートした。Pay to Anchorというのはエフェメラルアンカーという提案の一部。 エフェメラルアンカー エフェメラルアンカーは、ライトニングネッ…

マイニングプールのプロトコル

Bitaxeを入手したのをきっかけに↓、プールマイニングにも興味出てきたので、最近のマイニングプールの仕組みについて調べてみた。※ Bitaxe単体でマイニングに成功することは基本的にない。 プールマイニングは、多数のマイナーが協力して新しいブロックを見…

FROST用の分散鍵生成プロトコルChillDKG

少し前に、Schnorrベースの閾値署名スキームFROST用にChillDKGという分散鍵生成スキームのBIPドラフトが発表された↓ https://github.com/BlockstreamResearch/bip-frost-dkg FROSTはShcnorrベースの閾値(t-of-n)のマルチシグに対応した署名スキームだけど…

鍵流出攻撃Dark Skippy

ハードウェアウォレットからマスターシードを流出させるDark Skippyという新しい攻撃手法が最近公開された↓ https://darkskippy.com/ 悪意ある署名デバイスによる攻撃 Dark Skippyも、ハードウェアウォレットのような署名デバイスで悪意あるファームウェアが…

Testnet 4の仕様を定義したBIP-94

現在のTestnet 3を置き換えるTestnet 4の仕様がBIP-94としてBIPにマージされた↓ https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki testnetのリセットは、 金銭的価値のないtestnetのコインが詐欺まがいのエアドロップや売買に使用されていた…

サイレントペイメントの仕様を定義したBIP-352

BIP-352はBitcoinの静的な支払いアドレスプロトコルを定義するBIP↓ https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki Bitcoinにおけるプライバシーに関する推奨事項として、アドレスの再利用をしないというのがよく挙げられる。複数のトラン…

量子耐性のある署名アルゴリズムSQIsign

少し前に量子耐性のある署名アルゴリズムを用いたBitcoinのアドレスフォーマットを提案するBIPドラフトが提案された↓ https://github.com/cryptoquick/bips/blob/p2qrh/bip-p2qrh.mediawiki この中で量子耐性のある署名アルゴリズムとして紹介されていたSQIs…

MuSig2の集約公開鍵からの鍵導出スキームを定義するBIP-328

先日マージされたBIP-328↓は、 https://github.com/bitcoin/bips/blob/master/bip-0328.mediawiki MuSig2の集約公開鍵をベースに新たな子鍵を導出するためのスキームを定義した仕様になる。 MuSig2は、n-of-nのマルチシグに参加する複数の参加者の鍵を1つの…

タイムロック付きのFelidity bondのアドレス導出スキームを定義するBIP-46

最近マージされたBIP-46は、Join Marketで既に展開されているFelidity bondのアドレス導出スキームをBIP化したもの↓ https://github.com/bitcoin/bips/blob/master/bip-0046.mediawiki Fidelity bondとは? 元々の意味は、身元保証で、ある人物の行為によっ…

BIP-21 URIをDNSで解決する仕様の提案BIP-353

Bitcoinで支払いをする場合、その支払先はアドレスという形で提供され、それをURI形式にしたのがBIP-21↓ techmedia-think.hatenablog.com BIP-21のURIは、bitcoin:の後にアドレスやその他の情報がエンコードされる。ただ、アドレスも人が読みやすい/覚えやす…

BitVMX

BitVMXは、少し前にRootstockLabsが発表したBitVMベースの新しい設計↓ https://bitvmx.org/files/bitvmx-whitepaper.pdf BitVMファミリー 最初に発表されたBitVMは、任意の計算処理について回路を構成し、それをTaprootのスクリプトツリーとしてエンコードし…

ECDSA署名のサイズに対するランポート署名

先月Bitcoin-Devメーリングリストに投稿されたBitcoinにランポート署名を導入する提案↓ Signing a Bitcoin Transaction with Lamport Signatures (no changes needed) 以前、OP_CATを利用した提案はあったけど↓、↑はOP_CATを必要とせず現状のBitcoinで動作す…

OP_CATの再導入の提案BIP-347

TapscriptでOP_CAT opcodeを利用可能にしようという提案のBIPがBIP-347として登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0347.mediawiki OP_CATとは OP_CAT opcodeは、スタックから上位2つの要素をポップし、それらを連結した値をスタッ…

BitcoinのP2Pネットワークにおけるトランザクションパッケージのリレー(BIP-331)

BitcoinのP2Pネットワークにおいて、トランザクションパッケージのリレーをサポートするBIP-331が先日登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0331.mediawiki トランザクションリレーとmempool 現状のBitcoinのトランザクションリレー…

BitVM 2

Bitcoin上で任意のプログラムの検証を可能にするBitVMについて↓ techmedia-think.hatenablog.com この提案では、チャレンジ&レスポンスを行えるのはコントラクトに参加する二者に限定されていたけど、これを マルチパーティ構成に拡張し、 さらに一連のチャ…

Bitcoinのブロック1,983,702 問題

Bitcoin Optechのニュースレター#296で、コンセンサスクリーンアップの提案が再検討されているという話の一部に、ブロック1,983,702問題が取り上げられていたので、その内容について。 BitcoinのUTXOは、そのアウトプットが含まれるトランザクションのTXIDと…

ASMapファイルを作成してみる

Bitcoin Coreはv0.20.0からASMapを利用したアウトバウンドピアの選択をサポートしている↓ Bitcoin Core 0.20.0でASマップを使ったピア選択を有効にする - Develop with pleasure! このASMapを作成して配布するプロセスについて最近投稿されていたので↓ delvi…

Vault用のopcodeの導入を提案するBIP-345

少し前に、BitcoinでVaultを実現するために2つのopcodeを導入するソフトフォークの提案がBIP-345として登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0345.mediawiki Vaultとは? Vault(金庫)は、その名前から分かるようにビットコインを…

Bitcoin Coreに実装された変異ブロックの早期検証

最近Bitcoin Coreにマージされた変異ブロックに対する早期検証ロジック↓ github.com 変異ブロックとは? 変異ブロック(Muted Block)とは、新しく生成された有効なブロックの一部を変更した無効なブロックではあるけど、ハッシュ値が元のブロックと同じブロ…

Ristretto Group

最近、よく見かけるRistrettoについて調べてみた↓ https://ristretto.group/ Ristrettoが解決すること Ristrettoは、楕円曲線の内、曲線上の有効な点の総数(位数)が素数ではない楕円曲線から、位数が素数となる群を構築する抽象化レイヤーを提供するための…

v3トランザクションリレー

最近Bitcoin Coreにv3トランザクションリレーポリシーのPRがマージされたので↓ github.com v3トランザクションリレーについてまとめてみた。 トランザクションの手数料引き上げ方法と課題 Bitcoinでブロードキャスト済みのトランザクションの手数料を引き上…

FROSTを利用したマルチシグの設定変更

FROSTはSchnorrベースの閾値署名方式で、プロトコルの内容については過去の記事↓やGBEC動画参照。 techmedia-think.hatenablog.com このFROSTを利用してBitcoinでマルチシグウォレットの開発を進めているFrostsnapというプロジェクト↓ https://frostsnap.com…

Bitcoin Core v22.0未満に存在したブロック遅延バグの開示

Optechのニュースレターに掲載されていた、Delving Bitcoinフォーラムで開示されたBitcoin Core v22.0より前のバージョンに存在したブロック遅延攻撃を可能にする脆弱性↓ https://delvingbitcoin.org/t/block-stalling-issue-in-core-prior-to-v22-0/499 脆…

Repairable Threshold Scheme

最近、Schnorrベースの閾値署名スキームFROSTをベースにして、暗号技術だけでt-of-nのマルチシグの設定を動的に調整可能にする提案が行われている。その中で、母数nの数を増やす際に利用されているのが、RTS(Repairable Threshold Scheme)。 RTSは、シャミ…

btcdで発見された相対的タイムロックのコンセンサスバグ

先日、Delving Bitcoinで開示された、btcdで発見された相対的タイムロックのコンセンサスバグについて↓ https://delvingbitcoin.org/t/disclosure-btcd-consensus-bugs-due-to-usage-of-signed-transaction-version/455 相対的タイムロック トランザクション…