diff --git a/doc/intro_JP.md b/doc/intro_JP.md index da259a902..47831e1a9 100644 --- a/doc/intro_JP.md +++ b/doc/intro_JP.md @@ -1,9 +1,9 @@ -# MimbleWimble と Grin 概論 +# Mimblewimble と Grin 概論 *この文章を他の言語で読む: [English](intro.md), [简体中文](intro_ZH-CN.md), [Español](intro_ES.md), [Nederlands](intro_NL.md), [Русский](intro_RU.md), [日本語](intro_JP.md), [Deutsch](intro_DE.md), [Portuguese](intro_PT-BR.md), [Korean](intro_KR.md).* -MimbleWimble は、極めてよいスケーラビリティ、プライバシー、そして代替可能性(fungibility)の解決法を提供 -するブロックチェーンのフォーマット・プロトコルである。MimbleWimble は、ほとんどすべてのブロックチェーンの +Mimblewimble は、極めてよいスケーラビリティ、プライバシー、そして代替可能性(fungibility)の解決法を提供 +するブロックチェーンのフォーマット・プロトコルである。Mimblewimble は、ほとんどすべてのブロックチェーンの 実装に存在する課題を解決する。 Grin は、その Mimblewimble ブロックチェーンを実装する OSS プロジェクトであり、完全なブロックチェーン、 @@ -14,7 +14,7 @@ Grin プロジェクトの主なゴールと特徴は以下: * デフォルトでプライバシーが保たれていること。これにより、選択的に必要な情報を開示する能力を排除することなく、完全な代替可能性を実現できる。 * ユーザー数を最大限に、トランザクション数を最小限にスケールさせることができるため、 [TODO: enhance translation] 他のブロックチェーンに比べて大きなスペース節約が可能である。 -* 強固で証明された暗号技術。 MimbleWimble は、数十年にも渡る攻撃やテストに耐えてきた楕円曲線暗号に +* 強固で証明された暗号技術。 Mimblewimble は、数十年にも渡る攻撃やテストに耐えてきた楕円曲線暗号に のみ依存する。 * デザインがシンプルなため、長年に渡って監査・メンテナンスが容易である。 * コミュニティドリブンであり、ASIC耐性のあるマイニングアルゴリズム(Cuckoo Cycle) @@ -23,19 +23,19 @@ Grin プロジェクトの主なゴールと特徴は以下: ## Tongue Tying for Everyone 本ドキュメントは、ブロックチェーンと基礎的な暗号学の理解を前提としている。 -それに留意しながら、我々は MimbleWimble の技術的なビルドアップと、それがどのように Grin に +それに留意しながら、我々は Mimblewimble の技術的なビルドアップと、それがどのように Grin に 応用されているかの説明を試みる。本ドキュメントが多くの技術に慣れ親しんだ読者にとって理解しやすい ものであることを願う。我々の目的は、読者に Grin について興味をもってもらい、可能な方法で Grin に 貢献していただくことである。 -この目的を達成するため、MimbleWimble の実装としての Grin を理解するための主要なコンセプトを +この目的を達成するため、Mimblewimble の実装としての Grin を理解するための主要なコンセプトを いくつか紹介する。まずはじめに、Grin を基礎づける楕円曲線暗号(ECC)のいくつかの関係する性質についての簡単な説明を -し、その後、MimbleWimble ブロックチェーンのトランザクションとブロクについてのキーとなる要素について説明する。 +し、その後、Mimblewimble ブロックチェーンのトランザクションとブロクについてのキーとなる要素について説明する。 ### Tiny Bits of Elliptic Curves -まずは楕円曲線暗号の概要から見ていく。ECCの複雑な部分を掘り下げすぎないように、MimbleWimble の仕組みを理解する -のに必要な分のみ。より詳細な掘り下げた部分を知りたい読者は、[こちらのリンク](http://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/)が助けになるだろう。 +まずは楕円曲線暗号の概要から見ていく。Mimblewimble の仕組みを理解するのに必要な分のみ検討し、ECCの複雑な部分を掘り下げすぎないようにする。 +より詳細な掘り下げた部分を知りたい読者は、[こちらのリンク](http://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/)が助けになるだろう。 楕円曲線を暗号にもちいる目的は、単純に大きな点の集合のためである。これを _C_ と呼ぶことにする。 この集合に属する点は、足し算、引き算、またスカラー倍の演算をすることが可能です。 _k_ を整数としたとき、 @@ -51,14 +51,14 @@ _j_ をもう一つの整数としたとき、`(k+j)*H` を計算することも 上の式 `(k+j)*H = k*H + j*H` を見ると、 _k_, _j_ を共に秘密鍵とした時、秘密鍵同士の和から 得られる公開鍵は、それぞれの秘密鍵から得られる公開鍵の和と等しいことが分かる。Bitcoin では、 -HDウォレットがこの原理を大いに利用している。そして MimbleWimble と Grin もこの性質を利用する。 +HDウォレットがこの原理を大いに利用している。そして Mimblewimble と Grin もこの性質を利用する。 -### Transacting with MimbleWimble +### Transacting with Mimblewimble -トランザクションの構造には MimbleWimble の核となる信条を見ることができる: +トランザクションの構造には Mimblewimble の核となる信条を見ることができる: 強固なプライバシーと機密性の保証だ。 -MimbleWimble トランザクションのバリデーションは以下の2つの性質に依る: +Mimblewimble トランザクションのバリデーションは以下の2つの性質に依る: * **ゼロサムの検証** outputs に -inputs を足した値は常にゼロであること。 これはトランザクションが新たなコインを作っていないことを証明する。 _実際の送金額を露呈することなしに_。 @@ -83,7 +83,7 @@ _v_ を トランザクション input または output の value とし、_H_ 実際の value を知ることなく検証できる。しかし、使用できる value の数は有限であり、それらをすべて試すことでトランザクションの value を推測することは可能である。加えて、 v1 とそれから導出できる `v*H` を知っているということは、ブロックチェーン上のすべての value が v1 の output からわかってしまうということを意味する。これらの理由から、2つ目の楕円曲線 _G_ (実際には、 _H_ と同じ -曲線上の他の生成元である)と秘密鍵 _r_ を *目くらまし因子(blinding factor)*として導入することにする。 +曲線上の他の生成元である)と秘密鍵 _r_ を *目くらまし因子(blinding factor)* として導入することにする。 今、トランザクションの input/output value は次のように表すことができる: @@ -115,7 +115,7 @@ value が v1 の output からわかってしまうということを意味す ri1 + ri2 = ro3 -これが MimbleWimble の第一の柱である。すなわち、トランザクションを検証するための演算は +これが Mimblewimble の第一の柱である。すなわち、トランザクションを検証するための演算は value を知ることなくして実行可能であるということだ。 最後に、本アイディアは実際には Greg Maxwell の [Confidential Transactions](https://elementsproject.org/features/confidential-transactions/investigation), から派生したものである。 @@ -124,7 +124,7 @@ value を知ることなくして実行可能であるということだ。 #### 所有権 前の章において、秘密鍵を blinding factor として導入することでトランザクションの value を -秘匿化した。MimbleWimble の第二のポイントは、この秘密鍵を活用して value の所有権を証明できる +秘匿化した。Mimblewimble の第二のポイントは、この秘密鍵を活用して value の所有権を証明できる ということです。 Alice があなたに 3 coin を送金し、その額を秘匿化するために、あなたは 28 を blinding factor @@ -180,7 +180,7 @@ _transaction kernel_ と呼ばれ、バリデーターにチェックされる この章では、お釣りがどのように導入されるか、またすべての値が非負であることの証明となる range proof の要件について議論することで、トランザクションの構成についての詳細を詳しく述べる。これらの両方とも、 -MimbleWimble と Grin を理解するために必ず必要というわけではない。したがって、もし急いでいるのならば +Mimblewimble と Grin を理解するために必ず必要というわけではない。したがって、もし急いでいるのならば [まとめ](#まとめ) まで読み飛ばしてもらって構わない。 ##### お釣り @@ -209,7 +209,7 @@ blinding factor として生成しお釣りの output を保護する。Carol もし _x_ が負だとしても対応する `x*H` を他と見分けることはできないので、 これを用意に検知することはできない。 -この問題を解決するため、MimbleWimble は(これも Confidential Transaction に由来しているが) +この問題を解決するため、Mimblewimble は(これも Confidential Transaction に由来しているが) range proofs と呼ばれるさらに他の暗号学的概念を利用する。 range proofs とは、その数字を知ること無く その数字が特定の範囲の大きさであることを証明するものである。ここでは range proof について詳細には 記さないが、任意の `r*G + v*H` について _v_ がゼロ以上であること、さらにオーバーフローしないこと @@ -221,7 +221,7 @@ blinding factor として生成しお釣りの output を保護する。Carol #### まとめ -MimbeWimbe のトランザクションは以下の要素を持つ: +Mimblewimble のトランザクションは以下の要素を持つ: * inputs の組。1つ前の outputs を参照・使用する。 * 以下を含む新しい outputs の組: @@ -234,13 +234,13 @@ MimbeWimbe のトランザクションは以下の要素を持つ: ### Block と Chain State -これまでに、MimbleWimble のトランザクションが、有効なブロックチェーンに +これまでに、Mimblewimble のトランザクションが、有効なブロックチェーンに 必要な性質を満たす一方で、強い匿名性を提供する方法を説明しました( i.e. トランザクションは新たなお金を作らない、所有権の証明は秘密鍵によって 行われる)。 -MimbleWimble のブロックフォーマットはこれに新たなコンセプトを1つ追加することで導入 -される: _cut-through_ である。これを追加することによって、MimbleWimble chain は +Mimblewimble のブロックフォーマットはこれに新たなコンセプトを1つ追加することで導入 +される: _cut-through_ である。これを追加することによって、Mimblewimble chain は 以下の特徴を得る: * 極めて良いスケーラビリティ。これは、セキュリティを犠牲にすることなく大量のトランザクションデータ @@ -274,11 +274,11 @@ tx outputs の和から tx inputs の和を引いて、その結果である Ped sum(outputs) - sum(inputs) = sum(kernel_excess) -少し単純化して言うならば(ここでも手数料は無視することにする)、MimbleWimble のブロックはトランザクションと同様に扱うことが可能である・ +少し単純化して言うならば(ここでも手数料は無視することにする)、Mimblewimble のブロックはトランザクションと同様に扱うことが可能である・ ##### Kernel Offsets -上で説明した MimbleWimble のブロックとトランザクションには、小さな問題がある。ブロックの中の構成要素から、トランザクションを再構成することが可能(ときには容易)であるということだ。これは明らかにプライバシーの観点から良くないことだ。これは、「部分集合」の問題である - inputs, outputs, transaction kernels の集合が与えられた時、これらの部分集合によって有効なトランザクションが再構築できてしまう。 +上で説明した Mimblewimble のブロックとトランザクションには、小さな問題がある。ブロックの中の構成要素から、トランザクションを再構成することが可能(ときには容易)であるということだ。これは明らかにプライバシーの観点から良くないことだ。これは、「部分集合」の問題である - inputs, outputs, transaction kernels の集合が与えられた時、これらの部分集合によって有効なトランザクションが再構築できてしまう。 例えば、次の2つのトランザクションがあるとする - @@ -301,7 +301,7 @@ tx outputs の和から tx inputs の和を引いて、その結果である Ped sum(outputs) - sum(inputs) = kernel_excess + kernel_offset -トランザクションをブロックに集約する時、ブロックヘッダに_一つだけ_ aggregate offset を保存する。これにより、一つ一つの transaction kernel offsets に分解できない一つの offset を作ることができた。そしてトランザクションは再構成できない - +トランザクションをブロックに集約する時、ブロックヘッダに _一つだけ_ aggregate offset を保存する。これにより、一つ一つの transaction kernel offsets に分解できない一つの offset を作ることができた。そしてトランザクションは再構成できない - sum(outputs) - sum(inputs) = sum(kernel_excess) + kernel_offset @@ -353,7 +353,7 @@ inputs はそれらが使用する outputs への参照である。以前のブ * excess value によって生成された署名 * マイニング手数料 -このように構成された時、MimbleWimble ブロックは極めて良いプライバシーを提供する: +このように構成された時、Mimblewimble ブロックは極めて良いプライバシーを提供する: * transaction kernel のみによって中間(cut-through)トランザクションが表現される * すべての outputs が同じに見える:互いに区別することのできないとても大きな数だけである。 @@ -378,10 +378,10 @@ inputs はそれらが使用する outputs への参照である。以前のブ はじめの情報はブロック高(ジェネシスブロックからの距離)から推定することができる。 そして、utxo と transaction kernel は共に極めてコンパクトだ。これは2つの重要な結果を持っている: -* MimbleWimble ブロックチェーンのノードが保持する必要のある状態はとても少量である( +* Mimblewimble ブロックチェーンのノードが保持する必要のある状態はとても少量である( bitcoinサイズのブロックチェーンでは数ギガバイトのオーダーなのが、数百メガバイトにまで最適化 され得る)。 -* MimbleWimble チェーンのネットワークに新しいノードがジョインする時、送信する必要のある +* Mimblewimble チェーンのネットワークに新しいノードがジョインする時、送信する必要のある 情報の量もまたとても少量である。 さらに、output を足したり除いたりするだけでも、 utxo の完全な集合は改ざんできない。そうすると @@ -390,7 +390,7 @@ transaction kernel 内の blinding factor の和と outputs 内の blinding fact ### 結論 -このドキュメントでは、MimbleWimble ブロックチェーン根底にある基本的な原理を -説明した。楕円曲線暗号の加算の性質を用いることで、完全に不透明な、しかし validate +このドキュメントでは、Mimblewimble ブロックチェーンの根底にある基本的な原理を +説明した。楕円曲線暗号の加算の性質を用いることで、完全に不透明な、しかしバリデート することのできるトランザクションを構築することができた。そしてこの性質をブロックに 一般化することによって、大量のブロックチェーンのデータを節約することができ、素晴らしいスケーリング、新しいピアの高速な同期が可能となった。