履歴ハッシュ値記録

EVMのOpcodeの中でもストレージ格納の際に実行される"SSTORE"はコストが高く3^3、目的を達成するにはeventを使用すれば充分といえます。

イベントのパラメーター(topic)は以下の通りです。

eventSig :イベント名。Ethereumの関数シグネチャと同様に、記録したいイベント名をKeccak256 hashして、その先頭4byteを指定する。

createdAt :記録日時

ipfsHash :IPFSハッシュ

無関係なログや不正なログを記録できないようにするため、OpenZeppelinのライブラリ(WhitelistAdminRole.sol)を用いてスマートコントラクトのオーナーのみが実行できるようにしています。

以下にソースコードの抜粋を示します。

 // eventSig is the first 4 bytes of the Keccak256 hash of event name
 // auction_bidding: 0x636fe49e
 // auction_receipt: 0x4997644b
 // bancor_trading: 0x285a30e1
 event Recorded (bytes4 indexed eventSig, uint256 indexed createdAt, bytes32 ipfsHash);

 /**
  * @dev Write ipfsHash as log
  */
 function writeHash(bytes4 _eventSig, bytes32 _ipfsHash) public onlyWhitelistAdmin {
   emit Recorded(_eventSig, uint256(now), _ipfsHash);
 }

CTはFiNANCiE Lightningを通して、オフチェーン+取引履歴の公開+ハッシュ値のオンチェーン化という組み合わせで提供しています。CTは前項の理由から現時点ではオンチェーンのウォレットに引き出すことはできません。すべてのCTの流通および利用はFiNANCiE(クラウドファンディング2.0)内に閉じて行われています。

Last updated