クリプト

Contract Eventsを購読してトランザクションの結果を確認する

aoi's icon'
  • aoi
  • 2018/08/02 01:25
Content image

日々Ethereum(geth)、web3.jsと戯れています。

web3.jsではスマートコントラクトの実行結果イベントを購読して結果を確認できます。

subscribeの引数には以下のようなJSONが渡されます。

{address: '0x000000000000000000000',
blockNumber: 143979,
transactionHash: '0xceca5c97fa39de7473ba513da9afb46099b49a79d837a43122f8eb03329615fb',
transactionIndex: 2,
blockHash:'0x616b19f869fc5f35d9811c125cd9520e62372a6e2afa2bcb1576d9648f26b3d9',
logIndex: 2,
removed: true,
id: 'log_de0ba17a',
returnValues: Result { '0': 'ok', message: 'ok' },
event: 'Result',
signature: '0xf5250111a819ab87d27490e1837d465f4bc000cfd9316fc90fde27c791d8026d',
raw:{data: '0x00',
topics:['0xf5250111a819ab87d27490e1837d465f4bc000cfd9316fc90fde27c791d8026d' ] } }

JSONにはtransactionHashがあるので、
1. スマートコントラクト実行、この時発行されるtransactionHashを保存
2. イベント受信
3. イベントのtransactionHash、returnValuesを見て、そのトランザクションが成功か失敗かを判定
4. 成功なら成功回数をインクリメント(DBに保存)

みたいな使い方をしていたのですが、まれに同じtransactionHashで複数回イベントを受信しててDB内の成功回数とスマートコントラクト上のデータが一致しないという現象に遭遇しました。

実は成功/失敗の判定は上記3で書いたものだけでは足りなくて、
イベントのJSONに含まれるremovedが重要でした。
(リファレンス↓)

removed: trueは孤立したブロックのためチェーン上から取り除かれたことを示すらしく、ここも判定条件に入れる必要がありました。

ということを小一時間調べてしまいましたのでメモとして残します。
Ethereum開発はノウハウ重要ですね。それにドキュメントちゃんと読まないと...。

公開日:2018/08/02
獲得ALIS:26.83
aoi's icon'
  • aoi
  • @aoi
プログラマー、CGアーティスト。今はEthereumを使用したシステム開発をしています。Twitter: https://twitter.com/core_aoi

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

Eth2.0のステークによるDeFiへの影響を考える。

Like token Tip token
43.10 ALIS
Eye catch
クリプト

クリプトスペルズで入手したMCHCを引き出す方法

Like token Tip token
196.20 ALIS
Eye catch
クリプト

コインチェックに上場が決まったEnjin Coin(エンジンコイン)コインを解説

Like token Tip token
21.49 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
クリプト

Polygon(Matic)で、よく使うサイト(DeFi,Dapps)をまとめてみた

Like token Tip token
235.30 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
クリプト

バイナンスの信用取引(マージン取引)を徹底解説~アカウントの開設方法から証拠金計算例まで~

Like token Tip token
3.50 ALIS
Eye catch
クリプト

【DeFi】複利でトークンを運用してくれるサイト

Like token Tip token
54.01 ALIS
Eye catch
クリプト

CoinList(コインリスト)の登録方法

Like token Tip token
15.55 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
クリプト

【初心者向け】JPYCを購入して使ってみました!

Like token Tip token
30.03 ALIS
Eye catch
クリプト

【第8回】あの仮想通貨はいま「テレグラム-TON/Gram」

Like token Tip token
69.90 ALIS