util

package
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2023 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEvmBroadcastTimeout = errors.New("timed out waiting for tx to be committed to block")
	// ErrEvmTxFailed is returned when a tx is committed to a block, but the receipt status is 0.
	// this means the tx failed. we don't have debug_traceTransaction RPC command so the best way
	// to determine the problem is to attempt to make the tx manually.
	ErrEvmTxFailed = errors.New("transaction was committed but failed. likely an execution revert by contract code")
)
View Source
var (
	ErrSdkBroadcastTimeout = errors.New("timed out waiting for tx to be committed to block")
)

Functions

func BuildErc20ApproveCallData

func BuildErc20ApproveCallData(spender common.Address, amount *big.Int) []byte

func BuildErc20BalanceOfCallData

func BuildErc20BalanceOfCallData(address common.Address) []byte

func BuildErc20BurnCallData

func BuildErc20BurnCallData(from common.Address, amount *big.Int) []byte

func BuildErc20MintCallData

func BuildErc20MintCallData(to common.Address, amount *big.Int) []byte

func BuildErc20TransferCallData

func BuildErc20TransferCallData(to common.Address, amount *big.Int) []byte

func BuildErc20TransferFromCallData

func BuildErc20TransferFromCallData(from common.Address, to common.Address, amount *big.Int) []byte

func CtxAtHeight

func CtxAtHeight(height int64) context.Context

func EvmContractMethodId

func EvmContractMethodId(signature string) []byte

EvmContractMethodId encodes a method signature to the method id used in eth calldata.

func EvmToSdkAddress

func EvmToSdkAddress(addr common.Address) sdk.AccAddress

func GetAccAddress

func GetAccAddress(privKey cryptotypes.PrivKey) sdk.AccAddress

func NewGrpcConnection

func NewGrpcConnection(endpoint string) (*grpc.ClientConn, error)

NewGrpcConnection parses a GRPC endpoint and creates a connection to it

func PrettyPrintCoins

func PrettyPrintCoins(coins sdk.Coins) string

func SdkToEvmAddress

func SdkToEvmAddress(addr sdk.AccAddress) common.Address

func Sign

func Sign(
	txConfig sdkclient.TxConfig,
	privKey cryptotypes.PrivKey,
	txBuilder sdkclient.TxBuilder,
	signerData authsigning.SignerData,
) (authsigning.Tx, []byte, error)

Sign signs a populated TxBuilder and returns a signed Tx and raw transaction bytes

func WaitForEvmTxReceipt

func WaitForEvmTxReceipt(client *ethclient.Client, txHash common.Hash, timeout time.Duration) (*ethtypes.Receipt, error)

WaitForEvmTxReceipt polls for a tx receipt and errors on timeout. If the receipt comes back, but with status 0 (failed), an error is returned.

func WaitForSdkTxCommit

func WaitForSdkTxCommit(txClient txtypes.ServiceClient, txHash string, timeout time.Duration) (*sdk.TxResponse, error)

WaitForSdkTxCommit polls the chain until the tx hash is found or times out. Returns an error immediately if tx hash is empty

Types

type ErrEvmFailedToBroadcast

type ErrEvmFailedToBroadcast struct{ Err error }

func (ErrEvmFailedToBroadcast) Error

func (e ErrEvmFailedToBroadcast) Error() string

type ErrEvmFailedToSign

type ErrEvmFailedToSign struct{ Err error }

func (ErrEvmFailedToSign) Error

func (e ErrEvmFailedToSign) Error() string

type EvmSigner

type EvmSigner struct {
	Auth      *bind.TransactOpts
	EvmClient *ethclient.Client
	// contains filtered or unexported fields
}

EvmSigner manages signing and broadcasting requests to transfer Erc20 tokens Will work for calling all contracts that have func signature `transfer(address,uint256)`

func NewEvmSigner

func NewEvmSigner(
	evmClient *ethclient.Client,
	privKey *ecdsa.PrivateKey,
	chainId *big.Int,
) (*EvmSigner, error)

func (*EvmSigner) Address

func (s *EvmSigner) Address() common.Address

func (*EvmSigner) Run

func (s *EvmSigner) Run(requests <-chan EvmTxRequest) <-chan EvmTxResponse

type EvmTxRequest

type EvmTxRequest struct {
	Tx   *ethtypes.Transaction
	Data interface{}
}

type EvmTxResponse

type EvmTxResponse struct {
	Request EvmTxRequest
	TxHash  common.Hash
	Err     error
}

type NemoMsgRequest

type NemoMsgRequest struct {
	Msgs      []sdk.Msg
	GasLimit  uint64
	FeeAmount sdk.Coins
	Memo      string
	// Arbitrary data to be referenced in the corresponding NemoMsgResponse, unused
	// in signing. This is mostly useful to match NemoMsgResponses with NemoMsgRequests.
	Data interface{}
}

type NemoMsgResponse

type NemoMsgResponse struct {
	Request NemoMsgRequest
	Tx      authsigning.Tx
	TxBytes []byte
	Result  sdk.TxResponse
	Err     error
}

type NemoSigner

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

NemoSigner broadcasts msgs to a single nemo node

func NewNemoSigner

func NewNemoSigner(
	chainID string,
	encodingConfig params.EncodingConfig,
	authClient authtypes.QueryClient,
	txClient txtypes.ServiceClient,
	privKey cryptotypes.PrivKey,
	inflightTxLimit uint64) *NemoSigner

func (*NemoSigner) Address

func (s *NemoSigner) Address() sdk.AccAddress

Address returns the address of the Signer

func (*NemoSigner) Run

func (s *NemoSigner) Run(requests <-chan NemoMsgRequest) (<-chan NemoMsgResponse, error)

Jump to

Keyboard shortcuts

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