evmtest

package
v2.0.0-rc.4 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2024 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Overview

Copyright (c) 2023-2024 Nibi, Inc.

Copyright (c) 2023-2024 Nibi, Inc.

Index

Constants

This section is empty.

Variables

View Source
var NextNoOpAnteHandler sdk.AnteHandler = func(
	ctx sdk.Context, tx sdk.Tx, simulate bool,
) (newCtx sdk.Context, err error) {
	return ctx, nil
}

Functions

func AssertERC20BalanceEqual

func AssertERC20BalanceEqual(
	t *testing.T,
	deps TestDeps,
	erc20, account gethcommon.Address,
	expectedBalance *big.Int,
)

func CreateContractMsgEthereumTx

func CreateContractMsgEthereumTx(
	args ArgsCreateContract,
) (msgEthereumTx *evm.MsgEthereumTx, err error)

func CreateFunTokenForBankCoin

func CreateFunTokenForBankCoin(
	deps *TestDeps, bankDenom string, s *suite.Suite,
) (funtoken evm.FunToken)

CreateFunTokenForBankCoin: Uses the "TestDeps.Sender" account to create a "FunToken" mapping for a new coin

func DeployAndExecuteERC20Transfer

func DeployAndExecuteERC20Transfer(
	deps *TestDeps, t *testing.T,
) (*evm.MsgEthereumTx, []*evm.MsgEthereumTx)

DeployAndExecuteERC20Transfer deploys contract, executes transfer and returns tx hash

func ExecuteContractMsgEthereumTx

func ExecuteContractMsgEthereumTx(args ArgsExecuteContract) (msgEthereumTx *evm.MsgEthereumTx, err error)

func ExecuteNibiTransfer

func ExecuteNibiTransfer(deps *TestDeps, t *testing.T) *evm.MsgEthereumTx

ExecuteNibiTransfer executes nibi transfer

func GasLimitCreateContract

func GasLimitCreateContract() *big.Int

func GenerateAndSignEthTxMsg

func GenerateAndSignEthTxMsg(
	jsonTxArgs evm.JsonTxArgs, deps *TestDeps,
) (*evm.MsgEthereumTx, error)

GenerateAndSignEthTxMsg estimates gas, sets gas limit and sings the tx

func HappyCreateContractTx

func HappyCreateContractTx(deps *TestDeps) *evm.MsgEthereumTx

func HappyTransferTx

func HappyTransferTx(deps *TestDeps, nonce uint64) *evm.MsgEthereumTx

func NewEthTxMsgAsCmt

func NewEthTxMsgAsCmt(t *testing.T) (
	txBz cmt.Tx,
	ethTxMsgs []*evm.MsgEthereumTx,
	clientCtx client.Context,
)

NewEthTxMsgAsCmt: Helper that returns an Ethereum tx msg converted into tx bytes used in the Consensus Engine.

func NewEthTxMsgFromTxData

func NewEthTxMsgFromTxData(
	deps *TestDeps,
	txType GethTxType,
	innerTxData []byte,
	nonce uint64,
	to *gethcommon.Address,
	value *big.Int,
	gas uint64,
	accessList gethcore.AccessList,
) (*evm.MsgEthereumTx, error)

func NewEthTxMsgs

func NewEthTxMsgs(count uint64) (ethTxMsgs []*evm.MsgEthereumTx)

func NewSigner

func NewSigner(sk cryptotypes.PrivKey) keyring.Signer

func NonEvmMsgTx

func NonEvmMsgTx(deps *TestDeps) sdk.Tx

func TransferWei

func TransferWei(
	deps *TestDeps,
	to gethcommon.Address,
	amountWei *big.Int,
) error

func TxTemplateAccessListTx

func TxTemplateAccessListTx() *gethcore.AccessListTx

func TxTemplateDynamicFeeTx

func TxTemplateDynamicFeeTx() *gethcore.DynamicFeeTx

func TxTemplateLegacyTx

func TxTemplateLegacyTx() *gethcore.LegacyTx

func ValidLegacyTx

func ValidLegacyTx() *evm.LegacyTx

ValidLegacyTx: Useful initial condition for tests Exported only for use in tests.

Types

type ArgsCreateContract

type ArgsCreateContract struct {
	EthAcc        EthPrivKeyAcc
	EthChainIDInt *big.Int
	GasPrice      *big.Int
	Nonce         uint64
	GasLimit      *big.Int
}

ArgsCreateContract: Arguments to call with `CreateContractTxMsg` to make Ethereum transactions that create contracts.

It is recommended to use a gas price of `big.NewInt(1)` for simpler op code calculations in gas units.

type ArgsExecuteContract

type ArgsExecuteContract struct {
	EthAcc          EthPrivKeyAcc
	EthChainIDInt   *big.Int
	ContractAddress *gethcommon.Address
	Data            []byte
	GasPrice        *big.Int
	Nonce           uint64
	GasLimit        *big.Int
}

ArgsExecuteContract: Arguments to call with `ExecuteContractTxMsg` to make Ethereum transactions that execute contracts.

type DeployContractResult

type DeployContractResult struct {
	TxResp       *evm.MsgEthereumTxResponse
	EthTxMsg     *evm.MsgEthereumTx
	ContractData embeds.CompiledEvmContract
	Nonce        uint64
	ContractAddr gethcommon.Address
}

func DeployContract

func DeployContract(
	deps *TestDeps,
	contract embeds.CompiledEvmContract,
	args ...any,
) (result *DeployContractResult, err error)

type EthPrivKeyAcc

type EthPrivKeyAcc struct {
	EthAddr       gethcommon.Address
	NibiruAddr    sdk.AccAddress
	PrivKey       *ethsecp256k1.PrivKey
	KeyringSigner keyring.Signer
}

func NewEthPrivAcc

func NewEthPrivAcc() EthPrivKeyAcc

NewEthPrivAcc returns an Ethereum private key, its corresponding Eth address, Nibiru address, and keyring signer.

func NewEthPrivAccs

func NewEthPrivAccs(n int) []EthPrivKeyAcc

NewEthPrivAccs calls [NewEthAccInfo] n times.

type GethTxType

type GethTxType = uint8

type Signer

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

Signer defines a type that is used on testing for signing MsgEthereumTx

func (Signer) Sign

func (s Signer) Sign(_ string, msg []byte) ([]byte, cryptotypes.PubKey, error)

Sign signs the message using the underlying private key

func (Signer) SignByAddress

func (s Signer) SignByAddress(address sdk.Address, msg []byte) ([]byte, cryptotypes.PubKey, error)

SignByAddress sign byte messages with a user key providing the address.

type TestDeps

type TestDeps struct {
	App       *app.NibiruApp
	Ctx       sdk.Context
	EncCfg    codec.EncodingConfig
	EvmKeeper keeper.Keeper
	GenState  *evm.GenesisState
	Sender    EthPrivKeyAcc
}

func NewTestDeps

func NewTestDeps() TestDeps

func (*TestDeps) GethSigner

func (deps *TestDeps) GethSigner() gethcore.Signer

func (TestDeps) StateDB

func (deps TestDeps) StateDB() *statedb.StateDB

Jump to

Keyboard shortcuts

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