Develop with pleasure!

福岡でCloudとかBlockchainとか。

離散対数の等価性の証明の生成/検証プロトコルを定義するBIP-374

先日マージされたBIP-374↓は、楕円曲線のベースポイントGともう1つの点Bを基に、それぞれに同じスカラー値aを乗算した点A = aGと点C = aBが同じ、同じスカラー値(離散対数)aによって導出された点であることをaの値を明かすことなく証明する=離散対数の等…

Great Script RestorationとWinternitz OTS+

Great Script Restoration Great Script Restoration(GSR)は、2010年にBitcoinで無効化されたopcode群に対して、重みベースのバジェットを付与して再導入するRusty Russellの提案↓ https://github.com/rustyrussell/bips/blob/890656f624e03ebbd31560f6511…

OP_CATを使用したPoWベースの分散型Faucet

少し前にAnthony TownsがDalving Bitcoinに投稿した、OP_CATを用いてPoWの検証をすることで、分散型のFaucetを実現する提案が面白かった↓ https://delvingbitcoin.org/t/proof-of-work-based-signet-faucet/937 OP_CATを使用したPoWの検証 まだBitcoinに導入…

現状のBitcoinでコベナンツを可能にするColliderScript

2010年にOP_CATを含む複数のopcodeがBitcoinで無効になり、その後の研究でこの時無効になったopcodeがあれば、実はBitcoinでコベナンツを実現できることが判明するも、無効化された現状のBitcoinでコベナンツを実現する方法はこれまでなかった。ところが最近…

OP_CHECKSIGFROMSTACKの導入を提案するBIP-348

先日OP_CHECKSIGFROMSTACK opcodeの導入を提案するBIP-348がBIPとして登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0348.md OP_CHECKSIGFROMSTACK OP_CHECKSIGFROMSTACK(OP_CSFS)自体は、昔からElementsに導入されているopcodeで、スタッ…

Tapscript用の新しいopcode OP_INTERNALKEYを提案するBIP-349

先日、TapscriptにOP_INTERNALKEYという新しいopcodeの導入を提案するBIP-349がBIPとして登録された↑ https://github.com/bitcoin/bips/blob/master/bip-0349.md OP_INTERNALKEY OP_INTERNALKEY opcodeは、スタックにTaprootの内部鍵をプッシュするopcode。T…

OP_CATで実現するトランザクション間の状態遷移

少し前にStartWareが、Bitcoinのsignet上でOP_CATを利用したSTARKベースのゼロ知識証明の実証をしてたので、どんな内容なのか見てる中で、トランザクションチェーンで状態を遷移させる手法が興味深かった↓ The path to general computation on Bitcoin | Sta…

ECDSAとOP_CATを使ったコベナンツ

OP_CATとSchnorrのトリックを使ってBitcoinでコベナンツを実装するAndrew Poelstraの提案について以前書いたけど↓ techmedia-think.hatenablog.com その後、Robin Linusが同様のことをECDSAで行う方法を公開してた↓ Emulate covenants using only OP_CAT and…

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…