小学6年生でもわかるMimblewimble

※こちらの日本語記事はBeam 「Mimblewimble explained like you’re 12」 の翻訳記事です。オリジナル(英語)はこちらからご確認ください。

Beam Japanチームは、Beamの日本語公式Twitterアカウント、Discordチャンネル、Telegramグループを開設しています。Beamに関する最新情報から、ディスカッションやカスタマーサポートなど、Beamコミュニティの皆さんが積極的に交流できる場所として運営しています。是非、ご参加ください!

❒ Twitter(日本語): https://twitter.com/beamJapan
❒ Telegram(日本語): t.me/beamjp
❒ Discord(日本語サポート): discord.gg/yxPwH4Q

皆さんは、ミンブルウィンブル(Mimblewimble)をおかしな名称だと思うかもしれませんが、この技術はブロックチェーン上の個人情報の漏洩を防止することができます。名称は、ハリー・ポッターに出てくる口封じの呪文にちなんでいます。

ハリー・ポッター / ワーナー・ブラザーズ / ミンブルウィンブル

「ナカモト・サトシ」のビットコイン論文には、「プライバシー」というセクションがあり、ナカモト氏はビットコインのプライバシーに関する制限について、とても現実的な態度をとっています。これらの制限は、ビットコインに反対する人達が、ブロックチェーン上のデータを悪用し、ビットコインユーザーの個人情報を晒したことで、より一層悪化しました。これにより、「ビットコインは個人情報を明かすことなく利用できるプライベートなコインである」と信じていた人々を驚かせました。では、どのようなデータがビットコインのブロックチェーン上で開示され、プライバシーの毀損に繋がっているのか、そして、その理由について見てみましょう。

ビットコインは、2つの要件を満たすために、3つの秘密を明かす

ビットコインを取引する際には、以下の3種類の秘密が明かされます。

  1. 送り主のビットコインアドレス
  2. 取引されたビットコインの数量
  3. 受取主のビットコインアドレス

ビットコインは、金や現金、物々交換といった如何なる通貨システムで、次の2つの要件を満たす必要があります。決して、プライバシーを嫌悪しているからではありません。

  1. 送信された量と受信した量を突合し、量に相違がないかを確認する必要があります。もし、あるアドレスから1コインを送信し、別のアドレスで2コインを受け取る取引が可能である場合、暗号通貨の仕組みは絶望的に崩壊します。もし、私の手持ちの5ユーロをあなたに渡した場合、私の財布から5ユーロが抜かれ、あなたの財布に5ユーロが入ります。私は5ユーロを失い、あなたが5ユーロを得ました。取引をした際、無からお金を作り出したり、お金が消滅する現象は起きません。
  2. 私は自身の銀行口座からお金を送金できますが、他者のお金を勝手に操作することはできません。取引の所有者を確認するべく、デビットカードと暗証番号、もしくはオンラインバンキングのパスワード、或いは、暗号通貨の場合は秘密鍵の認証が必要となります。

ビットコインは、これらの要件を満たすため、3つの秘密を開示します。

ビットコイン取引には、受取主のアドレスと金額がテキスト形式で含まれます。これで、最初の要件は満たしました。次に、5ビットコインがブロックチェーンに送付され、5ビットコインが出てきたことがわかります。

2つ目の要件を満たすことを確認するため、ビットコインはパブリックアドレスとそれに対応する秘密鍵を利用します。別の言い方をすると、パブリックアドレスがビットコインを所有しています。送り主は、パブリックアドレスに対応する秘密鍵を用いて署名を生成し、自身の取引に署名を付加します(繰り返しになりますが、トランザクションには金額と受取主のアドレスがテキスト形式で含まれます)。その署名がコインを所有しているアドレスに対応する秘密鍵によって生成されていることは誰でも確認することができます。このようにして、取引に付加された署名の生成が、実際にその取引の実行権を持つ所有者によって行われたことを私たちは確認することができるのです。

Mimblewimbleは、上記の要件を満たしつつ、いかなる秘密も開示しません。これが、私がMimblewimbleを活用する理由です。

これらを、10歳でも理解できるいくつかの簡単な算数と、12歳でも理解できるいくつかのもう少し高度な算数で説明していきます。

かけ算は簡単で、因数分解は難しい

沢山の方々は数学の勉強に不安を感じ、論文のように長い問題を避ける傾向があります。あなたも、数学の勉強に恐怖を感じますか?

もし私があなたにペンと紙を渡し、2分間で上記の問題を解くように伝えた場合、あなたはいとも簡単に解くことができるでしょう。皆さんにとって、かけ算の問題はとても簡単です。ポケットに収まるような極小コンピュータは、100万単位のかけ算を数秒で解くことができます。

