Develop with pleasure!

福岡でCloudとかBlockchainとか。

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

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

Fiat-Shamir変換の安全でない適用による脆弱性Frozen Heart

最近公開された、Fiat-Shamir変換を正しく適用できていないプロトコルや実装において、証明システムの偽造が可能になる脆弱性「Frozen Heart」について↓ blog.trailofbits.com Fiat-Shamir変換とは? Fiat-Shamir変換は、証明システムを非対話型にするために…

Ed25519で決定論的な鍵導出をサポートするBIP32-Ed25519

Bitcoinのウォレットなどが、単一のマスターシードから多数の鍵ペアを決定論的に導出する仕様を定義したのがBIP-32↓ techmedia-think.hatenablog.com これは、Bitcoinが採用している楕円曲線secp256k1とECDSAを前提に作られた仕様になる。 これに対して、EdD…

Merkle Sum Sparse Merkle Tree

先日、Olaoluwa Osuntokunが発表したTaprootを利用したアセットオーバーレイプロトコルTaro↓ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020196.html 今回はその構成要素の1つであるMerkle Sum Sparse Merkle Tree(MS-SMT)の仕…

1つのUTXOの所有権を複数人でシェアするCoinPool

Lightning Networkなどの現在主流のペイメントチャネルプロトコルはいずれも2人で1つのUTXOの所有権を管理するプロトコルだけど、N(N > 2)人で1つのUTXOの所有権を管理できるようにするプロトコルがCoinPoolで、少し前にホワイトペーパーが公開された↓ので…

オフチェーンプロトコルのプライバシーを向上させるオンチェーンウォレットのポリシーを定義したBIP-326

最近オフチェーンプロトコルのプライバシーを向上させるために、オンチェーンウォレットで実装が推奨されるポリシーが、BIP-326として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0326.mediawiki Informational BIPなのでコンセンサスに影…

SMART Health CardのVerifiable Credential

SMART Health Cardは、COVID-19のワクチン接種や検査結果を検証可能な方法で提示できることを直近の目標としたヘルスカードのフレームワーク。長期的には予防接種やその他の健康情報なんかもサポートする計画らしい。これらの証明について、組織や国を超えて…

通信ラウンドの効率性を重視したSchnorrベースの閾値署名スキームFROST

TaprootのアクティベートによりBitcoinでもSchnorr署名が利用可能になったけど、Schnorr署名をメリットの1つはマルチシグの署名を単一の署名に集約できる集約特性があることで、この恩恵を受けるためにはこのようなマルチシグを扱うウォレットの開発が必要に…

CTVを利用したDLCプロトコルのパフォーマンス改善

先月Lloyd Fournierにより提案された、現在提案中のBIP-119のCTV(OP_CHECKTEMPLATEVERIIFY)を使うとDLCのパフォーマンスが大幅に向上するという内容についてみてみる↓ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019808.html …

CTVとANYPREVOUTを代替するTXHASHとCSFS

先月Russell O’ConnorがBitcoin-Devメーリングリストに投稿した、Bitcoinの次のソフトフォークの内容として検討されている、CTV(OP_CHECKTEMPLATEVERIFY)opcodeと、eltooスタイルのLightningチャネルを構成可能にするANYPREVOUTを、新しいopcode TXHASHとC…

KZGコミットメントのマルチプルーフ

多項式コミットメントスキームの1つであるKZGコミットメントの仕組みについて調べた↓ techmedia-think.hatenablog.com ↑では、ベクトルを多項式に変換することでベクトルにコミットし、その多項式での評価値と単一の楕円曲線のグループ要素をプルーフとして…

KZGコミットメントを計算して理解する

以前ペアリングが可能な楕円曲線を利用するコミットメントスキームであるKZGコミットメントについて書いた↓ techmedia-think.hatenablog.com 楕円曲線を利用したコミットメントスキームとしては、Pedersenコミットメントが有名だが、Pedersenコミットメント…

The MergeによるEthereumのPoSへの移行

