監聽特定地址上的乙太坊交易
是否可以監聽特定乙太坊地址上的交易?例如,如果有人向該地址發送了一定數量的 ETH,則會觸發回調函式。
我讀到這個:如何探索給定帳戶的所有交易?但這似乎是關於過去的交易而不是現場收聽。
您可以使用Web3.js 1.0 和 WebSockets來完成此操作。
var subscription = web3.eth.subscribe('logs', { address: '0x123456..', }, function(error, result){ if (!error) console.log(result); }) .on("data", function(log){ console.log(log); }) .on("changed", function(log){ });
如果您使用上面的程式碼,只需更新
address
屬性。此處的工作範例: https ://jsfiddle.net/h7nskoyu/11/
這會查看 CryptoKitties 合約,當查看控制台時,您會看到:
擴展的交易映射到: https ://etherscan.io/tx/0x3ccce0b8072649ca087a91f00bdbb475b36d03a9a8dd2cc54b9a03ac5826c255
web3.eth.subscribe
在此處了解更多資訊。
它被稱為持續監控概念。您也可以使用 RPC 呼叫來執行此操作。使用 Etherscan API(有很多平台提供 ETH API)
第 1 步:使用https://api.etherscan.io/api?module=proxy&action=eth_blockNumber&apikey=YourApiKeyToken獲取最新區塊高度
第 2 步:使用https://api.etherscan.io/api?module=proxy&action=eth_getBlockByNumber&tag=0x5A0F60&boolean=true&apikey=YourApiKeyToken獲取該區塊的所有詳細資訊(您將獲得該區塊下的所有交易)
第 3 步:現在將所有交易數據從 json 儲存到您的列表中,並為您要連續監控的地址執行 for 循環。
因此,現在如果您的地址將在該塊的交易列表中,那麼您可以根據您的要求使用詳細資訊,否則您可以在 10 到 15 秒後檢查下一個生成的塊(根據您的要求)。