Go-Ethereum

監聽特定地址上的乙太坊交易

  • January 27, 2020

是否可以監聽特定乙太坊地址上的交易?例如,如果有人向該地址發送了一定數量的 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 秒後檢查下一個生成的塊(根據您的要求)。

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