# HG changeset patch # User akahori # Date 1542204884 -32400 # Node ID 70e5b87f5da4c8c3c28064c86ce13ad372dfc2f2 # Parent 99d809a93f6cc008e0851a4313ce3aa7877e5260 fix diff -r 99d809a93f6c -r 70e5b87f5da4 midterm/midterm.pdf Binary file midterm/midterm.pdf has changed diff -r 99d809a93f6c -r 70e5b87f5da4 midterm/midterm.tex --- a/midterm/midterm.tex Wed Nov 14 23:04:37 2018 +0900 +++ b/midterm/midterm.tex Wed Nov 14 23:14:44 2018 +0900 @@ -79,8 +79,9 @@ \item トランザクションリスト. \end{itemize} -ブロックは前のブロックと暗号化ハッシュでつながっている. ブロックの中のパラメータをつなげてハッシュ化しているため, 現在のブロックのハッシュは前のブロックのハッシュに依存して作られる. そのため, もしブロックを改ざんしたいとしたら, そのブロックにつながるすべてのブロックを改ざんしなければならない. -その仕組みだけならば複数のブロックのハッシュを同時に改ざんすることで, データが改ざんされてしまう可能性がある. しかし, ブロックに付け加える場合にはある作業を行わせ, それによってある条件に収まるHashを作らせることで, この可能性を少なくしている. 例えば, ビットコインだとProof of Workという計算問題を解かせ, Hashを生成する. これは単純にはソースコード\ref{code:proof of work}のような問題を解くのと同義である. +ブロックは前のブロックと暗号化ハッシュでつながっている. 前のブロックのハッシュは, これらのパラメータをつなげてハッシュ化しているため, 現在のブロックのハッシュが作られる際も, その前のブロックのハッシュに依存して作られる. そのため, もしブロックを改ざんしたいとしたら, そのブロックにつながるすべてのブロックを改ざんしなければならない. + +その仕組みだけならば複数のブロックのハッシュを同時に改ざんすることで, データが改ざんされてしまう可能性がある. しかし, ブロックに付け加える場合にある作業を行わせ, それによってある条件に収まるHashを作らせることで, 改ざんの可能性を少なくしている. 例えば, ビットコインだとProof of Workという計算問題を解かせ, Hashを生成する. これは単純にはソースコード\ref{code:proof of work}のような問題を解くのと同義である. \begin{lstlisting}[caption="Proof of Workを単純にしたコード", label={code:proof of work}] while(1){ @@ -116,7 +117,7 @@ \item DataGearManager(以下DGM) \end{itemize} -CGはクラスに相当し, DGは変数データに相当する. CGMはノードであり, DGM, CG, DGを管理する. DGMはDGを管理するものであり, putという操作により変数データ, つまりDGを格納できる. +CGはクラス, スレッドに相当し, DGは変数データに相当する. CGMはノードであり, DGM, CG, DGを管理する. DGMはDGを管理するものであり, putという操作により変数データ, つまりDGを格納できる. DGMにはLocalとRemoteと2つの種類があり, Localであれば, LocalのCGMが管理しているDGMに対し, DGを格納していく. Remoteであれば接続したRemote先のCGMのDGMにDGを格納できる. DGを取り出す際にはアノテーションを付けることで, データの取り出し方も指定できる. Take, Peekという操作があり, Takeは読み込んだDGが消えるが, PeekはDGを消さずにそのまま残す. また, RemoteTake, RemotePeekというものもあり, リモート先を指定することにより, RemoteDGMからデータを取ることができる.