Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introduction Blockchain
Search
Waseda Univ. JHS Cashless Research Team
November 16, 2019
Technology
0
270
Introduction Blockchain
学習発表会で発表したスライドを、配布資料向けに再編成したものです。
私が口頭で話した内容も含まれています。
ぜひご覧ください。
Waseda Univ. JHS Cashless Research Team
November 16, 2019
Tweet
Share
More Decks by Waseda Univ. JHS Cashless Research Team
See All by Waseda Univ. JHS Cashless Research Team
Introduction CryptoCurrency
wasedacashless
0
250
Introduction QR-Code Payment
wasedacashless
0
280
Introduction Circumstances in Australia and Japan
wasedacashless
0
24
Introduction Card
wasedacashless
0
270
Introduction Circumstances in Australia and Japan
wasedacashless
0
250
Other Decks in Technology
See All in Technology
Databricks向けJupyter Kernelでデータサイエンティストの開発環境をAI-Readyにする / Data+AI World Tour Tokyo After Party
genda
1
610
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
950
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
日本Rubyの会: これまでとこれから
snoozer05
PRO
5
210
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
310
SQLだけでマイグレーションしたい!
makki_d
0
1.1k
AWSの新機能をフル活用した「re:Inventエージェント」開発秘話
minorun365
1
160
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
600
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
180
Microsoft Agent 365 についてゆっくりじっくり理解する!
skmkzyk
0
410
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
950
.NET 10の概要
tomokusaba
0
120
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
6.7k
Prompt Engineering for Job Search
mfonobong
0
120
Building AI with AI
inesmontani
PRO
1
560
The Language of Interfaces
destraynor
162
25k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
120
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
57
37k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The browser strikes back
jonoalderson
0
64
From π to Pie charts
rasagy
0
86
Joys of Absence: A Defence of Solitary Play
codingconduct
1
250
Transcript
ブロックチェーンとは 中学部2年 木村太
自己紹介 早稲田大学高等学院中学部 木村太 最近してること:Solidityの勉強、開発・Rustの勉強 興味のあること:ブロックチェーン・暗号資産・キャッシュレス BitbearsというブロックチェーンR&D団体に入っています。 ご質問等あれば、 @damarai0422 へDM、もしくは
[email protected]
までE-mailでお気軽にご連絡ください!
ブロックチェーンとはなにか 簡単に言うと、そのブロックチェーンの運用がスタートしてから今までにブ ロックチェーン上で行われた取引の内容が全て書かれており、一つの企 業や団体ではなく世界中に分散しているノードと呼ばれるコンピューター によって管理されていて、誰でも内容を見れて、耐改ざん性を備えている ノート(台帳)のこと。 ブロックチェーンネットワークには誰でも参加することができる。 今回は、ブロックチェーンの中でもパブリックブロックチェーンというものに ついて説明を行う。 (ブロックチェーンにはパブリックブロックチェーンの他にプライベートブ
ロックチェーンというものもある。これはブロックチェーンを管理しているの が一つの企業・団体であるようなもののことを言う。)
特長と利点 これまで第三者機関を通さなければ出来なかったオンライン上の送金・ 決済という行為が信頼のある仲介者(銀行など)なしで実現できる →・名前や年齢といった個人情報や購買データが企業に収集されない ・仲介者の信頼性を確認する必要がなくなる ・世界中どこへでも送金することができる ・メンテナンス等がないため24時間365日送金できる ・仲介者による不正や改ざんが起こらない ・仲介者がいないため送金手数料が従来より安くなる (これは国際送金をするときの手数料を考えるとわかりやすい)
etc.
ちなみに https://chainflyer.bitflyer.jp/ でBitcoinの取引情報を https://etherscan.io/ でEthereum上での取引情報を それぞれ見ることができる
こんな感じ https://etherscan.io/tx/0xc1ee 400b85a6c125fb41141763f88 898afac7ac6a0d294a92d2756 7c66990b50より引用 これらの項目はこの資料を読 み終わったあとにもう一度見 返してほしい。
ブロックチェーンの構造 「Transaction」を集めたものがブロックという固まりを作る 「Transaction」とは、送金に必要な情報 →送金額・宛先・送金元・署名(本当に本人がTransactionを送信したとい うことを表すもの)などが含まれている ブロックには、大量の計算をしなければ見つけることのできない特殊な 数字である「Nonce」と呼ばれるものが含まれている。 (この計算をすることをマイニングという) あるブロックは必ず前のブロックの情報を含んでいる 上記の2つの性質により改ざんが非常に難しくなる。
注:ブロックにはその他の情報も入ってるが今回は簡略化のため記載しない
マイニング(採掘) 「Nonce」という値を見つけるために大量の計算をし、新たなブロックを生成する手順 この「Nonce」という数値を一番最初に見つけた人は報酬として暗号資産を入手でき、ブロック を生成する権利が得られる。 この報酬目当てで多くの人がブロックチェーンネットワークに参加している。 マイニングを行う人のことを、マイナーと呼ぶ。 このマイナーが増えることで、非中央集権的なネットワークを作ることができる。
ハッシュ関数について Nonceを求める際も含め、ブロックチェーンでは様々な場面で、「ハッシュ関数」と呼ばれるもの が関わってくる。 このハッシュ関数というものは、ある入力値に対して、全く別の出力値を返すというシンプルな 関数である。このときの出力値を「ハッシュ値」と呼ぶ。 同じ入力値を入れればハッシュ値は常に一定となり、入力値が1文字でも変われば、ハッシュ 値は全く違うものとなる。 また、入力値からハッシュ値は簡単に求められるが、ハッシュ値から入力値を求められないと いう重要な特徴を持っている。 また、ハッシュ関数は、入力値の長さに関わらず一定の長さでハッシュ値を返す。
このような性質から、ハッシュ値はしばしば情報が改ざんされていないという証明にも利用され、 「ブロックチェーンの構造」で述べたブロックの要約値、というのも実はブロックのハッシュ値の ことである。
“早稲田大学高等学院” 上の文字列に“。”を付け足した ハッシュ関数にかける ハッシュ値(出力値) 2717420f4875a2920e00b a9e04c1874ac3857c6e62 3a371914630468f79c2e2f ハッシュ値から元の文字を 復元する “早稲田大学高等学院。”
文字列②(入力値) ハッシュ関数にかける edc084eb27c89d14c2571 0cc05224b197f2367b97fa e3b47091f2cee9bf9a586 ハッシュ値から元の文字を 復元する 一 文 字 で も 入 力 値 を 変 え る と 出 力 値 も 変 わ る ハッシュ値(出力値) 文字列①(入力値)
Nonceの求め方 ①まずマイナーはNonceを適当に決める。 ②適当に決めたNonceをブロックに入れ、そのブロックのハッシュ値を計算する。 このとき、 求めたハッシュ値が事前に定められている値(この値はマイニングの成功状況により変わる) よりも小さくなればマイニングは成功。 そうではなかった場合、マイニングは失敗 マイニングが失敗した場合は、マイナーはまたNonceを変えて同じ手順を、自分がマイニング に成功するか他の人が先に成功するまで繰り返す。 ハッシュ値から入力値を求めることはできないため、マイナーはこのように地道な計算を続けマ
イニングを成功させるしかない。 また、マイナーはマイニングを成功させることによって報酬となる暗号資産をもらえるため、これ がマイニングを続ける原動力となっている。
このように、計算量に応じてブロックの生成権を付与する仕組みを、PoWと呼ぶ。 (Proof of Work, 仕事量による証明) 現在ではこの仕組みが一番メジャーである。 ちなみに、ブロックの生成権付与の仕組みはPoW以外にも存在する(例:PoS,PoCなど)
Nonce・ハッシュ値とセキュリティー① ブロックを生成する際に、前述したNonceを求めるという計算作業をさせることで、悪意のあるマ イナーが不正な取引を含んだブロックが生成させるのを防ぐことができる。 →なぜならば、不正なブロックを生成するためには、善意のマイナーよりも大きい計算力が必要 となるため。そうしないといつまで経っても善意のマイナーがマイニングに成功してしまう。 しかし、大きな計算力を持つためには非常に高価なコンピュータを購入しなければならずコスト が掛かってしまう。 それに加え、もし悪意のあるマイナーが善意のマイナーの計算力を超えたとしても、できること は自分が前に行った取引を取り消すことのみである。また、そのようなことをすれば、そのブロッ クチェーンへの信頼はなくなり、そのブロックチェーン上の暗号資産の値段もほぼ0に近づくた
め、自らの資産もほぼ無くなることとなり、攻撃することで得られる経済的なメリットはまったくな い。それに加え、もしこのような状態が起こった場合、善意のマイナーの計算力を超えたマイ ナーは、規則に従ってマイニングしたほうが、正規の報酬が得られるため経済的にメリットがあ ることになる。 そのため、BitcoinやEthereumなどの善意のマイナーが十分にいるブロックチェーンは今に至る まで攻撃を受けずにいるのである。
Nonce・ハッシュ値とセキュリティー② あるブロックに前のブロックのハッシュ値が入っていることで、高い耐改ざん性が期待できる。 例えば、悪意のあるマイナーAが、自分が昔行った送金の額を変更しようとしているとする。 また、この送金に関するトランザクションが入っているのはBlock 10だとする。この時、Block 11には Block10のハッシュ値が、Block 12にはBlock11のハッシュ値が含まれているため、AがBlock10のトラン ザクションを改ざんすると、Block10のハッシュ値が変わるだけでなく、Block11、Block12と、Block10以 降のブロックのハッシュ値が全て変わってしまうことになる。また、それに伴いNonceも、ブロックの
ハッシュ値が決められた値以下になるように、計算し直さなくてはならない。 これには、莫大な時間とコンピューターの計算力が必要となるため、ネットワークが善意のノードで占 められている場合には、AがNonceの再計算をする速度よりも善意のノードが新しいブロックを生成す る速度のほうが早くなる。 そのため、これが成功するのは悪意のあるノードが善意のノードより計算力を保持する場合に限る。 だが前述のように攻撃者側にメリットがないため、これからもブロックチェーンが改ざんされる可能性 は著しく低いのではないかと考えられる。 このような仕組みを利用することで、管理者がいないく、悪意のある参加者がいる中でも、どのマイ ナーが生成(承認)したブロックをネットワークに追加すれば良いのかという問題が解決できる!
秘密鍵・公開鍵・アドレス 暗号資産を送金するときに必要なパスワードを秘密鍵と呼ぶ。これが他人に知られてしまうと、 知った人はその暗号資産を送金することが自由にできるようになってしまうため、管理には注 意が必要である。 また、この秘密鍵から楕円曲線暗号というものを利用してできる英数字の羅列を公開鍵と呼ぶ。 公開鍵は、その名の通り外部に公開しても支障はないが、公開する意味はない。前に述べた 秘密鍵と共に、送金時に、本当に自分が送金したという証明である署名を作成するのに利用さ れる。署名は、Transactionの中に含まれている 最後に、公開鍵をハッシュ化し、それの後ろ40文字を取り出した英数字の羅列をアドレスと呼ぶ。 これは、口座番号のようなもので、送金を行う際は、宛先にアドレスを指定する。性質上、公開し
ても何ら問題は生じない。
実際の送金の流れ (ここでは、ボブがアリスに1Ether(暗号資産の一種)を送金することを考える) //また、簡略化のためGAS(一種の手数料のようなもの)は考えない。
①ボブのアドレスからがアリスのアドレスに1ether送金するとい う情報と署名が入ったTransactionをボブのウォレットがネット ワークに送信する ウォレット・・・秘密鍵や残高を管理し、トランザクションを発行するソフト また、ブロックチェーンネットワークには管理者がいないため、送られた データはまずひとつのマイナーのところに行き、その後伝言ゲームのよう に各マイナーのところにたどり着く Bob’s Wallet https://coin-portal.net/basics/wallet/what-is-wallet/より引用
Bob’s Transaction (送金額、宛先のアドレス、 マイナーに払う手数料、署 名トランザクションのハッ シュ値などが入っている) ネットワークの一台のコン ピューターに送ると伝言ゲーム のようにその他のコンピュー ターがまた他のコンピュータに 送るというのを繰り返し、すべ てのネットワーク上のPCに情報 が伝わる。
②送られたTransactionは、各マイナーが所持するTransaction poolというところに一時保管される Transaction Pool Bob’s transaction Charlie’s transaction Bob’s transaction
Dave’s transaction Ellen’s transaction
③マイナーがトランザクションをブロックの中に含める。 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(今回は触れない) 追加
④そのブロックをマイナーがマイニングする 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
⑤マイニングが終了したブロックはネットワークを通じて他の ノードに送られる Block N Transaction 1 Bob’s transaction Transaction2 BlockHeader(Nonce:f893ab1)
Ommer’s header マイニングに最初に成功 したマイナー。このマイ ナーがブロックを送る。 Block N Block N Block N Block N Block N 受け取った! 受け取った! 受け取った! 受け取った! 受け取った!
⑥送られたマイナーはヘッダーとそのブロックの中のトランザク ションをすべて検証する Block N Transaction 1・・・OK! Bob’s transaction・・・OK! Transaction2・・・OK! Block
Header・・・OK! Ommer’s header(今回は触れない) 各マイナーがチェック このとき、検証をするのはただブロッ クの情報をハッシュ関数に掛け、 ハッシュ値が基準の値よりも小さい かを確認するだけなので非常に簡 単である。 つまり、Nonceを見つけるのは大変 だが、それを検証するのは難しいと いうことである。
⑦検証終了後、各マイナーが持つアカウントの 残高帳の値等、取引に関わった所を変更する 残高帳 アドレス 残高 取引回数(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
ざっとこのような流れになっています。 もちろん、これ以外にも内部で起こることはありますが、それはまたの機会に…
いかがでしたでしょうか。この資料を読んで、少しでもブロックチェーンのことが分 かるようになっていただければ幸いです。
まとめ&お知らせ ブロックチェーンは、公開鍵や秘密鍵といった暗号技術やハッシュ関数な ど、ブロックチェーンという概念が生まれる前からあった技術が組み合わ さってできている。 ブロックチェーン上で取引を行うことで、透明性を確保できたり、特定の企 業や団体などに情報を収集されないといった多くのメリットを享受することが できる。 また、Ethereumというブロックチェーンではスマートコントラクトと呼ばれる プログラムをブロックチェーン上で動かすことができる。 この資料を見て、少しでも「ブロックチェーン面白そう」とか「学んでみたい」と
思った方は是非連絡ください!一緒に学びましょう!
参考文献 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閲覧.