• Column
  • ブロックチェーンの仕組みを知り適用業務を考える

ブロックチェーンが管理している情報の“中身”【第5回】

唐澤 光彦(NTTテクノクロス エンタープライズ事業部マネージャー)
2018年12月6日

生成されたブロックを時系列に把握

(C)チェーンフロー図

 チェーンフロー図は、生成されたブロックを時系列に表示したものだ(図3)。ブロックチェーンネットワークについて、多くの情報を取得できる。新しく追加されたブロックは、別の色で表示する。

図3:チェーンフロー図の詳細

(1)ブロック番号:トランザクションのまとまり(ブロック)を識別するために、時系列順に付与される連続的な番号を指す。

(2)ブロックハッシュ:ブロックが持つハッシュ情報を指す。図3では、先頭8桁のみが表示されている。「0x」は、その情報が16進数表記であることを示す判別文字だ。

 ここでの「ハッシュ情報」とは、ブロックの情報をハッシュ関数と呼ばれる特殊な計算方法で得られるハッシュ値(固定長の数値情報)に変換したものだ。ハッシュ値から元のデータを導き出したり、同じハッシュ値を持つ別のデータを生成したりすることは極めて困難である。

(3)ブロック生成日時:ブロックが生成された日時を示す。ちなみにContractGate/Monitorでは、対象ブロックの生成時刻(hh:mm:ss形式)を表示する。

ブロックチェーンを利用するための手数料も算出

(4)ガス(Gas)使用率:対象ブロックに含まれるトランザクションの「ガス」総使用量が、ブロックのガス上限量に占める割合(%)を指す。

 ここでのガスとは、自動車におけるガソリンのようなもので、Ethereumを機能させるのに必要な手数料を指す。具体的には、トランザクションやスマートコントラクト(Ethereum上で動作するブロックチェーン専用プログラム)を実行するための料金や、ブロックチェーン上でデータを保管するためのストレージの使用料である。

 手数料は、ガスの量とガスの価格から算出される

 手数料 [ETH] = ガス量 [Gas] × ガス価格 [Gwei]
 ※ [ ] は単位

 ガス量は、スマートコントラクトの処理実行量(プログラムの大きさ)などによって変わってくる。ガス不足になると、ガス欠で車が止まるように、スマートコントラクトも停止(中断)する。

 ガス量が無限に大きくなることを防止するために、(a)ブロックガスリミットと(b)トランザクションガスリミットの2種類が設けられている。

(a)ブロックガスリミット:ブロックに入るトランザクションの量を制限するためのガス上限値。
(b)トランザクションガスリミット:トランザクション実行時のガス支払い上限値。たとえばプログラムの暴走や、悪意のある攻撃による送金手数料の無限徴収などへの対策として、この値が使われる。

 Ethereumにおける通貨は「イーサ(通貨単位はEtherまたはETH)」である。Ethereumというブロックチェーンの基盤(プラットフォーム)を使用するための手数料の支払いに利用する。

 ビットコインの単位[BTC]に対し最小単位である[satoshi]があるように、Ethereumにも、最小単位「wei(ウェイ)」が存在する。表1にEthereumの通貨単位を示す。

表1:Ethereumの通貨単位
単位名ETH換算値
wei(最小)0.000 000 000 000 000 001ETH
Kwei0.000 000 000 000 001ETH
Mwei0.000 000 000 001ETH
Gwei0.000 000 001ETH
Szabo0.000 001ETH
Finney0.001ETH
Ether(ETH)1ETH
Kether1,000ETH
mether1,000,000ETH
Gether1,000,000,000ETH
tether(最大)1,000,000,000,000ETH

(5)トランザクション数:ブロックに取り込まれたトランザクション(取引情報)数を指す。Ethereumでは一定時間ごとにブロックが生成されるため、図3のように、トランザクション数が0になることがあり得る。Hyperledger Fabricでは、取引が実行された場合のみブロックが生成される。