クリプト

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
クリプト

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

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

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

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

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

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

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

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

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

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

2021年1月以降バイナンスに上場した銘柄を140文字以内でざっくりレビュー(Twitter向け情報まとめ)

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

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

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

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

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

【初心者向け】$MCHCの基本情報と獲得方法

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

Uniswap(ユニスワップ)で$ALISのイールドファーミング(流動性提供)してみた

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

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

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

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS