Web3js

從 Kovan 測試網獲取事件

  • May 16, 2018

我正在嘗試從 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-apis 中的 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

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/38250