Develop with pleasure!

福岡でCloudとかBlockchainとか。

サブマリンスワップの改良提案Papa Swap

サブマリンスワップは、オフチェーンのコインとオンチェーンのコインを交換するためのプロトコル。LN上のコインとオンチェーンのコインを交換したい場合、LNの支払いを入手するために必要なプリイメージと、オンチェーンの資金を受け取るために必要なプリイ…

ハッシュベースのステートレスなデジタル署名スキームSPHINCS+

以前のW-OTS+の記事で少し触れたけど↓ techmedia-think.hatenablog.com NISTのポスト量子暗号の1つであるハッシュベースのデジタル署名アルゴリズムSPHINCS+は、 (↑の)W-OTS+ ハイパーツリー FORS(Forest of Random Subsets) を組み合わせてステートレス…

RGB 1.0のペーパーを読んでみた

先日RBG 1.0のイエローペーパーが公開されてたので見てみる↓ github.com 2018年に記事を書いた頃からだいぶ様変わりしてる。 SONICアーキテクチャ ペーパーでは、現代のコンピューターの基本的なアーキテクチャの一つであるノイマン型アーキテクチャと対比し…

Async Payjoinの仕様を定義するBIP-77

Payjoinは、送金トランザクションのインプットに送信者のインプットに加えて受信者のインプットを加えることで、トランザクションのインプットはすべて同一ユーザーが所有しているという「common input ownership」と呼ばれる分析のヒューリスティックを破壊…

オンチェーンフットプリントを劇的に削減するBitVM 3

BitVM 0、BitVM 1、BitVM 2、BitVM Xに続いて、最近新たにBitVM 3が提案された↓ https://bitvm.org/bitvm3-rsa.pdf (2025.07.17追記:その後、セキュリティ仮定に誤りがあることが報告され、この論文は廃止され、RSAベースのガーブリングに代わる新たなBitV…

Garbled Circuitを利用してBitVMのオンチェーンゲート実行をオフロードするDelbrag

最近公開されたBitVM 3のヒントとなったJeremy Rubinによるドラフト論文Delbrag↓ https://rubin.io/public/pdfs/delbrag.pdf この論文では、Garbled Circuitを利用して、Bitcoin上で任意の計算の検証を可能にするBitVMを効率的に実現する方法を提案している…

3ラウンドのECDSA閾値署名プロトコルDKLS23

ECDSAベースの閾値署名というと、GG18/20あたりが有名↓ techmedia-think.hatenablog.com これらのプロトコルは加法準同型性のある暗号化方式であるPaillier暗号に依存しており、署名の生成に6ラウンドの通信を必要とする。 その後提案されたDKLS23という署名…

紛失通信とVOLE

3ラウンドECDSA閾値署名プロトコルDKLS23について調べてたいたら、そこで登場する構成要素についてまず理解しておく必要があったので、署名プロトコルにいく前に、まず紛失通信(Oblivious Transfer)とVOLE(Vector Oblivious Linear Evaluation)について…

ゼロ知識証明プロトコルLigero

Ligeroは、証明者が秘密の値を知っていることを、その秘密の値を明らかにすることなく検証者に納得させるゼロ知識証明プロトコルの一種↓ eprint.iacr.org スキームの仕組みについて、SHA-256のプリイメージを知っていることを証明するユースケースで見ていく…

Sumcheckプロトコル

今回は、zk-SNARKs/STARKsなどゼロ知識証明系のプロトコルでよく登場するSumcheckプロトコルについて。 Sumcheckプロトコルは1992年に発表された多変数多項式を利用したプロトコル。多変数多項式は複数の変数で構成される多項式で、例えば2つの変数xとyで構…

Bitcoinの長年の課題を解決するコンセンサスクリーンアップ提案(BIP-54)

Bitcoinに長年存在している複数の脆弱性および弱点に対処するために長年議論されていたコンセンサスクリーンアップの提案が最近BIP-54として最近マージされた↓ https://github.com/bitcoin/bips/blob/master/bip-0054.md コンセンサスクリーンアップ コンセ…

楕円曲線の点に対する部分群のメンバーシップチェック

