Etherscan
Etherscan is a block explorer and it implements some read compatible endpoint with the JsonRPC spec. It requires an apiKey to use the service and not be rate limited.
Create an instance of Etherscan from a network id:
package main
import ( "github.com/umbracle/ethgo/etherscan" "github.com/umbracle/ethgo")
func main() { ethscan, err := etherscan.NewEtherscanFromNetwork(ethgo.Mainnet, "apiKey")}
The package will resolve the name of the network to the specific endpoint in Etherscan, at this point it only works for Mainnet
, Ropsten
, Rinkeby
and Goerli
.
For a custom url use:
ethscan, err := etherscan.NewEtherscan("https://api.polygonscan.com", "apiKey")
BlockNumber
BlockNumber returns the current block number.
num, err := ethscan.BlockNumber()
Output
num
(uint64
): Last block number.
GetBlockByNumber
GetBlockByNumber returns a specific block by its number.
block, err := ethscan.GetBlockByNumber(ethgo.BlockNumber(100), true)
Input:
block number
(BlockTag): Block number selectionfull
(bool
): Whether to return the full block with transactions.
Output:
block
: (): Block object
GetContractCode
GetContractCode returns the contract of a given address (if any).
code, err := ethscan.GetContractCode(address)
Input:
address
(Address): Address of the contract.
Output:
code
([]byte
): Code of the contract.
GetLogs
GetLogs returns the logs given a log filter.
filter := ðgo.LogFilter{ Address: []ethgo.Address{ ethgo.HexToAddress("..."), },}logs, err := ethscan.GetLogs(filter)
Input:
filter
(LogFilter): Filter for the logs to return.
Output:
logs
([]Log): List of logs that match the filter.