本記事では、近年多分野で注目されている「ブロックチェーン」をプログラミング言語Pythonで開発するにあたって必要な情報をお伝えしていきます。
1. Pythonで開発できるブロックチェーンとは
ブロックチェーン技術が使われている分野で有名なのは、ビットコインを始めとする仮想通貨です。
まずはブロックチェーンとは何かを理解していきましょう。
ブロックチェーンとは何か、一言で言うと「取引履歴が厳密に管理された台帳」です。インターネット上でやり取りするデータはやり取りの途中で改ざんされることなどもありますが、そのような改ざんが起きないようにセキュリティが担保されているのがブロックチェーンです。
取引データを「ブロック」と呼び、そのブロックとブロックが鎖(チェーン)のように連結していることから「ブロックチェーン」という名前になっています。
インターネットでは世界のどこかにサーバーがあり、パソコンやスマホなどのクライアントからサーバー上にあるデータへアクセスする「クライアント・サーバー型」が代表的な特徴です。
一方、ブロックチェーンでは、特定のサーバーマシンでデータの管理が行われることがありません。複数のコンピュータが連携することによって分散管理されています。
この仕組みをP2P(Peer to Peer)ネットワークと呼びます。
2. Pythonでブロックチェーンを開発するために必要な知識
Pythonを使ったプログラミングには詳しくても、ブロックチェーンに対する知識がゼロであれば、ブロックチェーンの開発は難しいでしょう。
事前に必要なブロックチェーンやPythonの周辺知識とは何かについてみていきます。
ブロックチェーンを理解するために次の3つの技術の理解が特に重要です。
ハッシュ
P2Pネットワーク
コンセンサスアルゴリズム
2.1. ハッシュ
ハッシュは日本語に訳すと「寄せ集め」の意味です。データを固定の長さのハッシュ値に不可逆変換して置き換えることを指します。
データを変換した後に元に戻すことのできる可逆変換に対して、元に戻すことができないという意味合いで「不可逆変換」と言います。
ブロックチェーンで使うハッシュとは、データを特定するのに必要な暗号技術のことを指します。ハッシュ関数によって、入力されたデータに対する固有のハッシュ値を求めることができます。
ハッシュ値は元のデータの長さにかかわらず、必ず同じ値を返します。つまり、元のデータが改ざんされたかどうかがすぐ検出できるわけです。
ブロックチェーンがセキュリティ的に堅牢なのは、ハッシュ関数によるものです。
2.2. P2Pネットワーク
ブロックチェーンのネットワークはP2P(Peer to Peer)方式が使われています。Peerは「仲間」という意味を持ちます。PeerとPeerがつながっているという意味です。
Peer(コンピュータ)がたくさんつながりあっているため、どれか1つのコンピュータが障害を起こしたとしても、通信には影響を及ぼすことがないというメリットがあります。
また、P2P形式では1台1台にかかる負荷も分散することができます。前述したクライアント・サーバー型に比べて1台のサーバーに処理が集中することがないためです。Peerをたくさん追加したとしても影響を及ぼす範囲が限定されます。
さらに、ブロックチェーンでP2Pネットワーク方式が使われるのは、非中央集権的であるためです。中央集権的であることのデメリットとしては、GoogleやFacebookをイメージするとわかりやすいでしょう。一部の大企業にデータを提供し、その企業に自由に使われてしまうわけです。
2.3. コンセンサスアルゴリズム
コンセンサスアルゴリズムとは、ブロックチェーンがブロックを追加する際の合意形成を行うアルゴリズムのことです。
前述したように、ブロックチェーンでは、取引台帳をネットワーク上の全員で共有するため、全体の合意形成が必要となります。
コンセンサスアルゴリズムには、ビットコインなどで用いられるProof of Work(PoW)が代表的ですが、それ以外にも複数の方法があります。
コンセンサスアルゴリズムがあるからこそ、ブロックチェーンを使ったやり取りを保障することができるわけです。
4. Pythonでブロックチェーンを開発する流れ
Pythonを使ってブロックチェーンを開発する流れは以下の手順が必要です。
4.1. ブロックチェーンの作成
ブロックとブロックのつながりをつくります。
4.2. ウォレットの作成
ウォレットは財布という意味です。物質の財布と似ている部分がありますが、ブロックチェーンにおけるウォレットとは、暗号通貨を取引するためにつかうウォレットアドレスのことを指します。
4.3. APIの統合
Pythonのフレームワークを使ってAPIを統合します。
4.4. ブロックチェーンネットワークの構築
ブロックチェーン同士のつながりをネットワークにします。
5. ブロックチェーン開発ならMiichisoft
2018年04月に設立したMiichisoftは、今では従業員数は170名にまで増えています。高い技術力が認められ2年連続ベトナムソフトウェア・ITサービス協会が主催するサオクエ賞を受賞しています。Miichisoftでは日本語や日本文化を深く理解しているブリッジエンジニアが在籍している為、コミュニケーション問題を気にせずに仕事をご依頼して頂けます。
Miichisoftは、これまでブロックチェン開発をはじめ、さまざまな分野のシステム開発に携ってきました。小規模から大規模のシステム開発に柔軟に対応できますので、ブロックチェーンの開発を検討し始めた際には、ぜひ、お気軽にご相談ください。
6. まとめ
以上、Pythonでのブロックチェーン開発についてご紹介しました。
この記事でご紹介したことを今後のブロックチェーンとの関わり方、お仕事・生活のお役に立てていただければ幸いです。