Develop with pleasure!

福岡でCloudとかBlockchainとか。

BLS署名を利用した検証可能なwitness encryption

検証可能なwitness encryptionという新しい暗号プリミティブを利用してDLCを構成する新しい提案のペーパーが発表されてたので↓ https://eprint.iacr.org/2022/499.pdf 「II. TECHNICAL OVERVIEW」の内容を見てみた(まだ一部よく分かってない)。 BLS署名 ペ…

x-only public keyの課題とワークアラウンドな回避策

ちょっと前のBitcoin Optechのニュースレターでx-only public keyの課題とその回避策について取り上げられていたので、詳しく調べてみた。 x-only public keyとは? Bitcoinに導入されたTaprootでは、署名検証に使用する公開鍵に32バイトのx-only public key…

IONのDIDのリカバリーと無効化操作をアンカリングしてみる

techmedia-think.hatenablog.com techmedia-think.hatenablog.com ときたので、残りのRecoverおよびDeactivate操作をアンカリングしてみる。 Recover操作 Recoverは、Update Keyの更新とRecovery Key自体の更新および、DID State Patcheで定義したDID Docume…

IONのDIDを更新してみる

前回の記事でIONのDIDを登録したので↓ techmedia-think.hatenablog.com 今回は、登録したDIDの鍵を更新するUpdate操作をアンカリングしてみる。 Update操作 Update操作は、現在DIDに紐付けられているUpdate Keyを使ってDID Documentの更新(署名鍵やservice…

IONのDIDをIPFSとBitcoinにアンカリングしてみる

前回は、IONのDIDを生成した↓ techmedia-think.hatenablog.com ↑では、DID Documentを生成し、IONのプロトコルに沿って識別子であるDIDを計算したけど、実際にこれだけだとローカルで計算してるだけなので、続いて、このDIDをCAS(Content Addressable Stora…

非対話型のSchnorr署名のハーフアグリゲーション

先日、Blockstreamのブログ記事↓で、非対話型のSchnorrの署名集約スキームについて知ったので、 medium.com ↑にリンクされているドラフトBIPに記載されていた↓のペーパーを斜め読みしてみた。 https://eprint.iacr.org/2022/222.pdf Schnorr署名の集約と言え…

IONのDIDを作ってみる

IONはMSが中心になって開発したDIDのプロトコルの1つ(did:ion)。実体は、アンカリング先のブロックチェーンにBitcoin、Content-Addressed Storage System(CAS)ノードにIPFSを用いたSidetreeプロトコルになる。この他にアンカリング先をEthereumにしてSid…

USDTを使ってBitcoin Coreをトレース

Bitcoin Coreでは、User-space Statically Defined Tracing(USDT、※Tetherではない)ベースのトレースポイントが提供されており、Linux環境で動作するBitcoin Coreでは、このトレースポイントを使って、内部のデータにアクセスできるようになっている。 Bit…

MWEBチェーン上での送金と非対話型のトランザクションの構築

前回、MWEBチェーンへのペグインまで行ったので↓ techmedia-think.hatenablog.com 今回は、MWEBチェーン上でMWトランザクションを使った送金をしてみる。 MWEB上での送金 新しいmwebタイプのアドレスを作成し、そこに送金する↓ $ ./litecoin-cli sendtoaddre…

LitecoinでMimblewimbleが利用可能なMWEBチェーンにペグインしてみる

LitecoinはExtension Blockという手法を使ってMimblewimbleを導入し(MWEB)、mainnetで2022年5月22日にアクティベートされた。今回はそんなMimblewimbleを試してみる(mainnetじゃなくtestnetだけど)。 トランザクション構造が全く異なるMimblewimbleをソ…

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