Mercurial > hg > Papers > 2019 > aka-midterm
changeset 4:e8b8a3fdf5e8
update tex
author | akahori |
---|---|
date | Sun, 11 Nov 2018 22:58:11 +0900 |
parents | 690b2e6a1713 |
children | a3739448a63a |
files | midterm/midterm.pdf midterm/midterm.tex mindmap/blockchain implements in Christie.xmind |
diffstat | 3 files changed, 16 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/midterm/midterm.tex Sun Nov 11 22:17:17 2018 +0900 +++ b/midterm/midterm.tex Sun Nov 11 22:58:11 2018 +0900 @@ -61,9 +61,9 @@ %% 整合性保持のproof of workでは, OSのcpu使用率に応じて, ファイルの同期が早くなるようにする. \section{ブロックチェーン} -ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロックをつなげたものを, システムに参加しているすべてのノードが参照できる技術である. +ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロックをつなげたものを, システムに参加しているすべてのノードが参照できる技術である. ブロックチェーンはデータの追跡, 検証が容易であり, 中央管理者が存在しないと言うメリットがある. -ブロックは前のブロックと暗号化ハッシュでつながっており, 現在のブロックのハッシュは前のブロックのハッシュに依存して作られる. そのため, もしブロックを改ざんしたいとしたら, そのブロックにつながるすべてのブロックを改ざんしなければならない. しかし, その仕組みだけだと簡単に改ざんができてしまう. そのため, ブロックに付け加える場合にはある作業を行わせ, それによってある条件に収まるHashを作らせる. 例えば, ビットコインだとProof of Workという計算問題を解かせ, Hashを生成する. これは単純には +ブロックの中身は前のブロックの暗号化ハッシュ, タイムスタンプなどのメタデータと複数のトランザクションが入っている. ブロックは前のブロックと暗号化ハッシュでつながっており, 現在のブロックのハッシュは前のブロックのハッシュに依存して作られる. そのため, もしブロックを改ざんしたいとしたら, そのブロックにつながるすべてのブロックを改ざんしなければならない. しかし, その仕組みだけならば複数のブロックのハッシュを同時に改ざんすることで, データが改ざんされてしまう可能性がある. そのため, ブロックに付け加える場合にはある作業を行わせ, それによってある条件に収まるHashを作らせる. 例えば, ビットコインだとProof of Workという計算問題を解かせ, Hashを生成する. これは単純には \begin{lstlisting} while(1){ @@ -78,9 +78,13 @@ \end{lstlisting} -と言う問題を解くのと同義である. 実際には $0 < rand() < 10000$はもっと大きな値である. +と言う問題を解くのと同義である. 実際には $0 < rand() < 10000$はもっと大きな値であり, またこれは複数ノードでの分散環境下で計算される. もし, 条件に合うブロックのハッシュが生成できたならば, 他のノードによってそのハッシュが実際に生成されるかどうかを調べる. この仕組みにより, 改ざんを起きにくくしている. + +このような, 計算量の多くするコンセンサスアルゴリズムを用いることで, 中央管理者が存在しないにもかかわらずにデータの整合性保持が行われる. -もし至るところでブロックが作られ, 競合すると, 競合したブロック同士で, つながっているブロックが多いものを正しいブロックとする. +トランザクションの中身はデータ, 前のトランザクションと後ろのトランザクションのハッシュ, 暗号鍵でのトランザクションの署名となっている. 署名により, 誰のトランザクション化が簡単にわかる. + +もし至るところでブロックが作られ, 競合した場合, 競合したブロック同士でつながっているブロックが多いものを正しいブロックとする. 通信はp2pで行われ, ブロックが承認された場合, 他のノードにブロードキャストされる. @@ -92,7 +96,14 @@ DGMにはLocalとRemoteと2つの種類があり, Localであれば, そのCGMにDGを格納していき, Remoteであれば接続したRemote先のCGMにDGを格納できる. DGを取り出す際にはアノテーションを付けることで, データの取り出し方も指定できる. Take, Peekという操作があり, Takeは読み込んだDGが消えるが, PeekはDGを消さずにそのまま残す. -CGはCGMによって実行されるが, 実行するにはDGが全て揃う必要がある. もしDGが全て揃わない場合, CGMはずっとlistenする. +CGはCGMによって実行されるが, 実行するにはDGが全て揃う必要がある. もしDGが全て揃わない場合, CGMはずっとlistenし, データが揃うまで実行を待つ. + + + +\section{やったこと} +実際に, ブロックの実装と + +\section{やること}