# HG changeset patch # User akahori # Date 1550234786 -32400 # Node ID 7ab85a536778c65747a40576f3af976da3dda94b # Parent bb0c2543c456bde14a0f7f530c47922a54c1f46c update diff -r bb0c2543c456 -r 7ab85a536778 final_main/bibliography.tex --- a/final_main/bibliography.tex Fri Feb 15 18:20:41 2019 +0900 +++ b/final_main/bibliography.tex Fri Feb 15 21:46:26 2019 +0900 @@ -8,11 +8,12 @@ %書籍、論文、URLによって若干書き方が異なる。 %URLを載せる人は参考にした年月日を最後に記入すること。 - \bibitem{1} - -% \bibitem{gears} -% {伊波立樹, 東恩納琢偉, 河野真治}: Code Gear、Data Gear に基づく OS のプロトタイプ -% , 情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS) (2016). + + +\bibitem{bitcoin} +Bitcoin: A Peer-to-Peer Electronic Cash System \\ +\url{https://bitcoin.org/bitcoin.pdf}\\ +(2018年2月15日 アクセス) \bibitem{torque} TORQUE Introduction. \\ diff -r bb0c2543c456 -r 7ab85a536778 final_main/chapter2/chapter2.tex --- a/final_main/chapter2/chapter2.tex Fri Feb 15 18:20:41 2019 +0900 +++ b/final_main/chapter2/chapter2.tex Fri Feb 15 21:46:26 2019 +0900 @@ -6,7 +6,11 @@ \chapter{ブロックチェーンについて} ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロック, そのブロックをハッシュによって繋げ, 前後関係を表した台帳というものを, システムに参加しているすべてのノードが保持する技術である. ブロックチェーンにはパブリック型とコンソーシアム型の2種類がある. パブリック型は不特定多数のノードを対象にしており, コンソーシアム型は管理者が許可したノードが参加している. -\ + +\section{P2P} +ブロックチェーンのネットワーク間はP2Pで動く. つまり, ブロックチェーンネットワークはサーバー, クライアントの区別がなく, すべてのノードが平等である. そのため, 非中央的にデータの管理を行う. + + \section{ブロックとその構造} ブロックチェーンにおけるブロックは, 複数のトランザクションをまとめたものである. ブロックの構造は使用するコンセンサスアルゴリズムによって変わるが, 基本的な構造としては次のとおりである. @@ -22,8 +26,23 @@ BlockHeaderには, 前のブロックをハッシュ化したもの, トランザクションをまとめたmerkle treeのrootのhash, このブロックを生成したtimeとなっている. -previous block hashは, 前のブロックのパラメータを並べて, hash貸したものである. それが連なっていることで, 図のようなhash chainとして, ブロックがつながっている. +previous block hashは, 前のブロックのパラメータを並べて, hash化したものである. それが連なっていることで, 図\ref{fig:chain}のようなhash chainとして, ブロックがつながっている. +\begin{figure}[H] +\centering + \fbox{ + \includegraphics[scale=0.5]{./images/chain.pdf} + } +\caption{hash chain} +\label{fig:chain} +\end{figure} + +そのため, 一つのブロックが変更されれば, その後に連なっているブロックをすべて変更しなければいけなくなる. + +ブロックが生成された場合, 知っているノードにそのブロックをブロードキャストする. 実際には通信量を抑えるためにブロック高を送った後にブロックをシリアライズして送る場合もある. + + +ノードごとにブロックを検証し, 誤りがあればそのブロックを破棄し, 誤りがなければ更にそのノードがブロックをブロードキャストする. . そして, Transaction PoolというTransactionを貯めておく場所から, そのブロックに含まれているTransactionを削除し, 新しいブロックを生成する. @@ -32,16 +51,16 @@ \begin{description} \item[TransactionHash] トランザクションをハッシュ化したもの. \item[data] データ. -\item[sendAddress] 送り元のアドレスを指す. -\item[recieveAddress] 送り先のアドレスを指す. -\item[signature] 署名. +\item[sendAddress] 送り元のアカウントのアドレス. +\item[recieveAddress] 送り先のアカウントのアドレス. +\item[signature] トランザクションの一部と秘密鍵をSHA256でハッシュ化したもの. ECDSAで署名している. \end{description} - -\section{} +トランザクションはノード間で伝搬され, ノードごとに検証される. そして検証を終え, 不正なトランザクションであればそのトランザクションを破棄し, 検証に通った場合はTransaction Poolに取り組まれ, また検証したノードからトランザクションがブロードキャストされる. +\section{fork} - +ブロックの生成をしたあとにブロードキャストをすると, ブロック高の同じ, もしくは相手のブロック高のほうが高いブロックチェーンにたどり着く場合がある. もちろん, 相手のブロックチェーンはそのブロックを破棄する. しかしこの場合, 異なるブロックを持った2つのブロックチェーンができる. この状態をforkという. fork状態になると, 2つの異なるブロックチェーンができることになるため, 1つにまとめなければならない. 1つにまとめるためにコンセンサスアルゴリズムを使うが, コンセンサスアルゴリズムについては次章で説明する. diff -r bb0c2543c456 -r 7ab85a536778 final_main/chapter3/chapter3.tex --- a/final_main/chapter3/chapter3.tex Fri Feb 15 18:20:41 2019 +0900 +++ b/final_main/chapter3/chapter3.tex Fri Feb 15 21:46:26 2019 +0900 @@ -84,7 +84,9 @@ \item プロセスは停止する可能性がある. また, 復旧する可能性もある. \end{enumerate} -Proof of Workにある特性の4がないが, これは許可したノードのみが参加可能だからである. つまり, 悪意あるノードが参加する可能性が少ないためである. +Proof of Workにある特性の4がないが, これは許可したノードのみが参加可能だからである. つまり, 悪意あるノードが参加する可能性が少ないためである. + + %%文書終了**************************** diff -r bb0c2543c456 -r 7ab85a536778 final_main/chapter5/chapter5.tex --- a/final_main/chapter5/chapter5.tex Fri Feb 15 18:20:41 2019 +0900 +++ b/final_main/chapter5/chapter5.tex Fri Feb 15 21:46:26 2019 +0900 @@ -37,10 +37,7 @@ \lstinputlisting[caption=torque-example.sh,label=code:torque-example]{./src/torque-example.sh} -「\#PBS オプション」とすることにより実行環境を設定できる. 使用できるオプションは参考文献\cite{qsub-doc}に書かれてある. 例として, ノード数10(vm0からvm9まで), jobの名前を「ExmpleJob」という形で実行した. その結果を - - - +「\#PBS オプション」とすることにより実行環境を設定できる. 使用できるオプションは参考文献\cite{qsub-doc}に書かれてある. 例として, ノード数10(vm0からvm9まで), jobの名前を「ExampleJob」という形で実行した. その結果をExampleJobが diff -r bb0c2543c456 -r 7ab85a536778 final_main/images/chain-fork.graffle Binary file final_main/images/chain-fork.graffle has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/images/chain-fork.pdf Binary file final_main/images/chain-fork.pdf has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/images/chain.graffle Binary file final_main/images/chain.graffle has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/images/chain.pdf Binary file final_main/images/chain.pdf has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/images/proof-of-work-fork.graffle Binary file final_main/images/proof-of-work-fork.graffle has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/images/proof-of-work-fork.pdf Binary file final_main/images/proof-of-work-fork.pdf has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/main.pdf Binary file final_main/main.pdf has changed diff -r bb0c2543c456 -r 7ab85a536778 final_main/thanks.tex --- a/final_main/thanks.tex Fri Feb 15 18:20:41 2019 +0900 +++ b/final_main/thanks.tex Fri Feb 15 21:46:26 2019 +0900 @@ -15,7 +15,7 @@ \hspace{1zw} 本研究を行うにあたり, 日頃より多くの助言, ご指導いただきました河野真治准教授に心より感謝申し上げます。 -また, 本実験の測定にあたり, torqueの環境構築に協力してくださった前城健太郎先輩, また, たくさんの温かい励ましをくださった照屋のぞみ先輩. 並列信頼研究室の全てのメンバーに深く感謝いたします。最後に、物心両面で支えてくれた両親に深く感謝いたします。 +また, 本研究で使用するツールを作成いただいた照屋のぞみ先輩, 本実験の測定にあたり, torqueの環境構築に協力してくださった前城健太郎先輩, 並列信頼研究室の全てのメンバーに深く感謝いたします。最後に、物心両面で支えてくれた両親に深く感謝いたします。 %% \begin{flushright} %% % 2019年 3月 赤堀貴一