ブロックチェーンの課題と可能性~BBc-1(Beyond Blockchain One)から学ぶブロックチェーン開発

第10回 file_proof.pyでBBc-1を体験しよう

この記事を読むのに必要な時間:およそ 4 分

前回は,GitHubのbbc1リポジトリのドキュメントについて紹介しました。ドキュメントを読んでいただきつつも,BBc-1の雰囲気を理解するための近道はサンプルを使っていただくことです。

bbc1リポジトリには,file_proof.pyというサンプルアプリケーションが入っています。これは,ファイルをcoreノードに書き込み,改ざんがないかを検証し,ファイルの所有権を移転できるツールです。

なお,このツールにおけるファイルの所有権とは,BBc-1トランザクションの中に「XXXの所有物です」と記述があり,その人の署名がついているかどうかで表現されます。つまり所有権の移転とは,XXXさんの所有物だったファイルについて,⁠YYYの所有物です」というXXXさんとYYYさんの署名付きトランザクションをBBc-1に登録することを意味します。

以降では,file_proof.pyの準備と利用方法について説明します。

環境整備

bbc1リポジトリに入っているプログラムはPython3で実装されています。まずはPython3および関連ライブラリをビルドするための環境を作る必要があります。ここでは,Linux(Ubuntu)やmacOSを前提として説明します。Python3のセットアップについては,詳細には説明しませんが,virtualenvを使って仮想環境を構築する前提で説明します。

ターミナルを起動してから,以下のコマンドで必要なツールをインストールしてください。

Linux(Ubuntu)の場合

# sudo apt-get install -y git tzdata openssh-server python3 python3-dev libffi-dev net-tools autoconf automake libtool libssl-dev make

macOSの場合(Homebrewを使います)

# brew install libtool automake python3

以下,LinuxとmacOS共通です。シェルはBashを利用することを前提にしています。

# python3 -mvenv venv
# source venv/bin/activate
# pip install bbc1

最初の2行は,カレントディレクトリにvenvという仮想環境を作り,その中に入るためのコマンドです。Python3のモジュール群をディレクトリごとに管理でき,OS全体に影響を与えないようにするための仕組みです。最後のpip installでbbc1およびそれに必要なPython3モジュール群がインストールされます。bbc1本体のインストール時に,OpenSSLという暗号化ライブラリをビルドするためかなり時間がかかりますが,気長にお待ち下さい。

うまくインストールできれば,

# file_proof.py -h

とすれば,ツールを起動するためのオプションが書かれた以下のようなヘルプが表示されます。

コマンド実行時の画面出力

usage: file_proof.py [-h]
                     {store,get,remove,list,update,verify,keypair,wait,send,setup}
                     ...

positional arguments:
  {store,get,remove,list,update,verify,keypair,wait,send,setup}
                        commands
    store               Store a file
    get                 Get a file
    remove              Remove a file
    list                Get a file list
    update              Update a file
    verify              Verify a file
    keypair             Create a key pair
    wait                Wait for receiving a file
    send                Send a file
    setup               Setup domain and asset group

optional arguments:
  -h, --help            show this help message and exit

これで準備完了です。いよいよ動作させてみましょう。

file_proof.pyを使ってみる

BBc-1 Coreのインストールや起動

file_proofの基本的な使い方は,BBc-1 Coreチュートリアル:file_proofを用いてで説明されていますので,こちらを参考にBBc-1 Coreのインストールや起動などを設定しておいてください。

新しくターミナルを立ち上げたときなどは,venvというディレクトリがあるところで,

# source venv/bin/activate

とするのを忘れないようにしてください。このコマンドで,bbc1がインストールされた仮想環境に入ります。

このツールは,BBc-1のアプリケーションですので,まずはcoreノードが必要です。coreノードの機能を動かすためには,以下のコマンドを打ちます。

# bbc_core.py --no_nodekey

“–no_nodekey⁠というのは,誰でもcoreノードに接続できるようにするオプションです。このオプションを指定しなければnodekeyという暗号鍵を持っているアプリしかcoreノードに接続できません。

coreノードが起動すると,実行したディレクトリに⁠.bbc1/⁠という名前のディレクトリが作られます。デフォルト設定では,このディレクトリの中にトランザクションおよびアセット(つまりファイル本体)がすべて格納されます。このディレクトリは削除しないようにしてください。

次に別のターミナルを開いて(新規ウィンドウを開いて)⁠⁠source venv/bin/activate⁠というコマンドで仮想環境に入ってください。いよいよfile_proof.pyの出番です。file_proof.pyではファイルの所有権を示すために,BBc-1トランザクションを生成します。そのトランザクションには自分の所有物であること,また所有権を移転することの合意を表すために電子署名を付与します。そのため,自分専用の公開鍵ペアを作る必要があります。

# file_proof.py keypair

上記のコマンドを実行すると,カレントディレクトリに.private_keyと.public_keyという2つのファイルが生成されます(なお,本当は証明書などの形式にすべきところですが,簡易アプリなので単純なバイナリ形式のファイルになっています)⁠なお,Finderなどのフォルダ表示ツールでは,ドット⁠.⁠で始まるファイル名は表示されない設定になっているかもしれません。もし表示されない場合は,ターミナルで⁠ls -a⁠というコマンドを実行すれば,ファイルの存在を確認できます。

さらに,coreノードにこのアプリケーション用のドメインを作成する必要がありますので,以下のコマンドを実行します。なおこのコマンドは,最初の1回だけ実行すれば大丈夫です。

# file_proof.py setup

これで,準備完了です。

著者プロフィール

久保健(くぼたけし)

1977年生まれ,大阪出身。

株式会社ゼタント代表取締役/一般社団法人ビヨンドブロックチェーン理事。大手通信会社の研究所での研究,企画部門でのプロジェクトマネジメントなどを経て,独立。気がつけばBeyond Blockchain One(BBc-1)のメイン開発者になっていたが,あくまで趣味の位置づけ。本業では,技術者・研究者も報われる会社を目指す。

コメント

コメントの記入