etherclient

package
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 22, 2021 License: GPL-3.0 Imports: 19 Imported by: 0

README

mycryptohq/infrastructure/common/etherclient

A simple shared pkg to simplify ethereum node interaction and conversion

To use, first initialize an ethclient. Then use it to make calls.

client := etherclient.MakeETHClient("https://localhost:8000")
bal, err := etherclient.GetBalance(client, address)
if err != nil {
	return float64(0), err
}
return etherclient.ConvertFromWei(bal), nil

Documentation

Index

Constants

View Source
const TokenABI = "" /* 2565-byte string literal not displayed */

TokenABI is the input ABI used to generate the binding from.

Variables

This section is empty.

Functions

func BalanceOf

func BalanceOf(client *ethclient.Client, tokenObject TokenObject) (*big.Int, error)

func CalculateUserReadableGas

func CalculateUserReadableGas(gasUsed *big.Int, gasPrice *big.Int) float64

func Call

func Call(client ethclient.Client, callTx ethereum.CallMsg) ([]byte, error)

func ConvertFromBase

func ConvertFromBase(amount big.Int, decimal int) float64

func ConvertFromHexByteToHexString

func ConvertFromHexByteToHexString(amount []byte) string

func ConvertFromHexToBigInt

func ConvertFromHexToBigInt(amount []byte) *big.Int

func ConvertFromWei

func ConvertFromWei(amount big.Int) float64

func ConvertHashToString

func ConvertHashToString(hash common.Hash) string

func Decimals

func Decimals(client *ethclient.Client, tokenObject TokenObject) (uint8, error)

func FetchBlockMinGas

func FetchBlockMinGas(txs ClientTypes.Transactions) int64

func GetBalance

func GetBalance(client ethclient.Client, address string) (*big.Int, error)

func GetBlockByNum

func GetBlockByNum(client ethclient.Client, blockNum int64) (types.Block, error)

func GetBlockNumber

func GetBlockNumber(client ethclient.Client) (int64, error)

func GetLogs

func GetLogs(client ethclient.Client, logsFilter ethereum.FilterQuery) ([]types.Log, error)

func GetTransactionByHash

func GetTransactionByHash(client ethclient.Client, txHash string) (*types.Transaction, bool, error)

func GetTransactionReceipt

func GetTransactionReceipt(client ethclient.Client, txHash string) (*types.Receipt, error)

func MakeETHClient

func MakeETHClient(nodeEndpoint string) *ethclient.Client

func TotalSupply

func TotalSupply(client *ethclient.Client, tokenObject TokenObject) (*big.Int, error)

func Truncate

func Truncate(f float64, unit float64) float64

Types

type HTTPError

type HTTPError struct {
	Code int
	// contains filtered or unexported fields
}

func (*HTTPError) Error

func (e *HTTPError) Error() string

type RPCClient

type RPCClient interface {
	CallRaw(request *RPCRequest) (*RPCResponse, error)
	CallBatchRaw(requests RPCRequests) (RPCResponses, error)
}

func NewClientWithOpts

func NewClientWithOpts(endpoint string, opts *RPCClientOpts) RPCClient

func NewHTTPClient

func NewHTTPClient(endpoint string) RPCClient

type RPCClientOpts

type RPCClientOpts struct {
	HTTPClient    *http.Client
	CustomHeaders map[string]string
}

type RPCError

type RPCError struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

func (*RPCError) Error

func (e *RPCError) Error() string

type RPCRequest

type RPCRequest struct {
	Method  string          `json:"method"`
	Params  interface{}     `json:"params,omitempty"`
	ID      json.RawMessage `json:"id"`
	JSONRPC string          `json:"jsonrpc"`
}

type RPCRequests

type RPCRequests []*RPCRequest

type RPCResponse

type RPCResponse struct {
	JSONRPC string          `json:"jsonrpc"`
	Result  interface{}     `json:"result,omitempty"`
	Error   *RPCError       `json:"error,omitempty"`
	ID      json.RawMessage `json:"id"`
}

type RPCResponses

type RPCResponses []*RPCResponse

type Token

type Token struct {
	TokenCaller     // Read-only binding to the contract
	TokenTransactor // Write-only binding to the contract
	TokenFilterer   // Log filterer for contract events
}

Token is an auto generated Go binding around an Ethereum contract.

func NewToken

func NewToken(address common.Address, backend bind.ContractBackend) (*Token, error)

NewToken creates a new instance of Token, bound to a specific deployed contract.

type TokenApproval

type TokenApproval struct {
	TokenOwner common.Address
	Spender    common.Address
	Tokens     *big.Int
	Raw        types.Log // Blockchain specific contextual infos
}

