Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mimblewimble
Search
shigeyuki azuchi
March 29, 2019
Technology
0
56
Mimblewimble
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2019/03/mimblewimble/
shigeyuki azuchi
March 29, 2019
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Shorのアルゴリズム
azuchi
0
21
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
17
Fiat-Shamir変換と注意点
azuchi
0
120
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
23
BIP-374 離散対数の等価性証明
azuchi
0
42
BIP-353 DNS Payment Instructions
azuchi
0
60
OP_CAT and Schnorr Trick
azuchi
0
58
Pay to Anchorと1P1Cリレー
azuchi
0
51
プロアクティブ秘密分散法
azuchi
0
77
Other Decks in Technology
See All in Technology
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
180
Databricks Free Edition講座 データサイエンス編
taka_aki
0
290
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
210
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
100
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.1k
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.7k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
0
320
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
210
月間数億レコードのアクセスログ基盤を無停止・低コストでAWS移行せよ!アプリケーションエンジニアのSREチャレンジ💪
miyamu
0
800
MySQLのJSON機能の活用術
ikomachi226
0
150
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
550
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
200
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
The Curious Case for Waylosing
cassininazir
0
230
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
We Are The Robots
honzajavorek
0
160
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
430
GitHub's CSS Performance
jonrohan
1032
470k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
KATA
mclloyd
PRO
34
15k
Evolving SEO for Evolving Search Engines
ryanjones
0
120
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
440
Transcript
Mimblewimble
1 Mimblewimble 2016年にTom Elvis JedusorがIRCに投稿した 新しいブロックチェーンのコンセプト https://scalingbitcoin.org/papers/mimblewimble.txt • スクリプトを持たず公開鍵暗号を使った署名検証のみをサポート •
トランザクションカットスルーにより ブロックチェーンデータを削減&プライバシーを向上 • 前提知識 ◦ Confidential Transaction https://goblockchain.network/2019/02/confidential-transaction/
2 Pedersen Commitment Confidential Transactionを導入して量を秘匿化 Commitment = rG + vH
r: ブラインドファクター、 v: コインの量 G, H:楕円曲線上の異なる生成点 • フルノードによる量の検証 {Outputのcommitmentの合計 + fee*H} - {Inputのcommitmentの合計} = 0 Output commitment range proof vが0〜2^64の範囲内であることを証明 Bitcoinのようなロックスクリプト( scriptPubkey)は存在しない。
3 コインの所有権の証明 Commitmentのブラインドファクター = 秘密鍵 Commitment = rG + vH
rの値はコインの受信者がランダムに決定する • InputのCommitment ◦ c1 = 38G + 2H ◦ c2 = 29G + 1H • OutputのCommitment ◦ c3 = 78G + 3H • {Outputのcommitmentの合計} - {InputのCommitmentの合計} = 0 ◦ c3 - {c1 + c2} = 78G + 3H - {38G + 2H + 29G + 1H} = 78G + 3H - {67G + 3H} = 11G != 0 超過値(Excess)が出る。 但し、Hの係数は0になっているため、超過値を秘密鍵として デジタル署名を作ることはできる。
4 コインの所有権の証明 Tx Inputs c1 = 38G + 2H c2
= 29G + 1H Outputs c3 = 78G + 3H Tx Kernel fee: 0H Excess: 11G Excess Sig: lock_height InputsとOutputsのCommitmentとfeeから Excess値を算出し、トランザクションカーネルにセット Excess値を秘密鍵としてトランザクションに署名 ※ トランザクションの署名鍵を知るにはトランザクションの全インプット、 アウトプットのブラインドファクターの知識が必要。
Input ②トランザクションの雛形を作成し、 インプットにコインのCommitmentをセット、 新しくブラインドファクターを選択しお釣り用の Commitmentをアウトプットにセットし、 Txとブラインドファクターの総計を受信者に送る。 5 トランザクションの作成フロー 送信者 受信者
①送金するコインの量(5コイン)に合意 Tx C1 = 15G + 3H C2 = 39G + 4H Output C3 = 78G + 1H 78 - (15 + 39) = 24 ※ 手数料=1コイン ③ 受信用にランダムなブラインドファクターを選択し、 Commitmentを作成。 C4 = 18G + 5H ④ 自身のコミットメントのブラインドファクターと 送信者から受け取ったブラインドファクターの総計から Excess値を計算。 24 + 18 = 42 ⑤ Excess値(42)を秘密鍵として、トランザクションの署名を 作成し、Excess値と署名をトランザクションカーネルにセットし、 ブロードキャスト ⑥フルノードはExcess = {C3 + C4 + fee*H} - {C1 + C2}か検証し、 Excess値の公開鍵に対して有効な署名があるか検証する。 ※ 厳密には各Commitmentのrange proofの検証も行う。
Input ②トランザクションの雛形を作成し、 インプットにコインの Commitmentをセット、 新しくブラインドファクターを選択しお釣り用の Commitmentをアウトプットにセットし、 署名に使うランダムな nonce ksを選択。 Txとブラインドファクターの総計と
ks*Gを受信者に送る。 6 トランザクションの作成フロー(Grin) 送信者 受信者 ①送金するコインの量(5コイン)に合意 Tx C1 = 15G + 3H C2 = 39G + 4H Output C3 = 78G + 1H 78G - (15G + 39G) = 24G ※ 手数料=1コイン ③ 受信用にランダムなブラインドファクターを選択し、 Commitmentを作成。 C4 = 18G + 5H ④ 自身のコミットメントのブラインドファクターと 送信者から受け取ったブラインドファクターの総計から Excess値を計算。 24G + 18G = 42G ⑤ 署名に使うランダムな nonce krを選択する。 署名に使用するnonceの点はR = ks*G + kr*G 署名対象のメッセージを M = fee | lock_heightとし、 署名用のチャレンジ e = SHA256(R| 18G + 24G | M) を計算し、 受信者のSchnorr署名 sr = kr + e*18 を計算し、 sr、18G、kr*Gを送信者に送る。 ⑥ 署名に使用するnonceの点を計算 R = ks*G + kr*G 署名用のチャレンジ e = SHA256(R| 18G + 24G | M) を計算し、 送信者側のSchnorr署名 ss = ks + e*24を計算。 署名を集約しトランザクションの署名を完成させる。 s = ss + sr = ks + kr + e*(24 + 18) (R, s)がトランザクションの署名。秘密鍵は Excess値(42) ※ Grinの場合は公開鍵を送る。 ks*G
7 Cut-through Tx1 C1 = 15G + 4H C2 =
39G + 2H Input Output C3 = 25G + 2H Tx2 C4 = 76G + 1H Input Output C5 = 91G + 1H C2 = 39G + 2H Tx3 C6 = 125G + 3H Input Output C3 = 25G + 2H C4 = 76G + 1H Excess: 49G Excess: 128G Excess: 24G Kernel Kernel Kernel
8 Cut-through Tx1 C1 = 15G + 4H C2 =
39G + 2H Input Output C3 = 25G + 2H Excess: 49G Tx2 C4 = 76G + 1H Input Output C5 = 91G + 1H C2 = 39G + 2H Tx3 C6 = 125G + 3H Input Output C3 = 25G + 2H C4 = 76G + 1H Excess: 128G Excess: 24G Kernel Kernel Kernel
9 Cut-through Tx C1 = 15G + 4H Input Output
Excess: 49G C5 = 91G + 1H C6 = 125G + 3H Excess: 128G Excess: 24G Kernel 使用済みのCommitmentは不要であるため 削除でき、ブロックチェーンのディスクサイズの 削減やプライバシー向上の効果がある。 Grinでは各Tx Kernelの署名 は集約されず、ブロック内のト ランザクションのTx Kernelは その数のまま残る。 Andrew Poelstraはこれらを 集約するsinking signatureを 発表しているが、一方 Scriptless Scriptがサポート できなくなることもあり、Grinは 集約型のSchnorr署名を採用 している。
10 まとめ • Mimblewimbleは何年も運用しても低コンピューティング デバイスでチェーンの検証を可能にする新しい ブロックチェーンの提案 • Confidential TransactionやトランザクションCut-through によってユーザーに強力なプライバシーを提供
• 現時点ではGrinとBEAMがサポート https://grin-tech.org/ https://www.beam.mw/ • 署名や範囲証明などをどこまでコンパクトにできるかが課題