Develop with pleasure!

福岡でCloudとかBlockchainとか。

Grin

GrinのPoWアルゴリズムCuckoo cycleとその実装の脆弱性CVE-2020-15899

最近公開されたGrinの脆弱性CVE-2020-15899↓について見てみる。 https://github.com/mimblewimble/grin-security/blob/master/CVEs/CVE-2020-15899.md Cuckoo cycle GrinはDual Proof of Workという仕組みを採用している。これは1つはASICフレンドリーなPoW…

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 …

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

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

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で導入されたコイ…