Develop with pleasure!

福岡でCloudとかBlockchainとか。

Mimblewimble

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をソ…

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

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

Grinにおけるリプレイアタックとその対策

リプレイアタックというと、チェーンがハードフォークした際に、片方のチェーンで発生した送金Txが、もう一方のチェーンで意図せずブロードキャストされる=リプレイされる問題として2017年のフォークコイン誕生の際によく話題に挙がった。 ハードフォークと…

Bulletproofのrange proofに任意のデータを埋め込む方法と復元する(rewind)方法

先日、Grinがウォレットリストアの際に自身のUTXOを識別するのにBulletproofsのrange proofにヒントを隠している記事を書いたけど、↓ techmedia-think.hatenablog.com 今回の記事では、リストアという限定的な利用方法だけでなく任意のデータをrange proofに…

Bulletproofsを利用したGrinのウォレットのリストア

BitcoinのウォレットであればほぼBIP-32のHDウォレットをサポートしているため、マスターシードさえバックアップしておけば、いつでもウォレットをリストアすることができる。Bitcoinの受け取りに使用するアドレスは全てマスターシードから導出した鍵から作…

Grinで発見された脆弱性CVE-2020-6638の内容

ちょっと前にGrinで発表された脆弱性CVE-2020-6638↓の内容について見てみる。 https://github.com/mimblewimble/grin-security/blob/master/CVEs/CVE-2020-6638.md Grinの構成要素 具体的な脆弱性の解説の前に、Grinの構成要素について抑えておく↓ Pedersen …

Bulletproofsを利用したrange proofの仕組み

techmedia-think.hatenablog.com ↑でBulletproofsの基本となる内積の証明の仕組みについて書いたので、今回はこれがCTやMimblewimbleなどで必要とされるrange proofにどう適用されるのか見ていく。 range proofとは? CTと同様Mimblewimbleなどでもコインの…

チェーン上で異なるコンセンサスの実行を可能にする拡張方法「Extension Block」

最近、LitecoinがMimblewimbleを導入するLIP(Litecoin版BIP)が提案された↓ https://github.com/litecoin-project/lips/blob/master/lip-0002.mediawiki https://github.com/litecoin-project/lips/blob/master/lip-0003.mediawiki Litecoinは元々Bitcoinの…

Grinでオフチェーン決済するためのPayment Channelプロトコル「Elder Channel」

Mimblewimbleを実装したGrinにはBitcoinのようなスクリプト機能は存在しない。コインの所有権は、秘密鍵の役割をするPedersen CommitmentのBlinding Factorの値を知っているかどうかで、UTXOを使用する際はその値を使った電子署名が求められる。Mimblewimble…

BEAMが提供する監査機能

MimblewimbleではPedersen Commitmentにより取引する量が秘匿され、さらにスクリプトがなくPedersen CommitmentのBlinding Factorがそのコインの所有権を証明するキーになる。そのため、Perdersen Commitmentを見ただけでは誰から誰へのいくらの送金なのかは…

Grinで作るAtomic Swapとアウトプットへのタイムロック条件の適用

techmedia-think.hatenablog.com について整理したので、今回は応用編ということでAtomic Swapや、タイムロックの仕組みをアウトプットと組み合わせた(BitcoinのOP_CLTV使うようなイメージ)条件付きのタイムロック支払いのコントラクトの構成方法について…

Grinでコントラクトを作る際の基本要素

MimblewimbleとGrinのトランザクション構成が把握できたので↓ techmedia-think.hatenablog.com 今回は↓を参考にGrinでどんなコントラクトを作る際に使える基本要素についてまとめる。 https://github.com/mimblewimble/grin/blob/master/doc/contracts.md Mi…

MimblewimbleとGrinのトランザクションフロー

Grinのトランザクションのトランザクションフローを見てたら、オリジナルのMimblewimbleと署名プロセスが少し変わってたのでまとめてみた。 Mimblewimbleの基本機能 Pedersen Commitment Gregory Maxwellが提案したConfidential Transactionで導入されたコイ…