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

第15回 BBc-1プログラミングガイド ~アセットの記述

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

前回までは,トランザクションの作成,署名検証,検索,合意についてのBBc-1プログラミングの概要をfile_proof.pyに沿って説明しました。しかし,アセット,つまりBBc-1に登録したい資産情報そのものについては,詳しく説明していなかったので,今回はアセットの取り扱いについて説明します。

今回もfile_proof.pyを参照します。file_proof.pyのプログラムは,下記URLから確認いただけますが,bbc1リポジトリをgit cloneしていただけば,examples/file_proof/ディレクトリの中に格納されています。

また,BBc-1のアプリケーションプログラミングに関するドキュメント群につきましては,第11回冒頭リード文にまとめていますので,ご参考ください。

アセットの記述

BBc-1では,文字列,バイナリデータおよびファイルをアセットと見なすことができます。file_proof.pyでは,⁠Owner is 〇〇⁠という文字列および対象となるファイルをアセットとしました(file_proof.pyの298行目など⁠⁠。つまり,人間が読める形式で所有者名を表記したものとファイル本体の組を「資産」見なしているのです。アセットの考え方,記述の仕方はアプリケーションで自由に決められます。例えば,json文字列でアセットを表記すれば,トークンのような量も簡単に表現できますし,センサーデータのようなバイナリ情報そのものをアセットにすることも可能です。

では,具体的なアセットの記述方法を見ていきましょう。アセットはBBcAssetクラスのオブジェクトとして記述します。BBcAssetオブジェクトは,次のような情報を含みます。

表1 アセットの記述方法

変数名説明
asset_idBBcAssetオブジェクトの識別子(アセットの識別子)
user_idこのアセットの所有者の識別子
nonceランダムな値(オブジェクト作成時に生成される)
asset_file_size外部ファイルのファイルサイズ(バイト)
asset_file_digest外部ファイルのSHA256ダイジェスト
asset_body_sizeこのオブジェクト(asset_body)に格納する情報のサイズ(バイト)
asset_bodyアセット情報本体(文字列,バイナリ)

まず,asset_idとは,このBBcAssetオブジェクト全体(asset_idを含まず)のSHA256ダイジェスト値で,アセット自体の識別子です。トランザクションの識別子を計算する際に同時に自動で計算されます。asset_idは検索キーとすることができ,トランザクションを取得できます。そして,asset_bodyがアセットの本体で,文字列やバイナリデータを格納できます。また,asset_bodyに格納するにはデータサイズが大きすぎる,またはトランザクションとは分離してデータファイルを持っておきたい場合には,ファイルのSHA256ダイジェスト値をasset_file_digestに保存します。これによって,外部ファイルをそのBBcAssetオブジェクトと紐付けることができます。外部ファイルとして分離してしまうと,どのファイルが紐付いているかがわからなくなってしまうかもしれないので,bbc_coreではasset_id(16進文字列表現)をそのファイル名として管理しています。ご興味のある方は,bbc_core.pyが起動しているディレクトリに作成される.bbc1/というワーキングディレクトリ内を探してみてください。なお,bbc_coreでファイルを管理させずに,アプリケーション自体が独自に外部ファイルを管理することも可能です。

アセットは資産情報であり,トランザクションはアセット本体にさまざまな付随情報(他のトランザクションやアセットとの関係や署名)を付加したものです。したがって,BBcAssetオブジェクトは,BBcTransactionオブジェクトの中に格納されるのですが,直接格納されるわけではありません。実際には,BBcRelationまたはBBcEventオブジェクトの中に格納されます。その理由は,第5回第6回でご紹介した,アカウント型(ステート型)またはUTXO型の両方の形式をサポートしているためです。アセットをアカウント型の形式で表現したい場合はBBcRelationオブジェクトを,UTXO型の形式で表現したい場合はBBcEventオブジェクトを用います。ただ,アセットの中身は両方ともBBcAssetオブジェクトとして記述します。

著者プロフィール

久保健(くぼたけし)

1977年生まれ,大阪出身。

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