Web3js
從 Kovan 測試網獲取事件
我正在嘗試從 Node.js 伺服器連接到 Kovan 測試網。我試圖連接以檢索過去的事件。
到目前為止嘗試
的步驟:- 連接是通過 Infura 完成的。在多個版本上嘗試了這些步驟版本 0.20.3(Github 中的版本):
var MyContract = web3.eth.contract(JSON); contractAddress=<contractAddress>; var contractInstance = MyContract.at(contractAddress); var events = contractInstance.allEvents({fromBlock: 5000000, toBlock: 'latest'}); events.get(function(error, logs){ console.log(logs); });
儘管有事件沒有產生輸出。如果 Infura 是問題,還有其他方法可以從 Kovan 測試網獲取事件嗎?
我嘗試 web3-1.0.0.beta19 通過 websockets 連接到 Infura,但意識到 Kovan 沒有 websockets。
我通過使用零客戶端提供程序找到了解決方法。它以穩定的方式工作於 Infura 提供的主網和 Kovan RPC 連接。
在開始 parity
--chain=kovan
以連接到 kovan 測試網時,使用--ws-api
s 中的 pubsub、parity、parity_pubsub 的附加選項並添加--jsonrpcapis=all
選項。如果您使用上述選項開始平價,您將能夠
contractInstance.events.MyEvents()
在您的 nodejs javascript 程式碼中註冊契約事件。我的 nodejs 應用程序在本地乙太坊節點上執行時執行良好,但在遷移到 kovan 測試網時無法擷取合約事件。我能夠使用上述選項解決問題。
複製下面對我有用的完整命令。
parity --chain=kovan --ws-apis="eth,net,web3,personal,web3,pubsub,parity,parity_pubsub" --rpcapi="eth,net,web3,personal" --jsonrpc-apis=all
希望能幫助到你。