TokenApproval represents a Approval event raised by the Token contract.

type TokenApprovalIterator

type TokenApprovalIterator struct {
	Event *TokenApproval // Event containing the contract specifics and raw log
	// contains filtered or unexported fields
}

TokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Token contract.

func (*TokenApprovalIterator) Close

func (it *TokenApprovalIterator) Close() error

Close terminates the iteration process, releasing any pending underlying resources.

func (*TokenApprovalIterator) Error

func (it *TokenApprovalIterator) Error() error

Error returns any retrieval or parsing error occurred during filtering.

func (*TokenApprovalIterator) Next

func (it *TokenApprovalIterator) Next() bool

Next advances the iterator to the subsequent event, returning whether there are any more events found. In case of a retrieval or parsing error, false is returned and Error() can be queried for the exact failure.

type TokenCaller

type TokenCaller struct {
	// contains filtered or unexported fields
}

TokenCaller is an auto generated read-only Go binding around an Ethereum contract.

func NewTokenCaller

func NewTokenCaller(address common.Address, caller bind.ContractCaller) (*TokenCaller, error)

NewTokenCaller creates a new read-only instance of Token, bound to a specific deployed contract.

func (*TokenCaller) Allowance

func (_Token *TokenCaller) Allowance(opts *bind.CallOpts, tokenOwner common.Address, spender common.Address) (*big.Int, error)

Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.

Solidity: function allowance(address tokenOwner, address spender) constant returns(uint256 remaining)

func (*TokenCaller) BalanceOf

func (_Token *TokenCaller) BalanceOf(opts *bind.CallOpts, tokenOwner common.Address) (*big.Int, error)

BalanceOf is a free data retrieval call binding the contract method 0x70a08231.

Solidity: function balanceOf(address tokenOwner) constant returns(uint256 balance)

func (*TokenCaller) Decimals

func (_Token *TokenCaller) Decimals(opts *bind.CallOpts) (uint8, error)

Decimals is a free data retrieval call binding the contract method 0x313ce567.

Solidity: function decimals() constant returns(uint8)

func (*TokenCaller) Name

func (_Token *TokenCaller) Name(opts *bind.CallOpts) (string, error)

Name is a free data retrieval call binding the contract method 0x06fdde03.

Solidity: function name() constant returns(string)

func (*TokenCaller) Symbol

func (_Token *TokenCaller) Symbol(opts *bind.CallOpts) (string, error)

Symbol is a free data retrieval call binding the contract method 0x95d89b41.

Solidity: function symbol() constant returns(string)

func (*TokenCaller) TotalSupply

func (_Token *TokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error)

TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.

Solidity: function totalSupply() constant returns(uint256)

type TokenCallerRaw

type TokenCallerRaw struct {
	Contract *TokenCaller // Generic read-only contract binding to access the raw methods on
}

TokenCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.

func (*TokenCallerRaw) Call

func (_Token *TokenCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error

Call invokes the (constant) contract method with params as input values and sets the output to result. The result type might be a single field for simple returns, a slice of interfaces for anonymous returns and a struct for named returns.

type TokenCallerSession

type TokenCallerSession struct {
	Contract *TokenCaller  // Generic contract caller binding to set the session for
	CallOpts bind.CallOpts // Call options to use throughout this session
}

TokenCallerSession is an auto generated read-only Go binding around an Ethereum contract, with pre-set call options.

func (*TokenCallerSession) Allowance

func (_Token *TokenCallerSession) Allowance(tokenOwner common.Address, spender common.Address) (*big.Int, error)

Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.

Solidity: function allowance(address tokenOwner, address spender) constant returns(uint256 remaining)

func (*TokenCallerSession) BalanceOf

func (_Token *TokenCallerSession) BalanceOf(tokenOwner common.Address) (*big.Int, error)

BalanceOf is a free data retrieval call binding the contract method 0x70a08231.

Solidity: function balanceOf(address tokenOwner) constant returns(uint256 balance)

func (*TokenCallerSession) Decimals

func (_Token *TokenCallerSession) Decimals() (uint8, error)

Decimals is a free data retrieval call binding the contract method 0x313ce567.

Solidity: function decimals() constant returns(uint8)

func (*TokenCallerSession) Name

func (_Token *TokenCallerSession) Name() (string, error)

Name is a free data retrieval call binding the contract method 0x06fdde03.

Solidity: function name() constant returns(string)

func (*TokenCallerSession) Symbol

func (_Token *TokenCallerSession) Symbol() (string, error)

Symbol is a free data retrieval call binding the contract method 0x95d89b41.

Solidity: function symbol() constant returns(string)

func (*TokenCallerSession) TotalSupply

func (_Token *TokenCallerSession) TotalSupply() (*big.Int, error)

TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.

Solidity: function totalSupply() constant returns(uint256)

type TokenFilterer

type TokenFilterer struct {
	// contains filtered or unexported fields
}

TokenFilterer is an auto generated log filtering Go binding around an Ethereum contract events.

func NewTokenFilterer

func NewTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*TokenFilterer, error)

