util

package
v0.0.0-...-04b9a03 Latest Latest
Warning

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

Go to latest
Published: May 28, 2023 License: Apache-2.0 Imports: 33 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 BuildErc20BalanceOfCallData

func BuildErc20BalanceOfCallData(address common.Address) []byte

func BuildErc20TransferCallData

func BuildErc20TransferCallData(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 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 BlackMsgRequest

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

type BlackMsgResponse

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

type BlackSigner

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

BlackSigner broadcasts msgs to a single black node

func NewBlackSigner

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

func (*BlackSigner) Address

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

Address returns the address of the Signer

func (*BlackSigner) Run

func (s *BlackSigner) Run(requests <-chan BlackMsgRequest) (<-chan BlackMsgResponse, error)

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
}

Jump to

Keyboard shortcuts

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