ethereum

package
v1.105.0 Latest Latest
Warning

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

Go to latest
Published: Jan 31, 2023 License: MIT Imports: 48 Imported by: 1

Documentation

Index

Constants

View Source
const (
	BlockCacheSize = 6000
	MaxContractGas = 80000
)
View Source
const (
	PrefixBlockMeta    = `eth-blockmeta-`
	PrefixSignedTxItem = `signed-txitem-`
)

PrefixTxStorage declares prefix to use in leveldb to avoid conflicts

View Source
const TxWaitBlocks = 150

Variables

This section is empty.

Functions

func IsETH added in v0.41.0

func IsETH(token string) bool

IsETH return true if the token address equals to ethToken address

func LatestAggregatorContracts added in v1.93.0

func LatestAggregatorContracts() []common.Address

Types

type BlockMetaAccessor

type BlockMetaAccessor interface {
	GetBlockMetas() ([]*types.BlockMeta, error)
	GetBlockMeta(height int64) (*types.BlockMeta, error)
	SaveBlockMeta(height int64, block *types.BlockMeta) error
	PruneBlockMeta(height int64) error
	AddSignedTxItem(item SignedTxItem) error
	RemoveSignedTxItem(hash string) error
	GetSignedTxItems() ([]SignedTxItem, error)
}

BlockMetaAccessor define methods need to access block meta storage

type Client

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

Client is a structure to sign and broadcast tx to Ethereum chain used by signer mostly

func NewClient

NewClient create new instance of Ethereum client

func (*Client) AddSignedTxItem added in v0.54.0

func (c *Client) AddSignedTxItem(hash string, height int64, vaultPubKey string) error

AddSignedTxItem add the transaction to key value store

func (*Client) BroadcastTx

func (c *Client) BroadcastTx(txOutItem stypes.TxOutItem, hexTx []byte) (string, error)

BroadcastTx decodes tx using rlp and broadcasts too Ethereum chain

func (*Client) ConfirmationCountReady added in v0.41.0

func (c *Client) ConfirmationCountReady(txIn stypes.TxIn) bool

ConfirmationCountReady check whether the given txIn is ready to be send to THORChain

func (*Client) GetAccount

func (c *Client) GetAccount(pk common.PubKey, height *big.Int) (common.Account, error)

GetAccount gets account by address in eth client

func (*Client) GetAccountByAddress

func (c *Client) GetAccountByAddress(address string, height *big.Int) (common.Account, error)

GetAccountByAddress return account information

func (*Client) GetAddress

func (c *Client) GetAddress(poolPubKey common.PubKey) string

GetAddress return current signer address, it will be bech32 encoded address

func (*Client) GetBalance added in v0.41.0

func (c *Client) GetBalance(addr, token string, height *big.Int) (*big.Int, error)

GetBalance call smart contract to find out the balance of the given address and token

func (*Client) GetBalances added in v0.41.0

func (c *Client) GetBalances(addr string, height *big.Int) (common.Coins, error)

GetBalances gets all the balances of the given address

func (*Client) GetChain

func (c *Client) GetChain() common.Chain

GetChain get chain

func (*Client) GetConfig

func (c *Client) GetConfig() config.BifrostChainConfiguration

GetConfig return the configurations used by ETH chain

func (*Client) GetConfirmationCount added in v0.41.0

func (c *Client) GetConfirmationCount(txIn stypes.TxIn) int64

GetConfirmationCount decide the given txIn how many confirmation it requires

func (*Client) GetGasFee

func (c *Client) GetGasFee(gas uint64) common.Gas

GetGasFee gets gas fee

func (*Client) GetGasPrice

func (c *Client) GetGasPrice() *big.Int

GetGasPrice gets gas price from eth scanner

func (*Client) GetHeight

func (c *Client) GetHeight() (int64, error)

GetHeight gets height from eth scanner

func (*Client) GetNonce

func (c *Client) GetNonce(addr string) (uint64, error)

GetNonce gets nonce