NewTokenFilterer creates a new log filterer instance of Token, bound to a specific deployed contract.

func (*TokenFilterer) FilterApproval

func (_Token *TokenFilterer) FilterApproval(opts *bind.FilterOpts, tokenOwner []common.Address, spender []common.Address) (*TokenApprovalIterator, error)

FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.

Solidity: event Approval(address indexed tokenOwner, address indexed spender, uint256 erc20)

func (*TokenFilterer) FilterTransfer

func (_Token *TokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*TokenTransferIterator, error)

FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.

Solidity: event Transfer(address indexed from, address indexed to, uint256 erc20)

func (*TokenFilterer) WatchApproval

func (_Token *TokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *TokenApproval, tokenOwner []common.Address, spender []common.Address) (event.Subscription, error)

WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.

Solidity: event Approval(address indexed tokenOwner, address indexed spender, uint256 erc20)

func (*TokenFilterer) WatchTransfer

func (_Token *TokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *TokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error)

WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.

Solidity: event Transfer(address indexed from, address indexed to, uint256 erc20)

type TokenObject

type TokenObject struct {
	Contract common.Address
	Wallet   common.Address
	Name     string
	Symbol   string
	Balance  *big.Int
	ETH      *big.Int
	Decimals int64
	Block    int64
	// contains filtered or unexported fields
}

type TokenRaw

type TokenRaw struct {
	Contract *Token // Generic contract binding to access the raw methods on
}

TokenRaw is an auto generated low-level Go binding around an Ethereum contract.

func (*TokenRaw) Call

func (_Token *TokenRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error

Call invokes the (constant) contract method with params as input values and sets the output to result. The result type might be a single field for simple returns, a slice of interfaces for anonymous returns and a struct for named returns.

func (*TokenRaw) Transact

func (_Token *TokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error)

Transact invokes the (paid) contract method with params as input values.

func (*TokenRaw) Transfer

func (_Token *TokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error)

Transfer initiates a plain transaction to move funds to the contract, calling its default method if one is available.

type TokenSession

type TokenSession struct {
	Contract     *Token            // Generic contract binding to set the session for
	CallOpts     bind.CallOpts     // Call options to use throughout this session
	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}

TokenSession is an auto generated Go binding around an Ethereum contract, with pre-set call and transact options.

func (*TokenSession) Allowance

func (_Token *TokenSession) Allowance(tokenOwner common.Address, spender common.Address) (*big.Int, error)

Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.

Solidity: function allowance(address tokenOwner, address spender) constant returns(uint256 remaining)

func (*TokenSession) Approve

func (_Token *TokenSession) Approve(spender common.Address, tokens *big.Int) (*types.Transaction, error)

Approve is a paid mutator transaction binding the contract method 0x095ea7b3.

Solidity: function approve(address spender, uint256 erc20) returns(bool success)

func (*TokenSession) BalanceOf

func (_Token *TokenSession) BalanceOf(tokenOwner common.Address) (*big.Int, error)

BalanceOf is a free data retrieval call binding the contract method 0x70a08231.

Solidity: function balanceOf(address tokenOwner) constant returns(uint256 balance)

func (*TokenSession) Decimals

func (_Token *TokenSession) Decimals() (uint8, error)

Decimals is a free data retrieval call binding the contract method 0x313ce567.

Solidity: function decimals() constant returns(uint8)

func (*TokenSession) Name

func (_Token *TokenSession) Name() (string, error)

Name is a free data retrieval call binding the contract method 0x06fdde03.

Solidity: function name() constant returns(string)

func (*TokenSession) Symbol

func (_Token *TokenSession) Symbol() (string, error)

Symbol is a free data retrieval call binding the contract method 0x95d89b41.

Solidity: function symbol() constant returns(string)

func (*TokenSession) TotalSupply

func (_Token *TokenSession) TotalSupply() (*big.Int, error)

TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.

Solidity: function totalSupply() constant returns(uint256)

func (*TokenSession) Transfer

func (_Token *TokenSession) Transfer(to common.Address, tokens *big.Int) (*types.Transaction, error)

Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.

Solidity: function transfer(address to, uint256 erc20) returns(bool success)

func (*TokenSession) TransferFrom

func (_Token *TokenSession) TransferFrom(from common.Address, to common.Address, tokens *big.Int) (*types.Transaction, error)

TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.

Solidity: function transferFrom(address from, address to, uint256 erc20) returns(bool success)

type TokenTransactor

type TokenTransactor struct {
	// contains filtered or unexported fields
}

TokenTransactor is an auto generated write-only Go binding around an Ethereum contract.

func NewTokenTransactor

func NewTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*TokenTransactor, error)

