Documentation
¶
Overview ¶
Package eth implements the bridge interfaces to support routering.
Index ¶
- Constants
- Variables
- func GetSwapInAndExecFuncHash(tokenCfg *tokens.TokenConfig) []byte
- func GetSwapInFuncHash(tokenCfg *tokens.TokenConfig, forUnderlying bool) []byte
- func VerifyMPCPubKey(mpcAddress, mpcPubkey string) error
- type Bridge
- func (b *Bridge) BuildRawTransaction(args *tokens.BuildTxArgs) (rawTx interface{}, err error)
- func (b *Bridge) CallContract(contract string, data hexutil.Bytes, blockNumber string) (string, error)
- func (b *Bridge) ChainID() (*big.Int, error)
- func (b *Bridge) EstimateGas(from, to string, value *big.Int, data []byte) (uint64, error)
- func (b *Bridge) FeeHistory(blockCount int, rewardPercentiles []float64) (*types.FeeHistoryResult, error)
- func (b *Bridge) GetBalance(account string) (*big.Int, error)
- func (b *Bridge) GetBaseFee(blockCount int) (*big.Int, error)
- func (b *Bridge) GetBlockByHash(blockHash string) (*types.RPCBlock, error)
- func (b *Bridge) GetBlockByNumber(number *big.Int) (*types.RPCBlock, error)
- func (b *Bridge) GetCode(contract string) (code []byte, err error)
- func (b *Bridge) GetContractCodeHash(contract common.Address) common.Hash
- func (b *Bridge) GetContractLogs(contractAddresses []common.Address, logTopics [][]common.Hash, ...) ([]*types.RPCLog, error)
- func (b *Bridge) GetEIP1167Master(proxy common.Address) (master common.Address)
- func (b *Bridge) GetErc20Balance(contract, address string) (*big.Int, error)
- func (b *Bridge) GetErc20Decimals(contract string) (uint8, error)
- func (b *Bridge) GetErc20TotalSupply(contract string) (*big.Int, error)
- func (b *Bridge) GetFactoryAddress(contractAddr string) (string, error)
- func (b *Bridge) GetLatestBlockNumber() (uint64, error)
- func (b *Bridge) GetLatestBlockNumberOf(url string) (latest uint64, err error)
- func (b *Bridge) GetLogs(filterQuery *types.FilterQuery) (result []*types.RPCLog, err error)
- func (b *Bridge) GetMPCAddress(contractAddr string) (string, error)
- func (b *Bridge) GetOwnerAddress(contractAddr string) (string, error)
- func (b *Bridge) GetPairFor(factory, token0, token1 string) (string, error)
- func (b *Bridge) GetPendingTransactions() (result []*types.RPCTransaction, err error)
- func (b *Bridge) GetPoolNonce(address, height string) (uint64, error)
- func (b *Bridge) GetSignedTxHashOfKeyID(sender, keyID string, rawTx interface{}) (txHash string, err error)
- func (b *Bridge) GetSignerChainID() (*big.Int, error)
- func (b *Bridge) GetTokenBalance(tokenType, tokenAddress, accountAddress string) (*big.Int, error)
- func (b *Bridge) GetTokenSupply(tokenType, tokenAddress string) (*big.Int, error)
- func (b *Bridge) GetTransaction(txHash string) (interface{}, error)
- func (b *Bridge) GetTransactionByBlockNumberAndIndex(blockNumber *big.Int, txIndex uint) (result *types.RPCTransaction, err error)
- func (b *Bridge) GetTransactionByHash(txHash string) (tx *types.RPCTransaction, err error)
- func (b *Bridge) GetTransactionReceipt(txHash string) (receipt *types.RPCTxReceipt, url string, err error)
- func (b *Bridge) GetTransactionStatus(txHash string) (*tokens.TxStatus, error)
- func (b *Bridge) GetUnderlyingAddress(contractAddr string) (string, error)
- func (b *Bridge) GetVaultAddress(contractAddr string) (string, error)
- func (b *Bridge) GetWNativeAddress(contractAddr string) (string, error)
- func (b *Bridge) InitAfterConfig()
- func (b *Bridge) InitExtraCustoms() error
- func (b *Bridge) InitRouterInfo(routerContract string) (err error)
- func (b *Bridge) IsContractAddress(address string) (bool, error)
- func (b *Bridge) IsMinter(contractAddr, minterAddr string) (bool, error)
- func (b *Bridge) IsValidAddress(address string) bool
- func (b *Bridge) MPCSignTransaction(rawTx interface{}, args *tokens.BuildTxArgs) (signTx interface{}, txHash string, err error)
- func (b *Bridge) NetworkID() (*big.Int, error)
- func (b *Bridge) PublicKeyToAddress(pubKey string) (string, error)
- func (b *Bridge) RegisterSwap(txHash string, args *tokens.RegisterArgs) ([]*tokens.SwapTxInfo, []error)
- func (b *Bridge) SendSignedTransaction(tx *types.Transaction) (txHash string, err error)
- func (b *Bridge) SendTransaction(signedTx interface{}) (txHash string, err error)
- func (b *Bridge) SetTokenConfig(tokenAddr string, tokenCfg *tokens.TokenConfig)
- func (b *Bridge) SignTransactionWithPrivateKey(rawTx interface{}, priKey string) (signTx interface{}, txHash string, err error)
- func (b *Bridge) SuggestGasTipCap() (maxGasTipCap *big.Int, err error)
- func (b *Bridge) SuggestPrice() (*big.Int, error)
- func (b *Bridge) VerifyMsgHash(rawTx interface{}, msgHashes []string) error
- func (b *Bridge) VerifyTransaction(txHash string, args *tokens.VerifyArgs) (*tokens.SwapTxInfo, error)
- type CustomConfig
Constants ¶
const (
ERC20TokenType = "ERC20"
)
token types (should be all upper case)
Variables ¶
var ( // LogAnyCall(address,address[],bytes[],address[],uint256[],uint256,uint256) LogAnyCallTopic = common.FromHex("0x3d1b3d059223895589208a5541dce543eab6d5942b3b1129231a942d1c47bc45") AnyExecFuncHash = common.FromHex("0x32f29022") // LogAnyCall(address,address,bytes,address,uint256) LogCurveAnyCallTopic = common.FromHex("0x9ca1de98ebed0a9c38ace93d3ca529edacbbe199cf1b6f0f416ae9b724d4a81c") CurveAnyExecFuncHash = common.FromHex("0xb4c5dbd0") )
anycall lot topics and func hashes
var ( ForceAnySwapInAutoTokenVersion = uint64(10001) ForceAnySwapInTokenVersion = uint64(10002) ForceAnySwapInUnderlyingTokenVersion = uint64(10003) ForceAnySwapInNativeTokenVersion = uint64(10004) ForceAnySwapInAndCallTokenVersion = uint64(10005) ForceAnySwapInUnerlyingAndCallTokenVersion = uint64(10006) // anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) AnySwapInFuncHash = common.FromHex("0x825bb13c") // anySwapInUnderlying(bytes32 txs, address token, address to, uint amount, uint fromChainID) AnySwapInUnderlyingFuncHash = common.FromHex("0x3f88de89") // anySwapInNative(bytes32 txs, address token, address to, uint amount, uint fromChainID) AnySwapInNativeFuncHash = common.FromHex("0x21974f28") // anySwapInAuto(bytes32 txs, address token, address to, uint amount, uint fromChainID) AnySwapInAutoFuncHash = common.FromHex("0x0175b1c4") // anySwapInExactTokensForTokens(bytes32 txs, uint amountIn, uint amountOutMin, address[] path, address to, uint deadline, uint fromChainID) AnySwapInExactTokensForTokensFuncHash = common.FromHex("0x2fc1e728") // anySwapInExactTokensForNative(bytes32 txs, uint amountIn, uint amountOutMin, address[] path, address to, uint deadline, uint fromChainID) AnySwapInExactTokensForNativeFuncHash = common.FromHex("0x52a397d5") // anySwapInAndExec(bytes32 txs, address token, address to, uint amount, uint fromChainID, address anycallProxy, bytes calldata data) AnySwapInAndExecFuncHash = common.FromHex("0x22db7336") // anySwapInUnderlyingAndExec(bytes32 txs, address token, address to, uint amount, uint fromChainID, address anycallProxy, bytes calldata data) AnySwapInUnderlyingAndExecFuncHash = common.FromHex("0x302ef85a") )
router contract's func hashs
var ( // LogNFT721SwapOut(address,address,address,uint256,uint256,uint256); LogNFT721SwapOutTopic = common.FromHex("0x0d45b0b9f5add3e1bb841982f1fa9303628b0b619b000cb1f9f1c3903329a4c7") // LogNFT1155SwapOut(addressindexedtoken,address,address,uint256,uint256,uint256,uint256) LogNFT1155SwapOutTopic = common.FromHex("0x5058b8684cf36ffd9f66bc623fbc617a44dd65cf2273306d03d3104af0995cb0") // LogNFT1155SwapOutBatch(address,address,address,uint256[],uint256[],uint256,uint256) LogNFT1155SwapOutBatchTopic = common.FromHex("0xaa428a5ab688b49b415401782c170d216b33b15711d30cf69482f570eca8db38") )
nft swap log topics and func hashes
var ( // LogAnySwapOut(address token, address from, address to, uint amount, uint fromChainID, uint toChainID); LogAnySwapOutTopic = common.FromHex("0x97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a") // LogAnySwapOut(address token, address from, string to, uint amount, uint fromChainID, uint toChainID); LogAnySwapOut2Topic = common.FromHex("0x409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b79") // LogAnySwapOutAndCall(address token, address from, string to, uint amount, uint fromChainID, uint toChainID, string anycallProxy, bytes data); LogAnySwapOutAndCallTopic = common.FromHex("0x8e7e5695fff09074d4c7d6c71615fd382427677f75f460c522357233f3bd3ec3") // LogAnySwapTradeTokensForTokens(address[] path, address from, address to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID); LogAnySwapTradeTokensForTokensTopic = common.FromHex("0xfea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b3") // LogAnySwapTradeTokensForNative(address[] path, address from, address to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID); LogAnySwapTradeTokensForNativeTopic = common.FromHex("0x278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f4") )
router contract's log topics
var ( // LogNFT721SwapOut(address,address,address,uint256,uint256,uint256,bytes); LogNFT721SwapOutWithDataTopic = common.FromHex("0x8ef0d7d8b96825500b3d692d995a543110f8a93f16b7be5d23b5960fd4363bdc") )
nft swap with data log topics and func hashes
Functions ¶
func GetSwapInAndExecFuncHash ¶ added in v3.5.1
func GetSwapInAndExecFuncHash(tokenCfg *tokens.TokenConfig) []byte
GetSwapInAndExecFuncHash get swapin and call func hash
func GetSwapInFuncHash ¶ added in v3.4.0
func GetSwapInFuncHash(tokenCfg *tokens.TokenConfig, forUnderlying bool) []byte
GetSwapInFuncHash get swapin func hash
func VerifyMPCPubKey ¶ added in v3.5.0
VerifyMPCPubKey verify mpc address and public key is matching
Types ¶
type Bridge ¶
type Bridge struct {
CustomConfig
*base.NonceSetterBase
Signer types.Signer
SignerChainID *big.Int
}
Bridge eth bridge
func (*Bridge) BuildRawTransaction ¶
func (b *Bridge) BuildRawTransaction(args *tokens.BuildTxArgs) (rawTx interface{}, err error)
BuildRawTransaction build raw tx
func (*Bridge) CallContract ¶
func (b *Bridge) CallContract(contract string, data hexutil.Bytes, blockNumber string) (string, error)
CallContract call eth_call
func (*Bridge) ChainID ¶
ChainID call eth_chainId Notice: eth_chainId return 0x0 for mainnet which is wrong (use net_version instead)
func (*Bridge) EstimateGas ¶
EstimateGas call eth_estimateGas
func (*Bridge) FeeHistory ¶ added in v3.3.0
func (b *Bridge) FeeHistory(blockCount int, rewardPercentiles []float64) (*types.FeeHistoryResult, error)
FeeHistory call eth_feeHistory
func (*Bridge) GetBalance ¶
GetBalance call eth_getBalance
func (*Bridge) GetBaseFee ¶ added in v3.3.0
GetBaseFee get base fee
func (*Bridge) GetBlockByHash ¶
GetBlockByHash call eth_getBlockByHash
func (*Bridge) GetBlockByNumber ¶
GetBlockByNumber call eth_getBlockByNumber
func (*Bridge) GetContractCodeHash ¶ added in v3.5.0
GetContractCodeHash get contract code hash
func (*Bridge) GetContractLogs ¶
func (b *Bridge) GetContractLogs(contractAddresses []common.Address, logTopics [][]common.Hash, blockHeight uint64) ([]*types.RPCLog, error)
GetContractLogs get contract logs
func (*Bridge) GetEIP1167Master ¶ added in v3.5.0
GetEIP1167Master get eip1167 master address
func (*Bridge) GetErc20Balance ¶
GetErc20Balance get erc20 balacne of address
func (*Bridge) GetErc20Decimals ¶
GetErc20Decimals get erc20 decimals
func (*Bridge) GetErc20TotalSupply ¶
GetErc20TotalSupply get erc20 total supply of address
func (*Bridge) GetFactoryAddress ¶
GetFactoryAddress call "factory()"
func (*Bridge) GetLatestBlockNumber ¶
GetLatestBlockNumber call eth_blockNumber
func (*Bridge) GetLatestBlockNumberOf ¶
GetLatestBlockNumberOf call eth_blockNumber
func (*Bridge) GetMPCAddress ¶
GetMPCAddress call "mpc()"
func (*Bridge) GetOwnerAddress ¶
GetOwnerAddress call "owner()"
func (*Bridge) GetPairFor ¶
GetPairFor call "getPair(address,address)"
func (*Bridge) GetPendingTransactions ¶
func (b *Bridge) GetPendingTransactions() (result []*types.RPCTransaction, err error)
GetPendingTransactions call eth_pendingTransactions
func (*Bridge) GetPoolNonce ¶
GetPoolNonce call eth_getTransactionCount
func (*Bridge) GetSignedTxHashOfKeyID ¶ added in v3.4.0
func (b *Bridge) GetSignedTxHashOfKeyID(sender, keyID string, rawTx interface{}) (txHash string, err error)
GetSignedTxHashOfKeyID get signed tx hash by keyID (called by oracle)
func (*Bridge) GetSignerChainID ¶
GetSignerChainID default way to get signer chain id use chain ID first, if missing then use network ID instead. normally this way works, but sometimes it failed (eg. ETC), then we should overwrite this function NOTE: call after chain config setted
func (*Bridge) GetTokenBalance ¶
GetTokenBalance api
func (*Bridge) GetTokenSupply ¶
GetTokenSupply impl
func (*Bridge) GetTransaction ¶
GetTransaction impl
func (*Bridge) GetTransactionByBlockNumberAndIndex ¶ added in v3.4.0
func (b *Bridge) GetTransactionByBlockNumberAndIndex(blockNumber *big.Int, txIndex uint) (result *types.RPCTransaction, err error)
GetTransactionByBlockNumberAndIndex get tx by block number and tx index
func (*Bridge) GetTransactionByHash ¶
func (b *Bridge) GetTransactionByHash(txHash string) (tx *types.RPCTransaction, err error)
GetTransactionByHash call eth_getTransactionByHash
func (*Bridge) GetTransactionReceipt ¶
func (b *Bridge) GetTransactionReceipt(txHash string) (receipt *types.RPCTxReceipt, url string, err error)
GetTransactionReceipt call eth_getTransactionReceipt
func (*Bridge) GetTransactionStatus ¶
GetTransactionStatus impl
func (*Bridge) GetUnderlyingAddress ¶
GetUnderlyingAddress call "underlying()"
func (*Bridge) GetVaultAddress ¶
GetVaultAddress call "vault()"
func (*Bridge) GetWNativeAddress ¶ added in v3.2.1
GetWNativeAddress call "wNATIVE()"
func (*Bridge) InitAfterConfig ¶ added in v3.5.0
func (b *Bridge) InitAfterConfig()
InitAfterConfig init variables (ie. extra members) after loading config
func (*Bridge) InitExtraCustoms ¶ added in v3.5.0
InitExtraCustoms init extra customs
func (*Bridge) InitRouterInfo ¶ added in v3.5.0
InitRouterInfo init router info
func (*Bridge) IsContractAddress ¶
IsContractAddress is contract address
func (*Bridge) IsValidAddress ¶
IsValidAddress check address
func (*Bridge) MPCSignTransaction ¶
func (b *Bridge) MPCSignTransaction(rawTx interface{}, args *tokens.BuildTxArgs) (signTx interface{}, txHash string, err error)
MPCSignTransaction mpc sign raw tx
func (*Bridge) PublicKeyToAddress ¶ added in v3.5.2
PublicKeyToAddress public key to address
func (*Bridge) RegisterSwap ¶
func (b *Bridge) RegisterSwap(txHash string, args *tokens.RegisterArgs) ([]*tokens.SwapTxInfo, []error)
RegisterSwap api
func (*Bridge) SendSignedTransaction ¶
func (b *Bridge) SendSignedTransaction(tx *types.Transaction) (txHash string, err error)
SendSignedTransaction call eth_sendRawTransaction
func (*Bridge) SendTransaction ¶
SendTransaction send signed tx
func (*Bridge) SetTokenConfig ¶ added in v3.5.2
func (b *Bridge) SetTokenConfig(tokenAddr string, tokenCfg *tokens.TokenConfig)
SetTokenConfig set token config
func (*Bridge) SignTransactionWithPrivateKey ¶ added in v3.5.0
func (b *Bridge) SignTransactionWithPrivateKey(rawTx interface{}, priKey string) (signTx interface{}, txHash string, err error)
SignTransactionWithPrivateKey sign tx with private key (use for testing)
func (*Bridge) SuggestGasTipCap ¶ added in v3.3.0
SuggestGasTipCap call eth_maxPriorityFeePerGas
func (*Bridge) SuggestPrice ¶
SuggestPrice call eth_gasPrice
func (*Bridge) VerifyMsgHash ¶
VerifyMsgHash verify msg hash
func (*Bridge) VerifyTransaction ¶
func (b *Bridge) VerifyTransaction(txHash string, args *tokens.VerifyArgs) (*tokens.SwapTxInfo, error)
VerifyTransaction api
type CustomConfig ¶ added in v3.5.1
type CustomConfig struct {
// some chain's rpc is slow and need config a longer rpc timeout
RPCClientTimeout int
// eg. RSK chain do not check mixed case or not same as eth
DontCheckAddressMixedCase bool
}
CustomConfig custom config
func NewCustomConfig ¶ added in v3.5.1
func NewCustomConfig() CustomConfig
NewCustomConfig new custom config