post Image
Ethereumでコントラクトの監視 – Event –

(注)変更点: 2018.10.18

  • 記事内容が古かったため、イベント発火の記法について現在のバージョン(solidity v0.4.16)に対応しました。
    イベント発火には emit EventName(...)のようにemitを明示的につけることが推奨されているようです。

  • 本文中で使用しているCosmo Editorは、現在では使われてないようですので、 Remixなどを使うことをオススメします。

Solidityによるスマートコントラクトの監視

今回はSolidityのコードを書いてメソッドを実行、そして実行の監視をしてみます。

試すコントラクトはこちら↓

SimpleStorage.sol
contract SimpleStorage {
    bytes32 storedData;
    //イベント設置
    event Set(address from,bytes32 stored);

    function set(bytes32 x) {
        storedData = x;

        //イベント発火
        Set(msg.sender,x);
    }
    function get() constant returns (bytes32 retVal) {
        return storedData;
    }
}    

イベント定義部分

 event Set(address from,bytes32 stored);

setメソッドに付随するイベントを定義

引数は任意の変数。ここに書いた変数の値がイベント発火時に渡される

イベント発火部分

    function set(bytes32 x) {
        storedData = x;

        //イベント発火
        emit Set(msg.sender,x);
    }

ここではSet()に値を渡す。第1引数msg.senderはメソッド呼び出し元のアドレス,xは与えた値

イベント監視

event-watch.js
var Web3 = require('web3');
var web3 = new Web3();

web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545");

//simplestorageのABI
var ABI = require('./simplestorage.json');

//デプロイしたアドレス
var address = '0xf9f0ce2e38fbe115d2500606ebd7750f8876c8cc
';

var simpleStorage = web3.eth.contract(ABI).at(address);
var event = simpleStorage.Set();
//イベント監視
event.watch(function (error, result) {
 console.log('watching "Set" event!');
  if (!error)
    console.log(result);
});

cosmo editorを使用したデプロイ

160103-0001.png

//ローカルのコマンドラインでイベント監視スクリプト実行
node event-watch.js

cosmoからsetメソッドで値をセットする。

“hello eth!”をsetする。(transactionの送信)

160103-0003.png

数十秒待つとターミナルでSetイベントが表示された!!

160103-0004.png

argsの中身が送信内容
fromが送信元アドレス ,storedが変数に保存した値。

args: 
   { from: '0x2a595f16eee4cb0c17d9a2d939b3c10f6c677243',
     stored: '0x68656c6c6f206574682100000000000000000000000000000000000000000000' }

このままだと16進数なので、ASCIIコードに変換してみると・・・・
160103-0006.png

“hello eth!”と表示されました。

トランザクションはこちらでも確認できます
https://www.etherchain.org/account/0xf9f0ce2e38fbe115d2500606ebd7750f8876c8cc#txreceived

以上がコントラクトのイベント監視の流れです。他にもAPIにはfilterなどのメソッドで同様の機能があるようです。


『 Bitcoin 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。