Mimblewimbleホワイトペーパー解説3. 自己紹介
• バックグラウンド
• 新潟大学大学院 素粒子理論物理 博士(理)
• カカクコム
• 検索エンジン開発 検索サーバクラスタ構築運用 大規模データ処理 機械学
習 画像認識
• データタワー株式会社 代表取締役
• 株式会社ブロックチェーンハブ 技術アドバイザー
4. 経緯
• 2016年8月2日
• <majorplayer> hi, i have an idea for improving
privacy in bitcoin. my friend who knows technology
says this channel would have interest
http://5pdcbgndmprm4wud.onion/mimblewimble.txt
• https://www.reddit.com/r/Bitcoin/comments/4vub3y/mimblewimble_noninteractive_coinjoin_and_better/
10. これまでの関連研究
• Confidential Transaction, Gregory Maxwell, 2013
• https://bitcointalk.org/index.php?topic=305791.0
• https://people.xiph.org/~greg/confidential_values.txt
• CoinJoin, Gregory Maxwell, 2013
• https://bitcointalk.org/index.php?topic=279249.0
• https://bitcointalk.org/index.php?topic=281848.0
• CryptoNote, Nicolas van Saberhagen, 2013
• https://cryptonote.org/whitepaper.pdf
• Ring Confidential Transaction, Shen Noether, 2015
• https://eprint.iacr.org/2015/1098.pdf
• One-way aggregate signatures(OWAS), Yuan Horas Mouton, 2013
• https://download.wpsoftware.net/bitcoin/wizardry/horasyuanmouton-owas.pdf
• https://bitcointalk.org/index.php?topic=290971.0
16. Confidential Transaction
概要
• 目的の1つ
• 送金額を明示することなく、以下の等式を満たすことを証明する
• 各インプットの金額の総和 = 各アウトプットの総和(おつり含む) + TX手数
料
• 基本アイデア
• Bitcoinでの楕円曲線暗号ベースポイントGを使うと、以下の関係が成り立つ
• a + b = c <-> aG + bG = cG
• この関係を用いると、a, b, cを公開することなくa, b, cの間の関係を証明でき
る。
注: 楕円曲線が持つ位数を法として合同
17. Confidential Transaction
の変形
• C = r*G + v*H
• C: Pedersen Commitment
• G: Bitcoinでの楕円曲線暗号ベースポイント
• H: Gと同じベースポイント(G <> H), nothing-up-my-sleeve(NUMS)
• H = to_point(SHA256(ENCODE(G))
• v: 送金額
• r: ランダムなblinding secret key
18. Confidential Transaction
の変形
• トランザクションのやり取りの仕方
1. 送金者と受金者での送金額 b に合意する
2. 送金者はトランザクションを作成し、受金者に送る。このとき
、送金者側commitmentは、 r*G - b*H
3. 受金者はランダムな r’ を選んでcommitment k*G - fee*H と
range proofを作成し、受け取ったトランザクションに追加する
。
4. 受金者は k を使った空文字に対する署名をトランザクションに
追加する。
19. Confidential Transaction
の変形• 各commitment
• inputs
• (r*G + v_i1*H) + (r*G + v_i2*H)
• r は送金者が選んだランダムな値
• outputs
• (r’*G + v_o*H) + (r’*G + v_c*H)
• r’ は受金者が選んだランダムな値
• Tx fee
• fee*H
• 正常性の確認
• k*Gをあらかじめトランザクションに記載しておく(k は受金者しか知らない)
• inputs - outputs - txfee
• = (r*G + v_i1*H) + (r*G + v_i2*H) - (r’*G + v_o*H) - (r’*G + v_c*H) - fee*H
• = (2r - 2r’)*G
• = k’ *G
• k*G = k’*G ??
20. Confidential Transaction
の変形
• range proof(OR proof)は、値の範囲証明
• 証明が以下だけだと、お金を消したり増やしたりできてしまう
• 各インプットの金額の総和 = 各アウトプットの総和(おつり
含む) + TX手数料
• 例えば、(10 + 1) - (-9 + 20) = 0
• range proofの説明は割愛。
• 参照: https://eprint.iacr.org/2015/1098.pdf