ITmedia NEWS >

ブロックチェーンシステムをお手軽構築してみた Amazon Managed Blockchain体験記(4/5 ページ)

» 2020年06月18日 08時15分 公開
[Masataka KodukaITmedia]

中央集権ではない

 「じゃあ、ブロックチェーンの認証局とかってどこにあるの?」という話だが、それはAmazon Managed BlockchainでEC2インスタンスには登場しない、同一リージョンのどこかのバーチャルサーバに作られており、隠蔽されていて、そこにアクセスすることは不可能である。今回のサンプルブロックチェーン構築体験では、クライアントサーバ構成などに慣れきっている自分の常識と多少闘う必要があった。とにかく、中央集権でないのだ。それを実際作ってみて、恥ずかしながら、初めて実感した。

 続いて、クライアントノードの環境設定を行う。クライアントノードがどのブロックチェーンネットワークを利用するか、どのピアノードと通信するか、どのTLS証明書を使うか、ピアサービスのエンドポイントなどを設定する。加えて、ブロックチェーンの認証局(CA)にて、メンバー(今回のお試しは一人でやる作業なので当人しかいない)にブロックチェーンネットワーク管理者権限を付与する。管理者権限を持つと、チャネル(ざっくりチェーン内通信のこと)作成、チェーンコード(ざっくりプログラムのこと)をインスタンス化することができる。

photo クライアントノード環境設定中のCloud9ターミナル画面

 そして、ブロックチェーンのチャネル設定(configtx channel configuration)を実際のメンバー名で更新する。チャネル設定が更新されると、その更新は「ブロック0(genesis block)」となる。文字通り、送金などトランザクションデータ一つ一つの“ブロック”が、数珠つなぎになったチェーンがブロックチェーンであるならば、チャネル設定更新は「創世記(genesis)」にあたるのだ、いい命名だな、と小さな感動を覚える。

 チャネルはDockerを用いて実装され、mychannel.blockというファイル作成される。チャネルが作成できたらピアノード(今回はクライアントノード一つなのでそれしか参加できないのだが)をチャネルに参加させ、ピアノードにチェーンコードをインストール、チャネル上でチェーンコードをインスタンス化すると、クエリ実行、トランザクション実行ができるようになる。

photo トランザクションをinvoke、queryを実行している画面
photo ピアノードをブロックチェーンに参加させたのち、Amazon Managed Blockchainの当該ブロックチェーンをクリックすると、ブロックチェーンのメンバーと、メンバーのピアノードが利用可能になっていることが確認できる

 さて、ここからがエミール・バイゼルさんのチュートリアルの素晴らしいところで、このブロックチェーンを利用したユーザーインタフェースをわれわれが体験することになる。サンプルアプリケーションは「非営利団体(NGO)チェーンコード」というもので、寄付のブロックチェーンアプリケーションである。

 手順通りに、NGOチェーンコード(Node.jsで書かれている)をピアノードにインストール、チャネル上でチェーンコードをインスタンス化、RESTful APIでFabric SDK経由でブロックチェーンのチェーンコードと対話してチェーンコード機能をREST APIとして公開できるようにすると、ブラウザから作成したNGOブロックチェーンにアクセスできる。

photo ブラウザからアクセスしたサンプル・ブロックチェーン「NGO」

 架空の非営利団体のリスト、それらの団体に寄付を行うことができる。画面の上部にあるBlockアイコンがブロックチェーンの全トランザクションを示しており、これらのブロックをクリックすると、誰がどの団体に寄付したか、寄付を受けた団体が資金をどのように使っているかなど、全てのトランザクションを可視化できる。

photo ブロックをクリックすると資金利用状況が可視化された

 以上が、筆者の今回の「Amazon Managed Blockchainを用いたブロックチェーンシステム構築お手軽体験」だ。ブロックチェーンは主に金融界や登記など不動産業界で注目される技術と思われがちであるが、改竄(ざん)防止目的で音楽における著作権保護にも使われている事例がある。しかし、具体的にどのようにブロックチェーンが活用されるのか、真相はあまり見えていない現状ではないだろうか。これからもこのテーマを追いかけていきたい。

Copyright © ITmedia, Inc. All Rights Reserved.