Documentation
¶
Overview ¶
Request info from blockscan.
Example:
// To get the balance of address "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7"
scanner, err:=blockscan.New("avalanche","")
if err != nil { return err }
res, err := scanner.GetBalance("0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7")
if err != nil { return err }
fmt.Println(res)
Index ¶
- type AbiInput
- type AbiOutput
- type ContractAbi
- type Erc20Txs
- type Events
- type InternalTxs
- type NormalTxs
- type Scanner
- func (s *Scanner) GetBalance(address any) (*big.Int, error)
- func (s *Scanner) GetBalances(addresses []string) (map[string]*big.Int, error)
- func (s *Scanner) GetBlockNumberByTimestamp(timestamp string) (int64, error)
- func (s *Scanner) GetContractAbi(address any) (ContractAbi, error)
- func (s *Scanner) GetContractName(address any) (string, error)
- func (s *Scanner) GetErc20Transactions(address any, startBlock int, endBlock any) ([]Erc20Txs, error)
- func (s *Scanner) GetErc20TransactionsAll(address any) ([]Erc20Txs, error)
- func (s *Scanner) GetEvents(topic0 string, address any, startBlock int, endBlock any) ([]Events, error)
- func (s *Scanner) GetEventsAll(topic0 string, address string) ([]Events, error)
- func (s *Scanner) GetGasPrice() (*big.Int, error)
- func (s *Scanner) GetInternalTransactions(address any, startBlock int, endBlock any) ([]InternalTxs, error)
- func (s *Scanner) GetInternalTransactionsAll(address any) ([]InternalTxs, error)
- func (s *Scanner) GetNormalTransactions(address any, startBlock int, endBlock any) ([]NormalTxs, error)
- func (s *Scanner) GetNormalTransactionsAll(address any) ([]NormalTxs, error)
- func (s *Scanner) GetSourceCode(address any) (SourceCode, error)
- func (s *Scanner) IsVerifiedContract(address any) (bool, error)
- type SourceCode
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContractAbi ¶ added in v0.4.0
type Erc20Txs ¶ added in v0.4.1
type Erc20Txs struct {
BlockNumber string `json:"blockNumber"` // block number
TimeStamp string `json:"timeStamp"` // timestamp
Hash string `json:"hash"` // tx hash
Nonce string `json:"nonce"` // tx nonce
BlockHash string `json:"blockHash"` // block hash
From string `json:"from"` // who sent this token
ContractAddress string `json:"contractAddress"` // token contract
To string `json:"to"` // who received this token
Value string `json:"value"` // value in WEI
TokenName string `json:"tokenName"` // token name
TokenSymbol string `json:"tokenSymbol"` // token symbol
TokenDecimal string `json:"tokenDecimal"` // token decimals
TransactionIndex string `json:"transactionIndex"` // tx index
Gas string `json:"gas"` // gas
GasPrice string `json:"gasPrice"` // gas price
GasUsed string `json:"gasUsed"` // gas used
CumulativeGasUsed string `json:"cumulativeGasUsed"` //
Input string `json:"input"` //
Confirmations string `json:"confirmations"` //
}
type Events ¶ added in v0.4.1
type Events struct {
Address string `json:"address"` // address
Topics []string `json:"topics"` // topics of this event
Data string `json:"data"` // call data of the event
BlockNumber string `json:"blockNumber"` // block number
TimeStamp string `json:"timeStamp"` // timestamp of the event
GasPrice string `json:"gasPrice"` // gas price when the event emitted
GasUsed string `json:"gasUsed"` // gas used
LogIndex string `json:"logIndex"` // log index
TransactionHash string `json:"transactionHash"` // tx hash
TransactionIndex string `json:"transactionIndex"` // tx index
}
Everything in hex. Should convert before further use.
type InternalTxs ¶ added in v0.4.1
type InternalTxs struct {
BlockNumber string `json:"blockNumber"` // tx block number
TimeStamp string `json:"timeStamp"` // tx timestamp
Hash string `json:"hash"` // tx hash
From string `json:"from"` // who sent the chain token
To string `json:"to"` // who received the chain token
Value string `json:"value"` // value in WEI
ContractAddress string `json:"contractAddress"` // contract address
Input string `json:"input"` //
Type string `json:"type"` //
Gas string `json:"gas"` //
GasUsed string `json:"gasUsed"` //
TraceID string `json:"traceId"` //
IsError string `json:"isError"` //
ErrCode string `json:"errCode"` //
}
type NormalTxs ¶ added in v0.4.1
type NormalTxs struct {
BlockNumber string `json:"blockNumber"` // tx block number
TimeStamp string `json:"timeStamp"` // tx timestamp
Hash string `json:"hash"` // tx hash
Nonce string `json:"nonce"` // tx nonce
BlockHash string `json:"blockHash"` // tx block hash
TransactionIndex string `json:"transactionIndex"` // tx index
From string `json:"from"` // who call the contract
To string `json:"to"` // who received the call
Value string `json:"value"` // value in WEI
Gas string `json:"gas"` //
GasPrice string `json:"gasPrice"` //
IsError string `json:"isError"` //
TxreceiptStatus string `json:"txreceipt_status"` //
Input string `json:"input"` // call data
ContractAddress string `json:"contractAddress"` //
CumulativeGasUsed string `json:"cumulativeGasUsed"` //
GasUsed string `json:"gasUsed"` //
Confirmations string `json:"confirmations"` //
}
type Scanner ¶ added in v0.2.0
type Scanner struct {
UrlHead string // Url head based on network.
ApiKey string // User's api key, length should be 34.
}
func New ¶ added in v0.2.0
Create a new scanner.
"network" should be the full name of the chain, such as "ethereum", "avalanche", etc.
"apiKey" is the key for blockscan requests. When the key is "", default key will be used. Otherwise, the key length should be 34.
To get an apikey on ethereum, visit https://docs.etherscan.io/getting-started/viewing-api-usage-statistics
Example ¶
// case 1
fmt.Println("\ncase 1:")
scanner, err := New(chainId.AvalancheChainName, "")
if err != nil {
fmt.Println(err)
} else {
fmt.Println(*scanner)
}
// case 2, wrong key
fmt.Println("\ncase 2:")
scanner, err = New(chainId.AvalancheChainName, "asaasfas")
if err != nil {
fmt.Println(err)
} else {
fmt.Println(*scanner)
}
Output: case 1: You do not have a blockscan api key. Unecpected errors may occur when running. {https://api.snowtrace.io/api? K6SR1G96B2SQBRWPI4JP8WXM6BCG62EPQ7} case 2: api key length should be 34
func (*Scanner) GetBalance ¶ added in v0.2.0
Return the balance of a single address.
func (*Scanner) GetBalances ¶ added in v0.2.0
Return balances of up to 20 addresses. map[address] = balance.
func (*Scanner) GetBlockNumberByTimestamp ¶ added in v0.2.0
Return the block number.
func (*Scanner) GetContractAbi ¶ added in v0.2.0
func (s *Scanner) GetContractAbi(address any) (ContractAbi, error)
Return the contract's abi.
func (*Scanner) GetContractName ¶ added in v0.2.0
Return the contract's name.
func (*Scanner) GetErc20Transactions ¶ added in v0.2.0
func (s *Scanner) GetErc20Transactions(address any, startBlock int, endBlock any) ([]Erc20Txs, error)
Return up to 10000 erc20 txs of an address.
func (*Scanner) GetErc20TransactionsAll ¶ added in v0.2.0
Return all the erc20 txs of an address.
func (*Scanner) GetEvents ¶ added in v0.2.0
func (s *Scanner) GetEvents(topic0 string, address any, startBlock int, endBlock any) ([]Events, error)
Return up to 1000 events of an address.
Param:
topic0: The topic0 of the event. In most cases means the hash of the function name. address: The address. Can be string or common.Address startBlock: The block to start from. endBlock: The block to end. If greater than latest block number, or use "latest", will use the latest block number.
func (*Scanner) GetEventsAll ¶ added in v0.2.0
Return all the events of an address.
Param:
topic0: The topic0 of the event. In most cases means the hash of the function name. address: The address. Can be string or common.Address
func (*Scanner) GetGasPrice ¶ added in v0.2.0
Return gas price in WEI.
func (*Scanner) GetInternalTransactions ¶ added in v0.2.0
func (s *Scanner) GetInternalTransactions(address any, startBlock int, endBlock any) ([]InternalTxs, error)
Return up to 10000 internal txs of an address.
func (*Scanner) GetInternalTransactionsAll ¶ added in v0.2.0
func (s *Scanner) GetInternalTransactionsAll(address any) ([]InternalTxs, error)
Return all the internal txs of an address.
func (*Scanner) GetNormalTransactions ¶ added in v0.2.0
func (s *Scanner) GetNormalTransactions(address any, startBlock int, endBlock any) ([]NormalTxs, error)
Return up to 10000 txs of an address.
func (*Scanner) GetNormalTransactionsAll ¶ added in v0.2.0
Return all the txs of an address.
func (*Scanner) GetSourceCode ¶ added in v0.2.0
func (s *Scanner) GetSourceCode(address any) (SourceCode, error)
Return the source code of a contract.
type SourceCode ¶ added in v0.4.1
type SourceCode struct {
SourceCode string `json:"SourceCode"`
Abi string `json:"ABI"`
ContractName string `json:"ContractName"`
CompilerVersion string `json:"CompilerVersion"`
OptimizationUsed string `json:"OptimizationUsed"`
Runs string `json:"Runs"`
ConstructorArguments string `json:"ConstructorArguments"`
EVMVersion string `json:"EVMVersion"`
Library string `json:"Library"`
LicenseType string `json:"LicenseType"`
Proxy string `json:"Proxy"`
Implementation string `json:"Implementation"`
SwarmSource string `json:"SwarmSource"`
}