Ethereum 2.0のロードマップがだいぶ変わっていたので、久しぶりに調べてみた↓ https://tim.mirror.xyz/CHQtTJb1NDxCK41JpULL-zAJe7YOtw-m4UDw6KDju6c https://tim.mirror.xyz/sR23jU02we6zXRgsF_oTUkttL83S3vyn05vJWnnp-Lc https://blog.ethereum.org/2021/…

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

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

GraftrootとG'rootを組み合わせたEntroot

Pieter WuilleとAnthony Townsの議論から、GraftrootとG'rootを組み合わせたEntrootというプロトコルが公開されてる↓ https://gist.github.com/sipa/ca1502f8465d0d5032d9dd2465f32603 Graftrootとは? Graftrootは、Gregory MaxwellがTaprootを発表した後に…

Generalized taproot(G'root)

Generalized taproot(G'root)は、2018年にAnthony Townsによって提案されたPedersen Commitmentを使ってTaprootを実現するプロトコルの提案。 Taprootのscript-pathは、アンロック条件をマークルツリーにエンコードするMAST(Merklized Alternative Script…

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の…

Inherited IDを使ったトランザクションの参照と新しいチャネルプロトコル2Stage

先月、Bitcoin-DevメーリングリストにJeremyによって代理投稿された、匿名の開発者(John Law)による投稿では↓ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html 現在提案されれているBIP-118(anyprevout)に代わり、In…

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ノードやそのチャネルの情報が(更新を含めて)配信されるの…

TaprootとTLUV opcodeを利用したCovenantsの新しい実現方式

最近、Anthony TownsによってCovenantsの新しい実装方式を提案されている↓ https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019419.html https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019420.html こ…

Output Script Descriptorの基本仕様を定義したBIP-380

Output Script Descriptorは、Bitcoin Core v0.17からサポートされ始めた言語で、ウォレットやその他のプログラムが、自身が所有(関連)するUTXOを追跡するのに必要な情報を含むデータを定義する。 Bitcoinのウォレットの多くはHDウォレットをサポートして…

楕円曲線のスカラー倍算アルゴリズム Part 2

前回の投稿では、楕円曲線のスカラー倍算のアルゴリズムとしてバイナリ法やWindow法のアルゴリズムについて、また射影座標を用いた高速化手法について解説した↓ techmedia-think.hatenablog.com 今回は、もともとスカラー倍算の高速化について調査するきっか…

異なる楕円曲線間の離散対数の等価性の証明

MoneroからBitcoinとMoneroでAtomic Swapが利用可能になったというアナウンスが出ていて↓ https://www.getmonero.org/2021/08/20/atomic-swaps.html そのプロトコルの一部で使用されているのが、異なる楕円曲線間の離散対数の等価性の証明。開発をしているの…

LitecoinのMWEBで非対話型トランザクションを構築するプロトコル(LIP-0004)

Litecoinでは、Extension Blockを利用してMimblewimbleを実装するMWEBの開発が行われているけど、その中でMimblewimbleのトランザクションを送信者のみが構築するプロトコルがLIP-0004として提案されている↓(まだ正式にLIPとしてマージされてる訳ではななく…

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の支払いを受ける場合、チャネルにインバウ…

Bitcoin Scriptを使ったランポート署名の検証と量子耐性

最近Bitcoin-Devメーリングリストに、OP_CATを使ってBitcoinに量子耐性をもたせる方法について投稿されてたのが興味深かったので見てみる↓ [bitcoin-dev] OP_CAT Makes Bitcoin Quantum Secure [was CheckSigFromStack for Arithmetic Values] アイディアは…

Schnorr署名とOP_CATを使ったCovenants

Covenantsは、Bitcoinのコインの用途(送り先など)を制限するための仕組み。これまでCovenantsを導入する仕組みの提案がいくつかあったけど、2021年1月にAndrew PoelstraがSchnorr署名とOP_CATを利用したCovenantsの構成を発表しているので、その内容につい…

中継者の協力なしにチャネルの更新を可能にするVirtual Channel

これまで、Multi-Hop LocksやAtomic Multi-Channel Update、Anonymous Atomic Locksなど、多くのペイメントチャネル系の提案をしてきたPedro Moreno-Sanchezが新しいペーパー Donner: UTXO-Based Virtual Channels Across Multiple Hops を発表してたので、…