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