diff --git a/doc/intro.jp.md b/doc/intro.jp.md index 71ce2758a..822938bca 100644 --- a/doc/intro.jp.md +++ b/doc/intro.jp.md @@ -2,7 +2,7 @@ *この文章を他の言語で読む: [English](intro.md), [简体中文](intro.zh-cn.md), [Español](intro_ES.md), [Русский](intro.ru.md), [日本語](intro.jp.md).* -MimbleWimle は、極めてよいスケーラビリティ、プライバシー、そして代替可能性(fungibility)の解決法を提供 +MimbleWimble は、極めてよいスケーラビリティ、プライバシー、そして代替可能性(fungibility)の解決法を提供 するブロックチェーンのフォーマット・プロトコルである。MimbleWimble は、ほとんどすべてのブロックチェーンの 実装に存在する課題を解決する。 @@ -11,11 +11,10 @@ Grin は、その Mimblewimble ブロックチェーンを実装する OSS プ Grin プロジェクトの主なゴールと特徴は以下: -* デフォルトでプライバシーが保たれていること。これにより、選択的に必要な情報を開示する能力 - を排除することなく、完全な代替可能性を実現できる。 +* デフォルトでプライバシーが保たれていること。これにより、選択的に必要な情報を開示する能力を排除することなく、完全な代替可能性を実現できる。 * ユーザー数を最大限に、トランザクション数を最小限にスケールさせることができるため、 [TODO: enhance translation] 他のブロックチェーンに比べて大きなスペース節約が可能である。 -* 強固で証明された暗号技術。 MibleWimble は、数十年にも渡る攻撃やテストに耐えてきた楕円曲線暗号に +* 強固で証明された暗号技術。 MimbleWimble は、数十年にも渡る攻撃やテストに耐えてきた楕円曲線暗号に のみ依存する。 * デザインがシンプルなため、長年に渡って監査・メンテナンスが容易である。 * コミュニティドリブンであり、ASIC耐性のあるマイニングアルゴリズム(Cuckoo Cycle) @@ -24,7 +23,7 @@ Grin プロジェクトの主なゴールと特徴は以下: ## Tongue Tying for Everyone 本ドキュメントは、ブロックチェーンと基礎的な暗号学の理解を前提としている。 -それに留意しながら、我々は MimbleWimbe の技術的なビルドアップと、それがどのように Grin に +それに留意しながら、我々は MimbleWimble の技術的なビルドアップと、それがどのように Grin に 応用されているかの説明を試みる。本ドキュメントが多くの技術に慣れ親しんだ読者にとって理解しやすい ものであることを願う。我々の目的は、読者に Grin について興味をもってもらい、可能な方法で Grin に 貢献していただくことである。 @@ -52,11 +51,11 @@ _j_ をもう一つの整数としたとき、`(k+j)*H` を計算することも 上の式 `(k+j)*H = k*H + j*H` を見ると、 _k_, _j_ を共に秘密鍵とした時、秘密鍵同士の和から 得られる公開鍵は、それぞれの秘密鍵から得られる公開鍵の和と等しいことが分かる。Bitcoin では、 -HDウォレットがこの原理を大いに利用している。そして Mimble Wimble と Grin もこの性質を利用する。 +HDウォレットがこの原理を大いに利用している。そして MimbleWimble と Grin もこの性質を利用する。 ### Transacting with MimbleWimble -トランザクションの構造には MimbleWimbe の核となる信条を見ることができる: +トランザクションの構造には MimbleWimble の核となる信条を見ることができる: 強固なプライバシーと機密性の保証だ。 MimbleWimble トランザクションのバリデーションは以下の2つの性質に依る: @@ -75,7 +74,7 @@ MimbleWimble トランザクションのバリデーションは以下の2つ 上述した楕円曲線暗号の性質を利用しているので、トランザクションの value を秘匿化することができる。 _v_ を トランザクション input または output の value とし、_H_ を楕円曲線としたとき、 [TODO: 「楕円曲線上の点」では?] -トランザクションに直接 _v_ を書き込むのではなく、 `v*H` を変わりに書き込むことができる。これは、ECC演算を用いることで、 +トランザクションに直接 _v_ を書き込むのではなく、 `v*H` を代わりに書き込むことができる。これは、ECC演算を用いることで、 トランザクションの outputs の和は inputs の和に等しいことを検証できるからである: v1 + v2 = v3 => v1*H + v2*H = v3*H @@ -83,7 +82,7 @@ _v_ を トランザクション input または output の value とし、_H_ この性質をトランザクション毎に検証することによって、プロトコルはトランザクションがなにもない空中からお金を作り出していないことを、 実際の value を知ることなく検証できる。しかし、使用できる value の数は有限であり、それらをすべて試すことでトランザクションの value を推測することは可能である。加えて、 v1 とそれから導出できる `v*H` を知っているということは、ブロックチェーン上のすべての -value が v1 の output がわかってしまうということを意味する。これらの理由から、2つ目の楕円曲線 _G_ (実際には、 _H_ と同じ +value が v1 の output からわかってしまうということを意味する。これらの理由から、2つ目の楕円曲線 _G_ (実際には、 _H_ と同じ 曲線上の他の生成元である)と秘密鍵 _r_ を *目くらまし因子(blinding factor)*として導入することにする。 今、トランザクションの input/output value は次のように表すことができる: @@ -125,7 +124,7 @@ value を知ることなくして実行可能であるということだ。 #### 所有権 前の章において、秘密鍵を blinding factor として導入することでトランザクションの value を -秘匿化した。MimbleWible の第二のポイントは、この秘密鍵を活用して value の所有権を証明できる +秘匿化した。MimbleWimble の第二のポイントは、この秘密鍵を活用して value の所有権を証明できる ということです。 Alice があなたに 3 coin を送金し、その額を秘匿化するために、あなたは 28 を blinding factor @@ -271,7 +270,7 @@ tx は署名され、署名は _transaction kernel_ に含まれる。署名は sum(outputs) - sum(inputs) = kernel_excess ブロックは単に inputs, outputs, transaction kerbels を集約したものであるということに気がつけば、同じことがブロックに関しても言える。 -tx outputs の和から tx inputs の和を引いて、その結果である Pedersen commitment を kernel excesses の和と比較できる - +tx outputs の和から tx inputs の和を引いて、その結果である Pedersen commitment を kernel excesses の和と比較できる - sum(outputs) - sum(inputs) = sum(kernel_excess) @@ -290,7 +289,7 @@ tx outputs の和から tx inputs の和を引いて、その結果である Pe (in1, in2, in3) -> (out1, out2), (kern1, kern2) -(inputs と outputs の和がゼロとなるように)トランザクションを再現するためにすべてのあり得る順列を試すことは、ごく簡単である - +(inputs と outputs の差がゼロとなるように)トランザクションを再現するためにすべてのあり得る順列を試すことは、ごく簡単である - (in1, in2) -> (out1), (kern1) @@ -306,8 +305,8 @@ tx outputs の和から tx inputs の和を引いて、その結果である Pe sum(outputs) - sum(inputs) = sum(kernel_excess) + kernel_offset -トランザクションを構成する際、鍵 `k` を `k1+k2` に分割する。transaction kernel `(k1+k2)*G` については、`k1*G` (excess)と `k2`(offest)をパブリッシュし、トランザクションに `k1*G` で署名をする。 -ブロックを構成する際には、単純に `k2` を足し合わせて一つの集約した `k2` offsset を生成でき、それによりブロックの中のすべてのトランザクションをカバーできる。個々のトランザクションの `k2` offset を再構成するのは不可能である。 +トランザクションを構成する際、鍵 `k` を `k1+k2` に分割する。transaction kernel `(k1+k2)*G` については、`k1*G` (excess)と `k2`(offset)をパブリッシュし、トランザクションに `k1*G` で署名をする。 +ブロックを構成する際には、単純に `k2` を足し合わせて一つの集約した `k2` offset を生成でき、それによりブロックの中のすべてのトランザクションをカバーできる。個々のトランザクションの `k2` offset を再構成するのは不可能である。 #### Cut-through @@ -328,12 +327,12 @@ inputs はそれらが使用する outputs への参照である。以前のブ すると、以下の2つの性質に気づく: * いくつかの outputs は直接ブロック内の inputs によって使用されている(I3 は O2, I4 は O3 を使用している) -* それぞれのトランザクションの構造は実際にはあまり意味をなさない。個々のトランザクションの和がゼロなので、それらの合計であるすべてのトランザクションの inputs と outputs の和はゼロでなければならない。 +* それぞれのトランザクションの構造は実際にはあまり意味をなさない。個々のトランザクションの和がゼロなので、それらの合計であるすべてのトランザクションの inputs と outputs の和はゼロでなければならない。 トランザクションにおいても似たように、ブロックの中でチェックする必要があるのは所有権が証明されているという こと(_transaction ketnels_ によって可能)と、ブロック全体が(coinbase 以外で)新たなコインを加えて いないということである。 -したがって、全体的な和に対する寄与が相殺されるので、 inputs と outputs の組合わせを排除することができる。それにより以下のようなよりコンパクトなブロックになる: +したがって、全体的な和に対する寄与が相殺されるので、 inputs と outputs の組合わせを排除することができる。それにより以下のようなよりコンパクトなブロックになる: I1(x1) | O1 I2(x2) | O4 @@ -349,7 +348,7 @@ inputs はそれらが使用する outputs への参照である。以前のブ * cut-through 後に残っている inputs のリスト * cut-through 後に残っている outputs のリスト * ブロック全体をカバーする一つの kernel offset -* それぞれのトランザクションに対して transaction kernels が存在し以下の要素から成る: +* それぞれのトランザクションに対して transaction kernels が存在し以下の要素から成る: * すべての commitment の和から得られる公開鍵 `r*G` * excess value によって生成された署名 * マイニング手数料 @@ -357,16 +356,16 @@ inputs はそれらが使用する outputs への参照である。以前のブ このように構成された時、MimbleWimble ブロックは極めて良いプライバシーを提供する: * transaction kernel のみによって中間(cut-through)トランザクションが表現される -* すべての ouputs が同じに見える:互いに区別することのできないとても大きな数だけである。 +* すべての outputs が同じに見える:互いに区別することのできないとても大きな数だけである。 いくつか outputs を除きたいと考えたとき、すべてを取り除かなければならない。 -* すべてのトランザクション構造が取り除かれ、どの ouput がどの input と組になっているかを +* すべてのトランザクション構造が取り除かれ、どの output がどの input と組になっているかを 知るのは不可能である。 それでもなお、バリデートすることができる! #### Cut-through All The Way -前の例のブロックに戻ろう。I1 と I2 によって使用sれた outputs x1 と x2 はそれ以前にブロックチェーン +前の例のブロックに戻ろう。I1 と I2 によって使用された outputs x1 と x2 はそれ以前にブロックチェーン に出現していなければならない。したがってこのブロックが追加された後は、これらの outputs、そして I1, I2 もチェーン全体から取り除くことができる。それらは総額には影響しないからだ。 @@ -394,4 +393,4 @@ transaction kernel 内の blinding factor の和と outputs 内の blinding fact このドキュメントでは、MimbleWimble ブロックチェーン根底にある基本的な原理を 説明した。楕円曲線暗号の加算の性質を用いることで、完全に不透明な、しかし validate することのできるトランザクションを構築することができた。そしてこの性質をブロックに -一般化することによって、大量のブロックチェーンのデータを節約することができ、素晴らしいスケーリング、新しいピアの高速な動機が可能となった。 +一般化することによって、大量のブロックチェーンのデータを節約することができ、素晴らしいスケーリング、新しいピアの高速な同期が可能となった。