README

Ethrpc

Build Status Coverage Status Go Report Card GoDoc Donate with Ethereum

Golang client for ethereum JSON RPC API.

  • web3_clientVersion
  • web3_sha3
  • net_version
  • net_peerCount
  • net_listening
  • eth_protocolVersion
  • eth_syncing
  • eth_coinbase
  • eth_mining
  • eth_hashrate
  • eth_gasPrice
  • eth_accounts
  • eth_blockNumber
  • eth_getBalance
  • eth_getStorageAt
  • eth_getTransactionCount
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_getCode
  • eth_sign
  • eth_sendTransaction
  • eth_sendRawTransaction
  • eth_call
  • eth_estimateGas
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getTransactionByHash
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionReceipt
  • eth_getUncleByBlockHashAndIndex
  • eth_getUncleByBlockNumberAndIndex
  • eth_getCompilers
  • eth_compileLLL
  • eth_compileSolidity
  • eth_compileSerpent
  • eth_newFilter
  • eth_newBlockFilter
  • eth_newPendingTransactionFilter
  • eth_uninstallFilter
  • eth_getFilterChanges
  • eth_getFilterLogs
  • eth_getLogs
  • eth_getWork
  • eth_submitWork
  • eth_submitHashrate
  • shh_post
  • shh_version
  • shh_newIdentity
  • shh_hasIdentity
  • shh_newGroup
  • shh_addToGroup
  • shh_newFilter
  • shh_uninstallFilter
  • shh_getFilterChanges
  • shh_getMessages
Usage:
package main

import (
    "fmt"
    "log"

    "github.com/onrik/ethrpc"
)

func main() {
    client := ethrpc.New("http://127.0.0.1:8545")

    version, err := client.Web3ClientVersion()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(version)

    // Send 1 eth
    txid, err := client.EthSendTransaction(ethrpc.T{
        From:  "0x6247cf0412c6462da2a51d05139e2a3c6c630f0a",
        To:    "0xcfa202c4268749fbb5136f2b68f7402984ed444b",
        Value: ethrpc.Eth1(),
    })
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(txid)
}

Donate with Ethereum

Expand ▾ Collapse ▴

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BigToHex

func BigToHex(bigInt big.Int) string

    BigToHex covert big.Int to hexadecimal representation

    func Eth1

    func Eth1() *big.Int

      Eth1 returns 1 ethereum value (10^18 wei)

      func IntToHex

      func IntToHex(i int) string

        IntToHex convert int to hexadecimal representation

        func ParseBigInt

        func ParseBigInt(value string) (big.Int, error)

          ParseBigInt parse hex string value to big.Int

          func ParseInt

          func ParseInt(value string) (int, error)

            ParseInt parse hex string value to int

            func WithDebug

            func WithDebug(enabled bool) func(rpc *EthRPC)

              WithDebug set debug flag

              func WithHttpClient

              func WithHttpClient(client httpClient) func(rpc *EthRPC)

                WithHttpClient set custom http client

                func WithLogger

                func WithLogger(l logger) func(rpc *EthRPC)

                  WithLogger set custom logger

                  Types

                  type Block

                  type Block struct {
                  	Number           int
                  	Hash             string
                  	ParentHash       string
                  	Nonce            string
                  	Sha3Uncles       string
                  	LogsBloom        string
                  	TransactionsRoot string
                  	StateRoot        string
                  	Miner            string
                  	Difficulty       big.Int
                  	TotalDifficulty  big.Int
                  	ExtraData        string
                  	Size             int
                  	GasLimit         int
                  	GasUsed          int
                  	Timestamp        int
                  	Uncles           []string
                  	Transactions     []Transaction
                  }

                    Block - block object

                    type EthError

                    type EthError struct {
                    	Code    int    `json:"code"`
                    	Message string `json:"message"`
                    }

                      EthError - ethereum error

                      func (EthError) Error

                      func (err EthError) Error() string

                      type EthRPC

                      type EthRPC struct {
                      	Debug bool
                      	// contains filtered or unexported fields
                      }

                        EthRPC - Ethereum rpc client

                        func New

                        func New(url string, options ...func(rpc *EthRPC)) *EthRPC

                          New create new rpc client with given url

                          func NewEthRPC

                          func NewEthRPC(url string, options ...func(rpc *EthRPC)) *EthRPC

                            NewEthRPC create new rpc client with given url

                            func (*EthRPC) Call

                            func (rpc *EthRPC) Call(method string, params ...interface{}) (json.RawMessage, error)

                              Call returns raw response of method call

                              func (*EthRPC) Eth1

                              func (rpc *EthRPC) Eth1() *big.Int

                                Eth1 returns 1 ethereum value (10^18 wei)

                                func (*EthRPC) EthAccounts

                                func (rpc *EthRPC) EthAccounts() ([]string, error)

                                  EthAccounts returns a list of addresses owned by client.

                                  func (*EthRPC) EthBlockNumber

                                  func (rpc *EthRPC) EthBlockNumber() (int, error)

                                    EthBlockNumber returns the number of most recent block.

                                    func (*EthRPC) EthCall

                                    func (rpc *EthRPC) EthCall(transaction T, tag string) (string, error)

                                      EthCall executes a new message call immediately without creating a transaction on the block chain.

                                      func (*EthRPC) EthCoinbase

                                      func (rpc *EthRPC) EthCoinbase() (string, error)

                                        EthCoinbase returns the client coinbase address

                                        func (*EthRPC) EthEstimateGas

                                        func (rpc *EthRPC) EthEstimateGas(transaction T) (int, error)

                                          EthEstimateGas makes a call or transaction, which won't be added to the blockchain and returns the used gas, which can be used for estimating the used gas.

                                          func (*EthRPC) EthGasPrice

                                          func (rpc *EthRPC) EthGasPrice() (big.Int, error)

                                            EthGasPrice returns the current price per gas in wei.

                                            func (*EthRPC) EthGetBalance

                                            func (rpc *EthRPC) EthGetBalance(address, block string) (big.Int, error)

                                              EthGetBalance returns the balance of the account of given address in wei.

                                              func (*EthRPC) EthGetBlockByHash

                                              func (rpc *EthRPC) EthGetBlockByHash(hash string, withTransactions bool) (*Block, error)

                                                EthGetBlockByHash returns information about a block by hash.

                                                func (*EthRPC) EthGetBlockByNumber

                                                func (rpc *EthRPC) EthGetBlockByNumber(number int, withTransactions bool) (*Block, error)

                                                  EthGetBlockByNumber returns information about a block by block number.

                                                  func (*EthRPC) EthGetBlockTransactionCountByHash

                                                  func (rpc *EthRPC) EthGetBlockTransactionCountByHash(hash string) (int, error)

                                                    EthGetBlockTransactionCountByHash returns the number of transactions in a block from a block matching the given block hash.

                                                    func (*EthRPC) EthGetBlockTransactionCountByNumber

                                                    func (rpc *EthRPC) EthGetBlockTransactionCountByNumber(number int) (int, error)

                                                      EthGetBlockTransactionCountByNumber returns the number of transactions in a block from a block matching the given block

                                                      func (*EthRPC) EthGetCode

                                                      func (rpc *EthRPC) EthGetCode(address, block string) (string, error)

                                                        EthGetCode returns code at a given address.

                                                        func (*EthRPC) EthGetCompilers

                                                        func (rpc *EthRPC) EthGetCompilers() ([]string, error)

                                                          EthGetCompilers returns a list of available compilers in the client.

                                                          func (*EthRPC) EthGetFilterChanges

                                                          func (rpc *EthRPC) EthGetFilterChanges(filterID string) ([]Log, error)

                                                            EthGetFilterChanges polling method for a filter, which returns an array of logs which occurred since last poll.

                                                            func (*EthRPC) EthGetFilterLogs

                                                            func (rpc *EthRPC) EthGetFilterLogs(filterID string) ([]Log, error)

                                                              EthGetFilterLogs returns an array of all logs matching filter with given id.

                                                              func (*EthRPC) EthGetLogs

                                                              func (rpc *EthRPC) EthGetLogs(params FilterParams) ([]Log, error)

                                                                EthGetLogs returns an array of all logs matching a given filter object.

                                                                func (*EthRPC) EthGetStorageAt

                                                                func (rpc *EthRPC) EthGetStorageAt(data string, position int, tag string) (string, error)

                                                                  EthGetStorageAt returns the value from a storage position at a given address.

                                                                  func (*EthRPC) EthGetTransactionByBlockHashAndIndex

                                                                  func (rpc *EthRPC) EthGetTransactionByBlockHashAndIndex(blockHash string, transactionIndex int) (*Transaction, error)

                                                                    EthGetTransactionByBlockHashAndIndex returns information about a transaction by block hash and transaction index position.

                                                                    func (*EthRPC) EthGetTransactionByBlockNumberAndIndex

                                                                    func (rpc *EthRPC) EthGetTransactionByBlockNumberAndIndex(blockNumber, transactionIndex int) (*Transaction, error)

                                                                      EthGetTransactionByBlockNumberAndIndex returns information about a transaction by block number and transaction index position.

                                                                      func (*EthRPC) EthGetTransactionByHash

                                                                      func (rpc *EthRPC) EthGetTransactionByHash(hash string) (*Transaction, error)

                                                                        EthGetTransactionByHash returns the information about a transaction requested by transaction hash.

                                                                        func (*EthRPC) EthGetTransactionCount

                                                                        func (rpc *EthRPC) EthGetTransactionCount(address, block string) (int, error)

                                                                          EthGetTransactionCount returns the number of transactions sent from an address.

                                                                          func (*EthRPC) EthGetTransactionReceipt

                                                                          func (rpc *EthRPC) EthGetTransactionReceipt(hash string) (*TransactionReceipt, error)

                                                                            EthGetTransactionReceipt returns the receipt of a transaction by transaction hash. Note That the receipt is not available for pending transactions.

                                                                            func (*EthRPC) EthGetUncleCountByBlockHash

                                                                            func (rpc *EthRPC) EthGetUncleCountByBlockHash(hash string) (int, error)

                                                                              EthGetUncleCountByBlockHash returns the number of uncles in a block from a block matching the given block hash.

                                                                              func (*EthRPC) EthGetUncleCountByBlockNumber

                                                                              func (rpc *EthRPC) EthGetUncleCountByBlockNumber(number int) (int, error)

                                                                                EthGetUncleCountByBlockNumber returns the number of uncles in a block from a block matching the given block number.

                                                                                func (*EthRPC) EthHashrate

                                                                                func (rpc *EthRPC) EthHashrate() (int, error)

                                                                                  EthHashrate returns the number of hashes per second that the node is mining with.

                                                                                  func (*EthRPC) EthMining

                                                                                  func (rpc *EthRPC) EthMining() (bool, error)

                                                                                    EthMining returns true if client is actively mining new blocks.

                                                                                    func (*EthRPC) EthNewBlockFilter

                                                                                    func (rpc *EthRPC) EthNewBlockFilter() (string, error)

                                                                                      EthNewBlockFilter creates a filter in the node, to notify when a new block arrives. To check if the state has changed, call EthGetFilterChanges.

                                                                                      func (*EthRPC) EthNewFilter

                                                                                      func (rpc *EthRPC) EthNewFilter(params FilterParams) (string, error)

                                                                                        EthNewFilter creates a new filter object.

                                                                                        func (*EthRPC) EthNewPendingTransactionFilter

                                                                                        func (rpc *EthRPC) EthNewPendingTransactionFilter() (string, error)

                                                                                          EthNewPendingTransactionFilter creates a filter in the node, to notify when new pending transactions arrive. To check if the state has changed, call EthGetFilterChanges.

                                                                                          func (*EthRPC) EthProtocolVersion

                                                                                          func (rpc *EthRPC) EthProtocolVersion() (string, error)

                                                                                            EthProtocolVersion returns the current ethereum protocol version.

                                                                                            func (*EthRPC) EthSendRawTransaction

                                                                                            func (rpc *EthRPC) EthSendRawTransaction(data string) (string, error)

                                                                                              EthSendRawTransaction creates new message call transaction or a contract creation for signed transactions.

                                                                                              func (*EthRPC) EthSendTransaction

                                                                                              func (rpc *EthRPC) EthSendTransaction(transaction T) (string, error)

                                                                                                EthSendTransaction creates new message call transaction or a contract creation, if the data field contains code.

                                                                                                func (*EthRPC) EthSign

                                                                                                func (rpc *EthRPC) EthSign(address, data string) (string, error)

                                                                                                  EthSign signs data with a given address. Calculates an Ethereum specific signature with: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))

                                                                                                  func (*EthRPC) EthSyncing

                                                                                                  func (rpc *EthRPC) EthSyncing() (*Syncing, error)

                                                                                                    EthSyncing returns an object with data about the sync status or false.

                                                                                                    func (*EthRPC) EthUninstallFilter

                                                                                                    func (rpc *EthRPC) EthUninstallFilter(filterID string) (bool, error)

                                                                                                      EthUninstallFilter uninstalls a filter with given id.

                                                                                                      func (*EthRPC) NetListening

                                                                                                      func (rpc *EthRPC) NetListening() (bool, error)

                                                                                                        NetListening returns true if client is actively listening for network connections.

                                                                                                        func (*EthRPC) NetPeerCount

                                                                                                        func (rpc *EthRPC) NetPeerCount() (int, error)

                                                                                                          NetPeerCount returns number of peers currently connected to the client.

                                                                                                          func (*EthRPC) NetVersion

                                                                                                          func (rpc *EthRPC) NetVersion() (string, error)

                                                                                                            NetVersion returns the current network protocol version.

                                                                                                            func (*EthRPC) RawCall

                                                                                                            func (rpc *EthRPC) RawCall(method string, params ...interface{}) (json.RawMessage, error)

                                                                                                              RawCall returns raw response of method call (Deprecated)

                                                                                                              func (*EthRPC) URL

                                                                                                              func (rpc *EthRPC) URL() string

                                                                                                                URL returns client url

                                                                                                                func (*EthRPC) Web3ClientVersion

                                                                                                                func (rpc *EthRPC) Web3ClientVersion() (string, error)

                                                                                                                  Web3ClientVersion returns the current client version.

                                                                                                                  func (*EthRPC) Web3Sha3

                                                                                                                  func (rpc *EthRPC) Web3Sha3(data []byte) (string, error)

                                                                                                                    Web3Sha3 returns Keccak-256 (not the standardized SHA3-256) of the given data.

                                                                                                                    type EthereumAPI

                                                                                                                    type EthereumAPI interface {
                                                                                                                    	Web3ClientVersion() (string, error)
                                                                                                                    	Web3Sha3(data []byte) (string, error)
                                                                                                                    	NetVersion() (string, error)
                                                                                                                    	NetListening() (bool, error)
                                                                                                                    	NetPeerCount() (int, error)
                                                                                                                    	EthProtocolVersion() (string, error)
                                                                                                                    	EthSyncing() (*Syncing, error)
                                                                                                                    	EthCoinbase() (string, error)
                                                                                                                    	EthMining() (bool, error)
                                                                                                                    	EthHashrate() (int, error)
                                                                                                                    	EthGasPrice() (big.Int, error)
                                                                                                                    	EthAccounts() ([]string, error)
                                                                                                                    	EthBlockNumber() (int, error)
                                                                                                                    	EthGetBalance(address, block string) (big.Int, error)
                                                                                                                    	EthGetStorageAt(data string, position int, tag string) (string, error)
                                                                                                                    	EthGetTransactionCount(address, block string) (int, error)
                                                                                                                    	EthGetBlockTransactionCountByHash(hash string) (int, error)
                                                                                                                    	EthGetBlockTransactionCountByNumber(number int) (int, error)
                                                                                                                    	EthGetUncleCountByBlockHash(hash string) (int, error)
                                                                                                                    	EthGetUncleCountByBlockNumber(number int) (int, error)
                                                                                                                    	EthGetCode(address, block string) (string, error)
                                                                                                                    	EthSign(address, data string) (string, error)
                                                                                                                    	EthSendTransaction(transaction T) (string, error)
                                                                                                                    	EthSendRawTransaction(data string) (string, error)
                                                                                                                    	EthCall(transaction T, tag string) (string, error)
                                                                                                                    	EthEstimateGas(transaction T) (int, error)
                                                                                                                    	EthGetBlockByHash(hash string, withTransactions bool) (*Block, error)
                                                                                                                    	EthGetBlockByNumber(number int, withTransactions bool) (*Block, error)
                                                                                                                    	EthGetTransactionByHash(hash string) (*Transaction, error)
                                                                                                                    	EthGetTransactionByBlockHashAndIndex(blockHash string, transactionIndex int) (*Transaction, error)
                                                                                                                    	EthGetTransactionByBlockNumberAndIndex(blockNumber, transactionIndex int) (*Transaction, error)
                                                                                                                    	EthGetTransactionReceipt(hash string) (*TransactionReceipt, error)
                                                                                                                    	EthGetCompilers() ([]string, error)
                                                                                                                    	EthNewFilter(params FilterParams) (string, error)
                                                                                                                    	EthNewBlockFilter() (string, error)
                                                                                                                    	EthNewPendingTransactionFilter() (string, error)
                                                                                                                    	EthUninstallFilter(filterID string) (bool, error)
                                                                                                                    	EthGetFilterChanges(filterID string) ([]Log, error)
                                                                                                                    	EthGetFilterLogs(filterID string) ([]Log, error)
                                                                                                                    	EthGetLogs(params FilterParams) ([]Log, error)
                                                                                                                    }

                                                                                                                    type FilterParams

                                                                                                                    type FilterParams struct {
                                                                                                                    	FromBlock string     `json:"fromBlock,omitempty"`
                                                                                                                    	ToBlock   string     `json:"toBlock,omitempty"`
                                                                                                                    	Address   []string   `json:"address,omitempty"`
                                                                                                                    	Topics    [][]string `json:"topics,omitempty"`
                                                                                                                    }

                                                                                                                      FilterParams - Filter parameters object

                                                                                                                      type Log

                                                                                                                      type Log struct {
                                                                                                                      	Removed          bool
                                                                                                                      	LogIndex         int
                                                                                                                      	TransactionIndex int
                                                                                                                      	TransactionHash  string
                                                                                                                      	BlockNumber      int
                                                                                                                      	BlockHash        string
                                                                                                                      	Address          string
                                                                                                                      	Data             string
                                                                                                                      	Topics           []string
                                                                                                                      }

                                                                                                                        Log - log object

                                                                                                                        func (*Log) UnmarshalJSON

                                                                                                                        func (log *Log) UnmarshalJSON(data []byte) error

                                                                                                                          UnmarshalJSON implements the json.Unmarshaler interface.

                                                                                                                          type Syncing

                                                                                                                          type Syncing struct {
                                                                                                                          	IsSyncing     bool
                                                                                                                          	StartingBlock int
                                                                                                                          	CurrentBlock  int
                                                                                                                          	HighestBlock  int
                                                                                                                          }

                                                                                                                            Syncing - object with syncing data info

                                                                                                                            func (*Syncing) UnmarshalJSON

                                                                                                                            func (s *Syncing) UnmarshalJSON(data []byte) error

                                                                                                                              UnmarshalJSON implements the json.Unmarshaler interface.

                                                                                                                              type T

                                                                                                                              type T struct {
                                                                                                                              	From     string
                                                                                                                              	To       string
                                                                                                                              	Gas      int
                                                                                                                              	GasPrice *big.Int
                                                                                                                              	Value    *big.Int
                                                                                                                              	Data     string
                                                                                                                              	Nonce    int
                                                                                                                              }

                                                                                                                                T - input transaction object

                                                                                                                                func (T) MarshalJSON

                                                                                                                                func (t T) MarshalJSON() ([]byte, error)

                                                                                                                                  MarshalJSON implements the json.Unmarshaler interface.

                                                                                                                                  type Transaction

                                                                                                                                  type Transaction struct {
                                                                                                                                  	Hash             string
                                                                                                                                  	Nonce            int
                                                                                                                                  	BlockHash        string
                                                                                                                                  	BlockNumber      *int
                                                                                                                                  	TransactionIndex *int
                                                                                                                                  	From             string
                                                                                                                                  	To               string
                                                                                                                                  	Value            big.Int
                                                                                                                                  	Gas              int
                                                                                                                                  	GasPrice         big.Int
                                                                                                                                  	Input            string
                                                                                                                                  }

                                                                                                                                    Transaction - transaction object

                                                                                                                                    func (*Transaction) UnmarshalJSON

                                                                                                                                    func (t *Transaction) UnmarshalJSON(data []byte) error

                                                                                                                                      UnmarshalJSON implements the json.Unmarshaler interface.

                                                                                                                                      type TransactionReceipt

                                                                                                                                      type TransactionReceipt struct {
                                                                                                                                      	TransactionHash   string
                                                                                                                                      	TransactionIndex  int
                                                                                                                                      	BlockHash         string
                                                                                                                                      	BlockNumber       int
                                                                                                                                      	CumulativeGasUsed int
                                                                                                                                      	GasUsed           int
                                                                                                                                      	ContractAddress   string
                                                                                                                                      	Logs              []Log
                                                                                                                                      	LogsBloom         string
                                                                                                                                      	Root              string
                                                                                                                                      	Status            string
                                                                                                                                      }

                                                                                                                                        TransactionReceipt - transaction receipt object

                                                                                                                                        func (*TransactionReceipt) UnmarshalJSON

                                                                                                                                        func (t *TransactionReceipt) UnmarshalJSON(data []byte) error

                                                                                                                                          UnmarshalJSON implements the json.Unmarshaler interface.