ブロックチェーンを実装してみた

ブロックチェーンについて学んで見ようと思い、以下のページを参考に実装してみた。今回はかなり自分用のメモでしか無いので、すごくざっくりとしてます。

qiita.com

やった内容

ブロックチェーンアルゴリズムについて理解を深めようと思ったので、上記のURLに書いてあるコードを模写して実際に動かしてみた。

使用した環境

  • PyCharm
  • Python 3.6.3
  • Postman

ゴールイメージ

以下の様にサーバを起動し、PostmanでHTTPリクエストを送ることでマイニングなどを実行できるようにする

$ python blockchain.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

ロジックについて

自分が見返した時に何をしていたのかわからなくならないように簡単にメモを残す。
主な処理は以下の 個に分かれている

  • トランザクションの追加 new_transaction():
  • マイニング(採掘) mine():
  • 自分が持っている chain の表示
  • 自分が持っているノードリストに新規ノードを追加する
  • コンセンサス(一番長いノードを正しい chain として、必要があれば置き換える処理) consensus():

トランザクションの追加に関してはその名の通りブロックにトランザクションを追加する処理になっている。
マイニングは新しいブロックを作成している。特に肝となるのは、コンセンサスの処理。これはネットワークのノードリストを取得して、そのノードリストの持っている chain を評価する(長さと正しさ)。もし自分のよりもながければ置き換えることになる。

感想

自分で実装するとすごくわかりやすい。今後はこのブロックチェーンの技術を用いて何ができるか考えていかないと。