Pythonで作るブロックチェーン所感 その1

先日Qiitaでこんな記事を見かけました。
ブロックチェーンを作ることで学ぶ 〜ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ〜 – Qiita

ブロックチェーンの仕組み自体に全く詳しくないので、勉強がてらやってみました。

 

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

bitFlyer ビットコインを始めるなら安心・安全な取引所で

上のサイト内にも書かれてありますが、一応本家とそのGithubのリンクも張っておきます。
Learn Blockchains by Building One – Hacker Noon
dvf/blockchain: A simple Blockchain in Python

 

はじめに

最初にPython3.6以上が必要らしいのでとりあえずインストールしました。
僕はPythonのバージョン管理にPyenvを使っているので今回もコレを利用します。
$ pyenv install --listでインストールできるバージョンを確認し、
今回は現在の最新バージョンの3.6.1をインストールしました。
$ pyenv install 3.6.1

 

pyenvでバージョンを確認し、
$ pyenv versions

 

ローカルで3.6.1を反映させます。
$ pyenv local 3.6.1

 

次に、pythonのウェブアプリケーションフレームワークのFlaskとrequestsをインストールします。
pip install Flask==0.12.2 requests==2.18.4

 

新規トランザクションを作成する

new_transactionという新しいトランザクションを作成するためのメソッドを作成します。
初めて見たのですけど、このコメントの書き方わかりやすくて良いですね。
引数や返り値が型とともに説明されているのでパッと見で理解できます。

 

Block Height

「amount」というのはいわゆる「block height」のことです。
つまり、このブロックチェーンが生まれてから現在まででいくつのブロックが生成されたかを示していることになります。

 

Transaction

「トランザクション」とはBitcoinの取引のことを指します。
もう少し詳しく書くと、Bitcoinの送受信の意思をネットワークに伝え、それをマイナーによってブロックチェーンに追加される一連の操作のことです。

この時、送り主は送付する手数料の金額を指定できます。
この手数料がマイナーの報酬の一部になるのですが、
この手数料の額をケチるとトランザクションの優先度が下がってしまい、
取引が完了するまでに時間がかかることがあります。

取引所を利用している場合は一律で手数料が決まっているので、特に何も考えずに取引することになります。
なので場合によっては24時間以上経ってもBitcoinが送れなかったりするわけですね・・。

詳しくは以下の記事が参考になると思います。
【参考】ビットコインのトランザクションとは?~トランザクションの仕組みや構造を徹底解説~ | COIN NEWS

 

コンストラクタを定義する

 

Genesis Block

コンストラクタ内でジェネシスブロックを作成していますね。
ジェネシスブロックというのはブロックチェーンの最初の最初のブロックのことです。

Bitcoinで言うとサトシ・ナカモト氏が2009年1月3日に2つのパソコンで生み出した記念すべき最初の50BTCのことです。

現在たくさん流通しているBitcoinの中で唯一マイニング以外の方法で作られたコインということになります。

余談ですがBitcoinのジェネシスブロックはサトシ・ナカモト氏からサトシ・ナカモト氏へと
自分自身に送金されたのですが、取引記録の中に以下のような付随情報が書かれています。

「The Times 03/Jan/2009 Chancellor on brink of second bailout for bank」
(タイム紙 2009年1月3日 蔵相は銀行への二度目の救済を迫られている)

これはその日の英紙タイムズ紙の見出しです。

文脈を説明すると、2008年のリーマンショックの後、それを引き起こした原因であるはずの銀行に対して、罰金や訴訟ではなく、経済の安定のため資金注入をして救済をしたことへの大きな反発と捉えられます。家を失ったり、職を失ったりした人たちが何百万人も発生してしまったわけですが、その原因を作った張本人たちに潰れられると困ると、特別ボーナスがバンバン注入されるような皮肉な状況が起きていたわけです。

【引用元】http://coinandpeace.hatenablog.com/entry/bitcoiner_test_solutions

 

記録に残り続けるこのジェネシスブロックにわざわざこの記事のタイトルを書いたのは、
現在の政府の金融政策の在り方にサトシ・ナカモト氏が何らかの感情や関心を持っていたことが伺えますね。

また、サトシ・ナカモト氏と信頼関係にあったギャビン・アンドレセン氏の発言
「彼は今の社会システムを好ましく思っておらず、もっと公平な仕組みを求めていた」
からもわかるように、政治的な動機がブロックチェーンの発明と実現のモチベーションの根源になったのではないかと言われています。

 

Binance

コメントを残す