Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Introduction Blockchain

Introduction Blockchain

学習発表会で発表したスライドを、配布資料向けに再編成したものです。
私が口頭で話した内容も含まれています。
ぜひご覧ください。

More Decks by Waseda Univ. JHS Cashless Research Team

Other Decks in Technology

Transcript

  1. “早稲田大学高等学院” 上の文字列に“。”を付け足した ハッシュ関数にかける ハッシュ値(出力値) 2717420f4875a2920e00b a9e04c1874ac3857c6e62 3a371914630468f79c2e2f ハッシュ値から元の文字を 復元する “早稲田大学高等学院。”

    文字列②(入力値) ハッシュ関数にかける edc084eb27c89d14c2571 0cc05224b197f2367b97fa e3b47091f2cee9bf9a586 ハッシュ値から元の文字を 復元する 一 文 字 で も 入 力 値 を 変 え る と 出 力 値 も 変 わ る ハッシュ値(出力値) 文字列①(入力値)
  2. Nonce・ハッシュ値とセキュリティー① ブロックを生成する際に、前述したNonceを求めるという計算作業をさせることで、悪意のあるマ イナーが不正な取引を含んだブロックが生成させるのを防ぐことができる。 →なぜならば、不正なブロックを生成するためには、善意のマイナーよりも大きい計算力が必要 となるため。そうしないといつまで経っても善意のマイナーがマイニングに成功してしまう。 しかし、大きな計算力を持つためには非常に高価なコンピュータを購入しなければならずコスト が掛かってしまう。 それに加え、もし悪意のあるマイナーが善意のマイナーの計算力を超えたとしても、できること は自分が前に行った取引を取り消すことのみである。また、そのようなことをすれば、そのブロッ クチェーンへの信頼はなくなり、そのブロックチェーン上の暗号資産の値段もほぼ0に近づくた

    め、自らの資産もほぼ無くなることとなり、攻撃することで得られる経済的なメリットはまったくな い。それに加え、もしこのような状態が起こった場合、善意のマイナーの計算力を超えたマイ ナーは、規則に従ってマイニングしたほうが、正規の報酬が得られるため経済的にメリットがあ ることになる。 そのため、BitcoinやEthereumなどの善意のマイナーが十分にいるブロックチェーンは今に至る まで攻撃を受けずにいるのである。
  3. Nonce・ハッシュ値とセキュリティー② あるブロックに前のブロックのハッシュ値が入っていることで、高い耐改ざん性が期待できる。 例えば、悪意のあるマイナーAが、自分が昔行った送金の額を変更しようとしているとする。 また、この送金に関するトランザクションが入っているのはBlock 10だとする。この時、Block 11には Block10のハッシュ値が、Block 12にはBlock11のハッシュ値が含まれているため、AがBlock10のトラン ザクションを改ざんすると、Block10のハッシュ値が変わるだけでなく、Block11、Block12と、Block10以 降のブロックのハッシュ値が全て変わってしまうことになる。また、それに伴いNonceも、ブロックの

    ハッシュ値が決められた値以下になるように、計算し直さなくてはならない。 これには、莫大な時間とコンピューターの計算力が必要となるため、ネットワークが善意のノードで占 められている場合には、AがNonceの再計算をする速度よりも善意のノードが新しいブロックを生成す る速度のほうが早くなる。 そのため、これが成功するのは悪意のあるノードが善意のノードより計算力を保持する場合に限る。 だが前述のように攻撃者側にメリットがないため、これからもブロックチェーンが改ざんされる可能性 は著しく低いのではないかと考えられる。 このような仕組みを利用することで、管理者がいないく、悪意のある参加者がいる中でも、どのマイ ナーが生成(承認)したブロックをネットワークに追加すれば良いのかという問題が解決できる!
  4. ①ボブのアドレスからがアリスのアドレスに1ether送金するとい う情報と署名が入ったTransactionをボブのウォレットがネット ワークに送信する ウォレット・・・秘密鍵や残高を管理し、トランザクションを発行するソフト また、ブロックチェーンネットワークには管理者がいないため、送られた データはまずひとつのマイナーのところに行き、その後伝言ゲームのよう に各マイナーのところにたどり着く Bob’s Wallet https://coin-portal.net/basics/wallet/what-is-wallet/より引用

    Bob’s Transaction (送金額、宛先のアドレス、 マイナーに払う手数料、署 名トランザクションのハッ シュ値などが入っている) ネットワークの一台のコン ピューターに送ると伝言ゲーム のようにその他のコンピュー ターがまた他のコンピュータに 送るというのを繰り返し、すべ てのネットワーク上のPCに情報 が伝わる。
  5. ③マイナーがトランザクションをブロックの中に含める。 Block N Transaction Pool Bob’s transaction Charlie’s transaction Frank’s

    transaction Dave’s transaction Ellen’s transaction Transaction 1 Bob’s transaction Transaction2 Block Header (ブロックに関する情報が入っている 場所、Nonceもここに入っている) Ommer’s header(今回は触れない) 追加
  6. ④そのブロックをマイナーがマイニングする Block N Transaction 1 Bob’s transaction Transaction2 BlockHeader(Nonce:f893ab1) Ommer’s

    header ハッシュ化 8x9a7b88530d9642f 829c10238e968f79c 1928d1928f9284a99 1473d821a7fd ハッシュ値 その後もハッシュ値が特定の数以下に なる、つまり先頭のゼロの数が決められ た数以上になるようにNonceを変更し続 けハッシュ値を計算する。 Block N Transaction 1 Bob’s transaction Transaction2 Block Header(Nonce:1) Ommer’s header 最終的に… ハッシュ化 0x00000000000000 0000000278f71a78b 8c910ef8919324631 1562bbdd173e6
  7. ⑤マイニングが終了したブロックはネットワークを通じて他の ノードに送られる Block N Transaction 1 Bob’s transaction Transaction2 BlockHeader(Nonce:f893ab1)

    Ommer’s header マイニングに最初に成功 したマイナー。このマイ ナーがブロックを送る。 Block N Block N Block N Block N Block N 受け取った! 受け取った! 受け取った! 受け取った! 受け取った!
  8. ⑥送られたマイナーはヘッダーとそのブロックの中のトランザク ションをすべて検証する Block N Transaction 1・・・OK! Bob’s transaction・・・OK! Transaction2・・・OK! Block

    Header・・・OK! Ommer’s header(今回は触れない) 各マイナーがチェック このとき、検証をするのはただブロッ クの情報をハッシュ関数に掛け、 ハッシュ値が基準の値よりも小さい かを確認するだけなので非常に簡 単である。 つまり、Nonceを見つけるのは大変 だが、それを検証するのは難しいと いうことである。
  9. ⑦検証終了後、各マイナーが持つアカウントの 残高帳の値等、取引に関わった所を変更する 残高帳 アドレス 残高 取引回数(Nonce,マイニング時の ものとは別) 0x327ab81d2e…(ボブ) 1ether→2ether 1→2

    0x783ef281dc..(アリス) 3ether→2ether 3→4 0x728ad929d…(エレン) 1.23ether→1.38ether 6→7 0x38d29de91b…(デイブ) 4.2913ether→5ether 18→19 0x138a6b82d…(フランク) 3.3ether→3.15ether 10→11 0x694c5e7ff…(チャーリー) 3.7087ether→3ether 29→30
  10. 参考文献 Satoshi Nakamoto,「ビットコイン: P2P 電子通貨システム 」 ,<https://bitcoin.org/files/bitcoin- paper/bitcoin_jp.pdf> 2019/10/2閲覧. Ethereumのアドレス生成アルゴリズム,

    <https://qiita.com/ippo012/items/c64a2c4d873c0faf187c> 2019/10/3閲覧. 「PoW」, <https://zaif.jp/glossary/pow?lang=ja> 2019/10/3閲覧. 「早稲田大学高等学院」の文字のハッシュ値を求める際には、以下のサイトを利用しました。 「keccak-256 online」, <https://emn178.github.io/online-tools/keccak_256.html> 2019/10/2閲覧.