Go-Ethereum
如果有人將乙太幣發送到地址,web3 檢測/監聽事件
我需要不斷執行一些程式碼來檢測是否有人在過去一分鐘內向很多地址發送了一些乙太幣/令牌,有沒有比https://ethereum.stackexchange.com/a/3478/39163更好的方法將所有交易都發送到一個地址,然後以某種方式將目前時間與交易時間進行比較以確定它是否剛剛發生?
我們可以使用訂閱來獲取推送請求以監控地址,而不是每分鐘提取數據。您可以通過以下方式使用 Web3.js 1.0 執行此操作
web3.eth.subscribe
:subscribe(“logs”)var web3 = new Web3(Web3.givenProvider || 'wss://mainnet.infura.io/ws'); var subscription1 = web3.eth.subscribe('logs', { address: '0x06012c8cf97BEaD5deAe237070F9587f8E7A266d' }, function (error, result) { }) .on("data", function (log) { //console.log(log); web3.eth.getTransaction(log.transactionHash) .then(function (transaction) { //console.log(transaction) if (transaction.value > 0) { console.log("Ether sent from " + transaction.from + " to " + transaction.to) } }) })
這個訂閱應該監聽區塊鏈上的任何交易到地址的值 > 0。這些應該幾乎是實時的。
乙太幣從 0xcdF5EAD1c329584d835C2Bf6f828C5cAb9B611E6 發送到 0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C
乙太幣從 0x9c539429C2caD0c58aeCe00C13B5B7A5977217fb 發送到 0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C
乙太幣從 0xcdF5EAD1c329584d835C2Bf6f828C5cAb9B611E6 發送到 0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C
…