先日Besuに存在していたBN254曲線上の点の検証ロジックのバグが開示された↓ blog.ethereum.org このバグの内容とは直接関係ないけど*1、解説の中に登場していた楕円曲線上の点が部分群に属しているかどうかのメンバーシップチェックの方法がいろいろあるよう…

Bitcoinの支払いURIスキームをアップデートするBIP-321

Bitcoinで支払先の情報を記述するURIスキームとしては、古くからBIP-21が使用されてきた↓ techmedia-think.hatenablog.com ただ、BIP-21はアドレス仕様として正式にサポートしているのがBase58checkエンコーディング(P2PKH、P2SH)のみであったり*1、新しい…

単一のSchnorr署名と同サイズの集約署名を可能にするDahLIAS

少し前に発表された集約署名の新しいスキームDahLIAS↓ eprint.iacr.org 自分も異なる文脈で集約署名という言葉を使ってるので紛らわしいけど、↑の集約署名というのは、MuSigやFROSTのように複数の署名者(公開鍵)が同じメッセージに署名するマルチシグの集…

IBDを高速化する新たな提案SwiftSync

先日SwiftSyncというBitcoinのブロックチェーンの初期同期(IBD)を高速化するための新しい提案が発表された↓ SwiftSync -- Speeding up IBD with pre-generated hints (PoC) - Implementation - Delving Bitcoin 現状のIBD ブロックチェーンの履歴データは…

Bitcoin Core v29.0がCMakeをサポート

先日リリースされたBitcoin Core v29.0でビルドシステムが刷新された↓ https://bitcoincore.org/ja/releases/29.0/ これまで長らくAutotoolsを使ってビルドしていたけど↓ techmedia-think.hatenablog.com ビルドシステムがCMakeに移行された。 CMakeを使った…

既存のUTXOを量子コンピューター登場後でも安全に使用するための提案

Bitcoin Optechのニュースレター #348で紹介されていたTim Ruffingの以前の提案↓ https://gnusha.org/pi/bitcoindev/1518710367.3550.111.camel@mmci.uni-saarland.de/ は、量子コンピューター登場後でも既存のUTXOを安全に使用できるようにするスキームの提…

Blockstream JadeをDIYしてみた

Blockstream JadeはBlockstreamが提供しているハードウェアウォレット。Githubのリポジトリを見てみると、DIY用のガイドがあったので、M5Stack Basicにセットアップしてみた。 環境構築 README.mdに書かれてる内容に従って、ESP32の開発環境であるesp-idfを…

LND 0.17.5以下に影響する不要なフェイルバックの脆弱性

先日、Matt MorehouseによってLND 0.17.5以下に影響する脆弱性の内容が開示された↓ morehouse.github.io ※ なお、この脆弱性を悪用する場合、別途ターゲットとなるノードを適切なタイミングで再起動させる必要がある。そのようなことが可能な別の攻撃ベクト…

LNピアのデータを保管するピアストレージ

先月ピアストレージの仕様がBOLTにマージされた↓ https://github.com/lightning/bolts/blob/master/01-messaging.md#peer-storage ピアストレージ ピアストレージというのは、LNでピアから受け取った任意の暗号化データを受け入れるオプションサービス。 チ…

LDK v0.1以下に存在した2つの脆弱性

LDK(Lightning Development Kit )はLN対応アプリケーションを構築するためのライブラリ。 このLDKについて、先月末に2つの嫌がらせ攻撃を可能にする脆弱性が開示された。 流動性をロックする嫌がらせ LDK 0.0.125以下に存在した脆弱性は、アンカーチャネル…

Bitcoin Core v28.0からサポートされたスナップショットベースの同期

Bitcoin Core v28.0以降からサポートされたAssumeUTXOを用いた新たな同期モードを試してみた。 ブロックチェーンの同期 ブロックチェーンの同期とは、チェーンの状態の同期を意味する。Bitcoinの場合、状態とはUTXOセットの状態を指す。ノードを初めて起動す…

離散対数の等価性の証明の生成/検証プロトコルを定義する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で実現するトランザクション間の状態遷移

少し前にStarkWareが、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…