では、質問を少し変えてみましょう。方程式の求める値を左側に移動しました。

もう一度あなたにペンと紙を渡した時、2分以内にこれらの問題を解くことができますか?恐らく無理でしょう。方程式を少し書き換えるだけど、難解な数式へと変貌しました。

(ところで、この記事では、皆さんに分かり易いように8と23を掛ける、2桁以下の簡単な問題を用いて説明していきます。コンピュータはこのような桁数の少ない数字は使用せず、大きな数字の計算をしています。実際には、コンピュータは一瞬で4221の答えを導きだすことができます。それでも、高性能なコンピュータであっても、大きな数字のかけ算の計算には莫大な演算能力を必要とします。

物事をシンプルにするために、ここでは楕円曲線のような高いレベルの議論はここではしません。実際には、暗号システムは数字だけを使用しておらず、楕円曲線点と呼ばれる特定のカテゴリーを用います。しかし、ここでも同じ単純な数学的特性が応用されています。すなわち、かけ算は簡単であるが、因数分解は難しいという事です。

情報の機密性や所有権の承認に、このかけ算の性質が活用されています。

もし、私があなたに上記の方程式の値を求めた場合、すぐには答えられないでしょう。なぜなら、求める値が方程式の左側にあるからです。ほとんどの人にとって、因数を求めるのはとても大変です。

それでは、答えを教えましょう。答えは23と83です。あなたは今、私が真実を伝えていることを確かめたいと思うはずです。答えの検証はとても簡単で、方程式の解に先ほどの数字を代入するだけです。これは、シンプルなかけ算の問題です。

あなたはいとも簡単に問題を解くことができます。私が教えた数字を代入した場合、答えは20,348,031になります。

もし、私が嘘をついていたとしても、かけ算を使用すればすぐに確かめることが可能です。私は嘘をつくことは出来ず、また推測や計算で答えを導き出すことはできません。なぜなら、事前に答えを知る必要があるからです。

(ちなみに、右辺の数字は左辺の全ての数字で割り切ることができます。これらのプロパティについては、詳しくは後述します。)

これらは単なるかけ算の問題です。10歳の子供が小学校の授業で学ぶ算数です。しかし、私たちは暗号通貨において、とても大切な事を2つ学びました。

私たちは情報の機密性を保ちたかったのです。今、私たちはその方法を知っています。私たちは知られていない2つの情報をかけ合わせることで情報の機密性を保ち、解読を難しくします。

また、私たちは自分が秘密の鍵を保有していることを証明したかったのです。今、私たちはその方法を知っています。大きな数に対応する因数を明かすことで、証明を行うことができます。私たちは、かけ算が持つ一般的な特徴を利用することで、プライバシーと証明という、2つのことを行っていました。

トランザクション量のプライバシーについて

ここで、大きな秘密の数字を掛け合わせる私たちの情報機密トリックを使いましょう。ビットコインが明かす三つの情報の一つが送信されたコインの量です。私がビットコインのブロックチェーンを通じて5ビットコインを送信した時、その数はテキスト形式で表現されます。この数字を他の数字と掛け合わせることで隠しましょう。あなたはその数を簡単に私に教えることは出来ません。

上の等式は完全に同じではありませんが、Mimblewimbleにおいてどのように量が表現されるかに似ています。Mimblewimbleにおいて、送信者と受信者はこのような数字を取り入れます。

これは、Pedersen Commitment(ペダーソン・コミットメント)と呼ばれています。私には理由はわかりません。大事なのは、これが取引量に関する情報(大きい数字とのかけ算によって情報の機密性を保ちます)と、秘密鍵に関する情報を含むことです。ここで、送信者と受信者が共に参加しトランザクションを作成しています。これは、ビットコインとは大きく異なる点です。

このことで、受信者はアドレスを開示する必要がなくなる一方で、送信者が受信者に辿り着くなんらかの方法が必要になります。Beamは安全なBBSシステム(Beamのブロックチェーンとは分離)を用意し、送信者と受信者が彼らのPedersen commitmentを交換できるようにしました。

(※ここでは、話をシンプルにするために、手数料とレンジプルーフについては考慮しないことにしました。)

あなたは2つの数字を、3つ目の数字と一緒に、もしくは別々に掛け合わせることができる

ここで私たちは今回登場する中で、最も難しい数学に触れます。ここ、アイルランドでは、これは12歳になるまで習いません。

もしあなたが、2と4を3に掛け合わせたい時、私は2と4を足して6とし、次に3を掛け合わせることで18にします。もしくは、最初に2と3を掛け合わせ6とし、4と3を掛け合わせ、12とし、最後に6と12を足し算し18とすることもできます。

ここで、私があなたの心に残したいことは、2つの方法があり、どちらの方法も結果は等しいということです。

入金額と出金額が等しいことを証明する

通貨システムの1つの条件は、入金額から送金額を差し引いた時、その結果はゼロになるということを思い出してください。私があなたに5ユーロを渡し、あなたは5ユーロを貰います。5から5を引くと結果はゼロです。前述のトリックを用いて、それを証明します。

Mimblewimbleのトランザクションは、2つのPerdersen commitmentsで構成されます。一つはトランザクションに入るお金で、もう一つは出ていくお金です。

例えば、送り主が5ユーロを失い、受取主が5ユーロを得たと想定します。

ただ単に入金額を大きな数で掛け合わして、送金額を新たな大きな数で掛け合わせるのではなく、私たちには以下のように書き換える権利があります。

5引く5はゼロです。大きい数で掛けたとしても、答えはまだゼロです。私たちに残されたのは以下です。

或いは、

これにより、取引量に関する部分 [Amount-Part] が消失しました。各ステップでは、数量は大きな数で掛け合わされていたため、常に目が眩むような数字でした。私たちは数量を明らかにすることなく、結果がゼロになることを証明できました。

取引量に関する部分 [Amount-Part] が消失した理由は、入金額と出金額が等しいからです。もし、この金額や数量が等しくない場合には、取引量に関する部分 [Amount-Part] ははゼロではないため、鍵に関する部分 [Key-Part] 以外の部分が残ります。

その為、トランザクションカーネルは23と83の秘密鍵では割り切ることができません。Beamのプロトコルは、このトランザクションの形式が正しくないことを理由に否認されます。

(お気づきだと思いますが、もし取引される量や金額に関する数字 [Amount-Part] がゼロではなく23と83で割り切れる数量、例えば1909であった場合、カーネルはまだ23と83で割り切ることができます。今回の例題では小さな数量を使用したため、このような偶然が可能となりました。コンピュータで使用される大きな数字では、このような偶然が起こる可能性はゼロに等しいです。)

ここに残されたのは、鍵に関する部分 [Key-Part]のみです。

これは、送信者と受信者からの秘密鍵、そして新たに用意された大きな数字を掛け合わせることによって構成された、とても大きな数字です。大きな数字を秘密の数字である83と23で割り切れるように、秘密鍵からでも綺麗に割り切ることができます。

トランザクションカーネルを秘密鍵で割り切ることができるのには、2つ理由があります。

  1. 取引される量や金額に関する数字 [Amount-Part] がゼロであるから。
  2. 秘密鍵に関する部分 [Key-Part] が、秘密鍵である83と23を含んだ、沢山の数字で掛け合わされて構成されているから。

これらが、通貨システムを確立する2つの必須条件です。

  1. もし、取引される量や金額に関する数字がゼロになった場合、つまりそれは、入金額と出金額の差引がゼロに等しいということになります。要するに、如何なるお金も失われておらず、新しく作られてもいません。私たちは、最初に未知の大きな数字と出入金額を掛け合わせることで取引量の内容の機密性を保ち、次にそれぞれを足し合わせゼロにした上で、大きな機密用の数字のベールで覆い隠します。
  2. 2つ目の条件は、秘密鍵の所有者によってトランザクションが生成された事を証明する事です。送信者は、自分の秘密鍵がトランザクションカーネルを割り切れることを証明しそれを証明します。つまり、秘密鍵がカーネルを構成する因子であるということです。

Mimblewimbleは間違いなく、ビットコインが目指すゴールを、ビットコイン以上に達成するでしょう(もしプライバシーがゴールであれば特にそうでしょう)。ビットコインの基盤システムに新たな機能を追加することで難読化を達成しようとする他のプライバシーコインとは異なり、Mimblewimbleは「カッティング(Cutting)」という方法を用います。私たちは、Mimblewimbleの実装を実現させるために、2018年末までにBEAMをローンチできると予想し、2018年の初旬にプロジェクトを始動できた事はとても刺激的でした。(※BEAMは2019年1月3日にローンチされました。)

開発者コミュニティへの参加: Gitter

最新情報: https://t.me/BeamNews

Telegram(英語): t.me/BeamPrivacy

Telegram(日本語): t.me/beamjp

Twitter(英語): https://twitter.com/beamprivacy

Twitter(日本語): https://twitter.com/beamJapan

Discord(英語): discord.gg/BHZvAhg

Discord(日本語): discord.gg/yxPwH4Q

Reddit: reddit.com/r/beamprivacy/

Bitcointalk: https://bitcointalk.org/index.php?topic=5052151

フォーラム: https://forum.beam.mw/

ニュースレター: https://beamprivacy.substack.com/

ニュースレター: https://beamprivacy.substack.com/