func (*Client) IsBlockScannerHealthy added in v0.41.0

func (c *Client) IsBlockScannerHealthy() bool

func (*Client) OnObservedTxIn added in v0.41.0

func (c *Client) OnObservedTxIn(txIn stypes.TxInItem, blockHeight int64)

OnObservedTxIn gets called from observer when we have a valid observation

func (*Client) ReportSolvency added in v0.79.0

func (c *Client) ReportSolvency(ethBlockHeight int64) error

func (*Client) ShouldReportSolvency added in v0.79.0

func (c *Client) ShouldReportSolvency(height int64) bool

ShouldReportSolvency with given block height , should chain client report Solvency to THORNode?

func (*Client) SignTx

func (c *Client) SignTx(tx stypes.TxOutItem, height int64) ([]byte, error)

SignTx sign the the given TxArrayItem

func (*Client) Start

func (c *Client) Start(globalTxsQueue chan stypes.TxIn, globalErrataQueue chan stypes.ErrataBlock, globalSolvencyQueue chan stypes.Solvency)

Start to monitor Ethereum block chain

func (*Client) Stop

func (c *Client) Stop()

Stop ETH client

type ETHScanner added in v0.41.0

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

ETHScanner is a scanner that understand how to interact with ETH chain ,and scan block , parse smart contract etc

func NewETHScanner added in v0.41.0

func NewETHScanner(cfg config.BifrostBlockScannerConfiguration,
	storage blockscanner.ScannerStorage,
	chainID *big.Int,
	client *ethclient.Client,
	bridge *thorclient.ThorchainBridge,
	m *metrics.Metrics,
	pubkeyMgr pubkeymanager.PubKeyValidator,
	solvencyReporter SolvencyReporter,
	signerCacheManager *signercache.CacheManager,
) (*ETHScanner, error)

NewETHScanner create a new instance of ETHScanner

func (*ETHScanner) FetchMemPool added in v0.41.0

func (e *ETHScanner) FetchMemPool(_ int64) (stypes.TxIn, error)

FetchMemPool get tx from mempool

func (*ETHScanner) FetchTxs added in v0.41.0

func (e *ETHScanner) FetchTxs(height int64) (stypes.TxIn, error)

FetchTxs query the ETH chain to get txs in the given block height

func (*ETHScanner) GetGasPrice added in v0.41.0

func (e *ETHScanner) GetGasPrice() *big.Int

GetGasPrice returns current gas price

func (*ETHScanner) GetHeight added in v0.41.0

func (e *ETHScanner) GetHeight() (int64, error)

GetHeight return latest block height

func (*ETHScanner) GetTokens added in v0.41.0

func (e *ETHScanner) GetTokens() ([]*types.TokenMeta, error)

GetTokens return all the token meta data

type LevelDBBlockMetaAccessor

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

LevelDBBlockMetaAccessor struct

func NewLevelDBBlockMetaAccessor

func NewLevelDBBlockMetaAccessor(db *leveldb.DB) (*LevelDBBlockMetaAccessor, error)

NewLevelDBBlockMetaAccessor creates a new level db backed BlockMeta accessor

func (*LevelDBBlockMetaAccessor) AddSignedTxItem added in v0.54.0

func (t *LevelDBBlockMetaAccessor) AddSignedTxItem(item SignedTxItem) error

AddSignedTxItem add a signed tx item to key value store

func (*LevelDBBlockMetaAccessor) GetBlockMeta

func (t *LevelDBBlockMetaAccessor) GetBlockMeta(height int64) (*types.BlockMeta, error)

GetBlockMeta at given block height , when the requested block meta doesn't exist , it will return nil , thus caller need to double check it

func (*LevelDBBlockMetaAccessor) GetBlockMetas

func (t *LevelDBBlockMetaAccessor) GetBlockMetas() ([]*types.BlockMeta, error)

GetBlockMetas returns all the block metas in storage The chain client will Prune block metas every time it finished scan a block , so at maximum it will keep BlockCacheSize blocks thus it should not grow out of control