NewTokenTransactor creates a new write-only instance of Token, bound to a specific deployed contract.

func (*TokenTransactor) Approve

func (_Token *TokenTransactor) Approve(opts *bind.TransactOpts, spender common.Address, tokens *big.Int) (*types.Transaction, error)

Approve is a paid mutator transaction binding the contract method 0x095ea7b3.

Solidity: function approve(address spender, uint256 erc20) returns(bool success)

func (*TokenTransactor) Transfer

func (_Token *TokenTransactor) Transfer(opts *bind.TransactOpts, to common.Address, tokens *big.Int) (*types.Transaction, error)

Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.

Solidity: function transfer(address to, uint256 erc20) returns(bool success)

func (*TokenTransactor) TransferFrom

func (_Token *TokenTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokens *big.Int) (*types.Transaction, error)

TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.

Solidity: function transferFrom(address from, address to, uint256 erc20) returns(bool success)

type TokenTransactorRaw

type TokenTransactorRaw struct {
	Contract *TokenTransactor // Generic write-only contract binding to access the raw methods on
}

TokenTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.

func (*TokenTransactorRaw) Transact

func (_Token *TokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error)

Transact invokes the (paid) contract method with params as input values.

func (*TokenTransactorRaw) Transfer

func (_Token *TokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error)

Transfer initiates a plain transaction to move funds to the contract, calling its default method if one is available.

type TokenTransactorSession

type TokenTransactorSession struct {
	Contract     *TokenTransactor  // Generic contract transactor binding to set the session for
	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}

TokenTransactorSession is an auto generated write-only Go binding around an Ethereum contract, with pre-set transact options.

func (*TokenTransactorSession) Approve

func (_Token *TokenTransactorSession) Approve(spender common.Address, tokens *big.Int) (*types.Transaction, error)

Approve is a paid mutator transaction binding the contract method 0x095ea7b3.

Solidity: function approve(address spender, uint256 erc20) returns(bool success)

func (*TokenTransactorSession) Transfer

func (_Token *TokenTransactorSession) Transfer(to common.Address, tokens *big.Int) (*types.Transaction, error)

Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.

Solidity: function transfer(address to, uint256 erc20) returns(bool success)

func (*TokenTransactorSession) TransferFrom

func (_Token *TokenTransactorSession) TransferFrom(from common.Address, to common.Address, tokens *big.Int) (*types.Transaction, error)

TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.

Solidity: function transferFrom(address from, address to, uint256 erc20) returns(bool success)

type TokenTransfer

type TokenTransfer struct {
	From   common.Address
	To     common.Address
	Tokens *big.Int
	Raw    types.Log // Blockchain specific contextual infos
}

TokenTransfer represents a Transfer event raised by the Token contract.

type TokenTransferIterator

type TokenTransferIterator struct {
	Event *TokenTransfer // Event containing the contract specifics and raw log
	// contains filtered or unexported fields
}

TokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Token contract.

func (*TokenTransferIterator) Close

func (it *TokenTransferIterator) Close() error

Close terminates the iteration process, releasing any pending underlying resources.

func (*TokenTransferIterator) Error

func (it *TokenTransferIterator) Error() error

Error returns any retrieval or parsing error occurred during filtering.

func (*TokenTransferIterator) Next

func (it *TokenTransferIterator) Next() bool

Next advances the iterator to the subsequent event, returning whether there are any more events found. In case of a retrieval or parsing error, false is returned and Error() can be queried for the exact failure.

type TokenTransferProcessedObj

type TokenTransferProcessedObj struct {
	Symbol          string         `json:"symbol,omitempty"`
	From            common.Address `json:"from,omitempty"`
	To              common.Address `json:"to,omitempty"`
	ContractAddress common.Address `json:"contractAddress,omitempty"`
	Amount          float64        `json:"amount,omitempty"`
	FiatAmount      float64        `json:"fiatAmount,omitempty"`
}

TokenTransfer represents a Transfer event raised by the Token contract.

func ParseTransferLog

func ParseTransferLog(logEvent types.Log, decimal int, symbol string, rate float64) (TokenTransferProcessedObj, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL