Go-Ethereum

如何查看一段時間內智能合約的乙太坊餘額和唯一交易數?

  • October 22, 2018

基本上我希望能夠在一段時間內跟踪智能合約餘額和唯一交易,例如過去 24 小時、最後一小時等。

這樣做的最佳方法是什麼?我應該如何儲存獲得的數據以創建我的 API、SQL/NoSQL 數據庫?

先感謝您!

您可以使用通過 Web3 庫(如 Web3.js)公開的 Web3 JSON RPC 在任何區塊獲取智能合約的乙太幣餘額:

獲得平衡

web3.eth.getBalance(address [, defaultBlock] [, callback])

可以看到,這個函式呼叫支持一個“block”輸入,可以用來獲取指定地址在某個block的Ether餘額。

區塊不是以完美的間隔創建的,但您應該能夠通過假設平均區塊時間約為 15 秒來近似您需要的區塊。

timestamp然後,您可以通過從塊 ( web3.eth.getBlock()) 中獲取值並在需要時進行調整來確認您擁有正確的塊。

這種邏輯集成在這個 JavaScript 應用程序中:ETH Balance Graph ( Code )


獲取合約的交易計數更加複雜,因為合約的傳入交易沒有被網路索引。

我的建議是跟踪發出Event的交易。

您可以使用以下命令獲取契約的所有過去事件:

獲取過去事件

myContract.getPastEvents(event[, options][, callback])

由此,您應該對智能合約的活動有一個很好的了解。特別是如果合約是 ERC20 代幣,它必須在代幣轉移時發出一個Transfer事件,並且在創建代幣時應該發出相同的事件。

但是,要真正獲得所有內部和外部交易,您需要遍歷合約創建以來的每個區塊,並查找這些交易(據我所知)。這就是 Etherscan 所做的,而且不是一項簡單的任務。

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