「わかりやすい!」ブロックチェーンの仕組みを簡単に理解しよう

contents section

みなさん、こんにちは!

第12回の168(いろは)プロジェクトでは、ブロックチェーンの調査を行いました!
今のブロックチェーンのベースとなっているビットコインのベースの仕組みをコードを書きながら調査しました。

本当はブロックチェーンを活用したサービスの開発を目指していましたが、ブロックチェーンを自作するための調査で手一杯ですた😭
今後の168プロジェクトでブロックチェーンを活用したサービスを開発していくので、お楽しみに!

 

 

概要

ブロックチェーンの調査をするにあたって、まずはブロックチェーンの仕組みとコードを勉強しようと思いました。

使用した教材: https://www.udemy.com/course/build-blockchain-full-stack/
JavaScriptで作っていくので、英語でもなんとかなります😊

 

最終的には、これができるようになって理解できました

  • 独自チェーンが作れる
  • 仮想通貨を発行できる
  • 他のユーザーと交換ができる
  • TransactionをTransaction Poolに溜められる
  • Transaction Poolをマイニングしてブロックにできる
  • ブロックチェーンの履歴と中のTransactionを確認できる

 

 

ブロックチェーンの仕組み

ちゃんと説明をするなら、ブロックチェーンを発明したこちらの論文を読んでください!
今回は、簡単にブロックを作られるまでの流れを説明します。

https://bitcoin.org/bitcoin.pdf

 

大枠の流れ

ブロックチェーンは下の流れで進んでいきます。
ChainやTransitionが正しいかを何度も検証しています。

 

Step 1. 仮想通貨を送る
自分のWalletの残高から友達のWalletに仮想通貨を送ります

Step 2. 仮想通貨を送る履歴をためる
Step 1の履歴を決まったルールまで貯めます(1,000件になったらなど)

Step 3. マイニングをしてBlockを繋げる
Step 2の取引履歴をまとめ、条件を満たすハッシュ値を求めるます

 

Step 1. 仮想通貨を送る

Transactionという仮想通貨のやり取りの履歴を作成します。

過去に自分が送金をしたTransactionと以降に自分に送金されたTransactionをもとに、今の自分のWalletの残高を計算します。
計算した残高以下の金額を指定したアドレスのWalletに送金するTransactionを作成します。

 

Step 2. 仮想通貨を送る履歴をためる

マイニングには時間がかかるため、Step 1で作成されるTransactionをまとめるTransaction Poolというものを作成します。

まとめるルールは自由に設定できます。(1,000件ごとに、1MB以上になったら etc.)

 

Step 3. マイニングをしてブロックを繋げる

Step 2で作成したTransaction Poolを元にBlockを作成してこれまでのチェーンに繋げます。

一つ前のBlockのハッシュ値やTransaction Poolのデータ、マイニングの難易度、時間、nonceなどのすべてのデータをもとに有効なハッシュ値になるまで計算します。
有効ハッシュ値とは、先頭に0が○以上付いているなどの条件を満たしたハッシュ値です。
有効なハッシュ値を見つけるために、nonceを1, 2, 3, …と増やしていきます。

裏側で自動的に、特定の時間よりも短かったら先頭についていないといけない0の数を増やして見つけにくくしたりします。

 

 

最後に

ブロックチェーンの仕組みはいかがだったでしょうか?

今回はサービスの開発ではなくて調査だけになってしまいましたが、今後の168プロジェクトで徐々に機能を開発していきサービスにできたらと思いました。

これからの168プロジェクトを楽しみにしていてください!