func (*LevelDBBlockMetaAccessor) GetSignedTxItems added in v0.54.0

func (t *LevelDBBlockMetaAccessor) GetSignedTxItems() ([]SignedTxItem, error)

GetSignedTxItems get all the signed tx items that in the key value store

func (*LevelDBBlockMetaAccessor) PruneBlockMeta

func (t *LevelDBBlockMetaAccessor) PruneBlockMeta(height int64) error

PruneBlockMeta remove all block meta that is older than the given block height with exception, if there are unspent transaction output in it , then the block meta will not be removed

func (*LevelDBBlockMetaAccessor) RemoveSignedTxItem added in v0.54.0

func (t *LevelDBBlockMetaAccessor) RemoveSignedTxItem(hash string) error

RemoveSignedTxItem remove a signed item from key value store

func (*LevelDBBlockMetaAccessor) SaveBlockMeta

func (t *LevelDBBlockMetaAccessor) SaveBlockMeta(height int64, blockMeta *types.BlockMeta) error

SaveBlockMeta persistent the given BlockMeta into storage

type LevelDBTokenMeta added in v0.41.0

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

LevelDBTokenMeta struct

func NewLevelDBTokenMeta added in v0.41.0

func NewLevelDBTokenMeta(db *leveldb.DB) (*LevelDBTokenMeta, error)

NewLevelDBTokenMeta creates a new level db backed TokenMeta

func (*LevelDBTokenMeta) GetTokenMeta added in v0.41.0

func (t *LevelDBTokenMeta) GetTokenMeta(address string) (types.TokenMeta, error)

GetTokenMeta for given token address

func (*LevelDBTokenMeta) GetTokens added in v0.41.0

func (t *LevelDBTokenMeta) GetTokens() ([]*types.TokenMeta, error)

GetTokens returns all the token metas in storage

func (*LevelDBTokenMeta) SaveTokenMeta added in v0.41.0

func (t *LevelDBTokenMeta) SaveTokenMeta(symbol, address string, decimals uint64) error

SaveTokenMeta persistent the given TokenMeta into storage

type RouterCoin added in v0.41.0

type RouterCoin struct {
	Asset  ecommon.Address
	Amount *big.Int
}

RouterCoin represent the coins transfer between vault

type SignedTxItem added in v0.54.0

type SignedTxItem struct {
	Hash        string `json:"hash,omitempty"`
	Height      int64  `json:"height,omitempty"`
	VaultPubKey string `json:"vault_pub_key,omitempty"`
}

func (SignedTxItem) String added in v0.54.0

func (st SignedTxItem) String() string

String implement fmt.Stringer

type SmartContractLogParser added in v0.68.0

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

func NewSmartContractLogParser added in v0.68.0

func NewSmartContractLogParser(validator contractAddressValidator,
	resolver assetResolver,
	decimalResolver tokenDecimalResolver,
	amtConverter amountConverter,
	vaultABI *abi.ABI,
) SmartContractLogParser

func (*SmartContractLogParser) ParseTransferOutAndCall added in v1.92.0

func (scp *SmartContractLogParser) ParseTransferOutAndCall(log etypes.Log) (*THORChainRouterTransferOutAndCall, error)

ParseTransferOutAndCall is a log parse operation binding the contract event 0xbda904e26adea40cc083dc36e80fde1641dfdd8b9a035c44022a43e713f73d36.

type SolvencyReporter added in v0.63.0

type SolvencyReporter func(int64) error

SolvencyReporter is to report solvency info to THORNode

type THORChainRouterTransferOutAndCall added in v1.92.0

type THORChainRouterTransferOutAndCall struct {
	Vault        ecommon.Address
	Target       ecommon.Address
	Amount       *big.Int
	FinalAsset   ecommon.Address
	To           ecommon.Address
	AmountOutMin *big.Int
	Memo         string
}

THORChainRouterTransferOutAndCall represents a TransferOutAndCall event raised by the THORChainRouter contract.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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