BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Vernacular Mimblewimble: 新しいタイプのプライバシー保護プロトコル

星球君的朋友们
Odaily资深作者
この記事は約4126文字で、全文を読むには約6分かかります
12 歳でも理解できる掛け算を使用して、簡潔なプライバシー保護契約を作成します。
AI要約
展開
12 歳でも理解できる掛け算を使用して、簡潔なプライバシー保護契約を作成します。

編集者注: この記事は以下から引用しましたイーサリアム愛好家イーサリアム愛好家medium、許可を得てOdailyによって転載されました。

(WeChat ID: ethfa​​ns)、著者: Conor O'Higgins、翻訳・校正: stormpang & A Jian、原文は以下から

注: Mimblewimble はパブリック チェーン コンセンサス プロトコルとして設計されており、その機能は以下に説明されており、トランザクションの具体的な情報は開示されない場合があります。すでに複数のチームが Mimblewimble を実装しています。

画像の説明

-ハリー・ポッター - ワーナー・ブラザース - ミンブルウィンブルの呪文のかけらを唱える -

(編注:この人の口の形からミンブルウィンブルを使っているとは思えませんが、パトロナスの呪文(エクスペクト・パトロナム)の可能性もありますが、どう思いますか?)

サトシ・ナカモトのビットコイン論文には「プライバシー」という章があり、サトシ・ナカモトはビットコインのプライバシー制限について非常に明確に説明しています。攻撃者がビットコイン データを利用してビットコイン ユーザーを見つけたり、実名を特定したりできるようになるにつれて、これらの欠陥は「悪化」し続けるでしょう。ビットコインには名前が関連付けられていないため、プライバシーが保護されると信じている一部の人にとって、これは驚きでした。ビットコインがどのようなデータを分析できるのか、そしてその理由を見てみましょう。

副題

  • ビットコインは 3 つの秘密を明らかにすることで、通貨システムの 2 つのニーズを満たす

  • すべてのビットコイン取引で 3 つの秘密が明らかになります。

  • 送信者アドレス

送金されたビットコインの量

  • 受信者のアドレス

  • ビットコインはプライバシーを嫌うため、この情報を表示しません。あらゆる通貨システム (金、現金、物々交換) は次の 2 つの条件を満たさなければならないため、この秘密が明らかになります。

受信したコインの量が送信した量と等しいことを検証できなければなりません。 1回の取引で1つのアドレスから1コインを送信し、別のアドレスで2コインを受け取ることができたら、仮想通貨システムは確実に崩壊します。通常のシステムでは、私があなたの手に 5 ユーロを置いた場合、私は 5 ユーロを失い、あなたは 5 ユーロを獲得します。この取引プロセスでは、何もないところからお金が生み出されることも、何もないところからお金が消えることもありません。

電子的に資金を送金できるのは、あなたの銀行口座ではなく、私自身の銀行口座からのみです。トランザクションがデビット カードと、PIN/インターネット バンキングのパスワード、または暗号通貨の秘密キーの所有者から送信されたことを確認できなければなりません。

ビットコインは、上記の 3 つの秘密を明らかにすることで、これらの条件を両方満たします。

ビットコイン取引には、転送金額と受信者のアドレスが平文で含まれます。したがって、通貨システムの最初の条件は簡単に満たされ、5 つのビットコインがトランザクションに参加し、5 つのビットコインが出てくることがわかります。

ビットコイン システムが 2 番目の条件を満たしていることを確認するために、ビットコインはパブリック アドレスと対応する秘密キーを使用します。パブリックアドレスにはビットコインが保持されます。 (トランザクション) 送信者は、対応する秘密鍵を使用してトランザクションに署名することによって署名を生成します (つまり、先ほど説明したトランザクションには、トランザクション金額と受信者のアドレスが含まれています)。この署名がビットコインを保持するアドレスに対応する秘密鍵によって生成されたことは誰でも検証できます。つまり、トランザクションがトランザクションを開始する権利を持つ誰かからのものであることを検証します。

ミンブルウィンブルは、上記の 3 つの秘密を明らかにすることなく、通貨システムのこれら 2 つの条件を満たすことができます。


証明のプロセスには、10 歳の子供でも理解できる簡単な数学が必要です。証明には、おそらく 12 歳でも理解できるような複雑な数学も使用しています。

掛け算は簡単だけど因数分解は難しい

多くの人は数学を恐れており、記事内で数学が出てくるたびに読み飛ばしてしまいます。でも、下の写真のように簡単なものなら怖くないですよね?

紙とペンをあげたら、これらの問題は 2 分で解けますよね?掛け算は人間にとってとても簡単です。コンピュータの場合、小型のポケットコンピュータでも、200万桁の数値を乗算した結果をすぐに計算できます。

しかし、少し変化を加えてみましょう。疑問符を反対側に移動してみましょう。

(間奏: この記事では、83 と 23 のような数字の掛け算について話します。これらの数字は私が好きで、なじみがあり、非常に理解しやすいからです。しかし、コンピューターはこれらの数字を使用しません。非常に大きな数値を使用してください。実際、コンピューターは、どの 2 つの数値を乗算して 4221 を求めたかを理解できますが、非常に強力な現代のコンピューターでさえ、非常に大きな数値を得るためにどの 2 つの数値を乗算したかを理解することはほとんどできません。)

話を簡単にするために、楕円曲線については説明しません。実際には、暗号化システムでは数値は使用されませんが、楕円曲線ポイントと呼ばれる特別なコレクションが使用されます。しかし、単純な数学的性質はどちらの場合も同じです。つまり、掛け算は簡単ですが、掛け算の逆である因数分解は難しいということです。

副題

乗算プロパティを使用して情報を非表示にし、所有権を確認する

以下の足りない数字は何ですかと尋ねると...

...疑問符が左側にあり、欠落している要素を見つけるのが難しいため、すぐには教えてもらえません。

さて、教えてあげましょう。欠落している数字は 23 と 83 です。ここで、私が言ったことが真実であること、つまり、欠けているものが実際には 23 と 83 であることを検証したいとします。これは単純な掛け算の問題になります。

答えはすぐに解けます。実際、23 と 83 は積を 20,348,031 に等しくする因数です。

もし私が嘘をついている場合は、すぐに見破ることができます。なぜなら、私が与えた係数によって積が右側の大きな数字と等しくなるわけではないからです。間違った要素をでっち上げたり、推測したり計算したりすることはできません。これら 2 つの要素を事前に知っておく必要があります。

(間奏: 右側の大きな数値は、左側のその作成に使用されたすべての数値で割り切れることに注意してください。これは、83、11、および左側のすべての数値で割り切れます。これは後で利用します。 。)

これは単なる掛け算です。 10歳くらいの人形なら理解できます。しかし、私たちは暗号通貨にとって非常に重要な 2 つのことを達成しました。

私たちは情報を隠したいのです。これで、その方法がわかりました。未知のものを掛けるという形で情報を隠すことができます。これにより、元のメッセージを解読することが非常に困難になります。

また、私たちが秘密鍵を保持していることを証明したいと考えています。これで、その方法もわかりました。大きな数の因数を与えるだけです。

乗算の基本特性を使用するだけで、両方を実行できます。

取引金額を隠す

大きな秘密の数字を掛けて取引金額を隠しましょう。ビットコインが漏洩する3種類の情報のうちの1つは、送信されたビットコインの数です。ビットコイン ブロックチェーン経由で 5 ビットコインを送信すると、取引金額がクリア テキスト (つまり、数字の「5」) で表示されます。それを乗算で隠します。次の式で、取引金額がいくらになるかを知るのは簡単ではありません。

上の式は、Mimblewimble での取引金額の表現に少し似ていますが、まったく同じではありません。 Mimblewimble では、送信者と受信者の両方が次のような番号を与えます。

この数字はペダーセン・コミットメントと呼ばれていますが、なぜそう呼ばれているのかはわかりません。注意すべき重要な点は、Pedersen コミットメントにはトランザクション金額の一部 (ただし、大きな数値を掛けることで非表示にします) と秘密キーの一部が含まれていることです。

送信者と受信者の両方がトランザクションの作成に参加することに注意してください。これはビットコインとはまったく異なります。このアプローチでは、受信者のアドレスの公開は回避されますが、送信者は何らかの方法で受信者に連絡する必要があります。 Beam には、送信者と受信者が Pedersen コミットメントを安全に交換できるようにする安全な BBS システム (Beam ブロックチェーンとは別) が含まれています。

(わかりやすくするために、取引手数料を省略しました。実際の実装では、友人やベンダーに送金するとき、通常、マイナーにもいくらかの取引手数料を渡します。原理は同じです。レンジプルーフのコンテンツについても省略しました。 -5 を送信することは、無料のコインを 5 枚財布に詰め込むようなものなので、隠された取引金額が負の数ではないことが証明されます。もしかしたら、ハリー ポッターにはこれを達成するための別の呪文があるかもしれません :D)

乗法結合性

次に行うのは、最も高度な数学的な作業です。アイルランドでは、12歳で大人になると、それが学校で教えられるのです -

2 + 4 x 3 が必要な場合、最初に 2 + 4 = 6 を計算し、次に 6 を使用して 3 を掛けて 18 を得るか、最初に 2 × 3 = 6 を計算し、次に 4 × 3 = 12 を計算し、最後に合計も18です。

覚えておいていただきたいのは、2 つの数値の合計に 3 番目の数値を掛けたい場合、最初にそれらを合計してから 3 番目の数値を掛けるか、最初に「1 つの数値を 3 番目の数値で掛ける」を計算することができるということです。数値を入力し、別の数値と 3 番目の数値の積を計算し、最後に 2 つの積を加算します。これら 2 つのプロセスは同等です。

入ってくるお金と出ていくお金が等しいことを証明する

通貨システムに必要な条件の 1 つは、受取額から送金額を引いた額が 0 でなければならないことであることに注意してください。私があなたの手に 5 ユーロを置くと、あなたは 5 ユーロを受け取ります。 5 - 5 = 0。

Mimblewimble トランザクションは 2 つの Pedersen コミットメントで構成されます。1 つはトランザクションに入力された金額を記録するもの、もう 1 つはトランザクション結果の金額を記録するものです。

たとえば、送信者が 5 を失った場合、受信者は 5 を取得します。

ただし、入力トランザクション金額にこの大きな数値を乗算し、出力トランザクション金額にこの大きな数値を個別に乗算する代わりに、次のようにそれらを組み合わせることができます。

(翻訳者注: 下の図の「key1 + key2 × big number2」は、「[key1 + key2] × big number2」である必要があります)

5 - 5 = 0。0 に大きな数を掛けても 0 のままです。すると、次の式が残ります。

または:

取引金額部分がなくなってしまった!各ステップで取引金額は大きな数値を乗算することで隠蔽されますが、これらの値を公開する必要はなく、結果がゼロであることを確認するだけで済みます (システムにエラーがないことを確認するため)。

取引金額部分を隠しているのは、入ってくるお金と出ていくお金が等しいためです。それらが等しくない場合、それらの合計は 0 にならず、単純化の結果はそれ以上になります...

...トランザクション量が 0 にならなかった場合、トランザクション カーネルは 23 と 83 で割り切れません。 Beam プロトコルはトランザクションの形式が不正であるため、トランザクションを拒否します。

(場合によっては、1909 など、トランザクション金額の値がゼロでない場合でも、トランザクション コアは 23 と 83 で割り切れることがあることに気づくかもしれません。図で使用した数値は非常に小さいため、この一致はしかし、コンピュータが使用する非常に大規模なデジタル領域では、そのような衝突の可能性は限りなくゼロに近いです。)

残りは秘密鍵部分です

  • 秘密キー部分は非常に大きな数値であり、送信者と受信者の秘密キーの合計と別の大きな数値の積です。秘密キーは、この大きな数で割り切れます (翻訳者注: 複数の参照の後、ここでの「大きな数字」は「bignumber2」を指します。そのため、トランザクション コアも秘密キーで割り切れる必要があります)。83 と 23 が同じであるのと同じです。右側の大きな数字の「秘密の番号」として。

  • したがって、トランザクション コアが秘密キーで分割できる理由は 2 つあります。

取引金額部分が0なので

  • 秘密キーの部分は、秘密キー 83 と 23 を含む一連の数値を乗算することによって取得されるためです。

  • これから、あらゆる通貨システムに必要な 2 つの条件を満たすことができます。


取引金額部分が0の場合は、入力金額から出力金額を引いた金額が0であることを意味します。つまり、投入量と産出量は等しく、お金が消えることも、お金が生まれることもありません。これは、最初に取引金額に未知の大きな数値を乗算して隠し、次に乗算結合によってそれらを結合することで大きな数値でマスクされるようにすることで実現しましたが、合計は正確に 0 になります。

Odaily公式コミュニティへの参加を歓迎します
購読グループ
https://t.me/Odaily_News
チャットグループ
https://t.me/Odaily_GoldenApe
公式アカウント
https://twitter.com/OdailyChina
チャットグループ
https://t.me/Odaily_CryptoPunk
検索
記事目次
Odailyプラネットデイリーアプリをダウンロード
一部の人々にまずWeb3.0を理解させよう
IOS
Android