evm

package
v1.12.0 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2026 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TriggerInputTxHash     = "evm-tx-hash"
	TriggerInputEventIndex = "evm-event-index"
)

CLI input keys consumed from chain.TriggerParams.ChainTypeInputs.

Variables

View Source
var SupportedChains = []chain.ChainConfig{

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA.Selector, Forwarder: "0x15fC6ae953E024d975e77382eEeC56A9101f9F88"},
	{Selector: chainselectors.ETHEREUM_MAINNET.Selector, Forwarder: "0xa3d1ad4ac559a6575a114998affb2fb2ec97a7d9"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_BASE_1.Selector, Forwarder: "0x82300bd7c3958625581cc2f77bc6464dcecdf3e5"},
	{Selector: chainselectors.ETHEREUM_MAINNET_BASE_1.Selector, Forwarder: "0x5e342a8438b4f5d39e72875fcee6f76b39cce548"},

	{Selector: chainselectors.AVALANCHE_TESTNET_FUJI.Selector, Forwarder: "0x2e7371a5d032489e4f60216d8d898a4c10805963"},
	{Selector: chainselectors.AVALANCHE_MAINNET.Selector, Forwarder: "0xdc21e279934ff6721cadfdd112dafb3261f09a2c"},

	{Selector: chainselectors.POLYGON_TESTNET_AMOY.Selector, Forwarder: "0x3675a5eb2286a3f87e8278fc66edf458a2e3bb74"},
	{Selector: chainselectors.POLYGON_MAINNET.Selector, Forwarder: "0xf458d621885e29a5003ea9bbba5280d54e19b1ce"},

	{Selector: chainselectors.BINANCE_SMART_CHAIN_TESTNET.Selector, Forwarder: "0xa238e42cb8782808dbb2f37e19859244ec4779b0"},
	{Selector: chainselectors.BINANCE_SMART_CHAIN_MAINNET.Selector, Forwarder: "0x6f3239bbb26e98961e1115aba83f8a282e5508c8"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_ARBITRUM_1.Selector, Forwarder: "0xd41263567ddfead91504199b8c6c87371e83ca5d"},
	{Selector: chainselectors.ETHEREUM_MAINNET_ARBITRUM_1.Selector, Forwarder: "0xd770499057619c9a76205fd4168161cf94abc532"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_OPTIMISM_1.Selector, Forwarder: "0xa2888380dff3704a8ab6d1cd1a8f69c15fea5ee3"},
	{Selector: chainselectors.ETHEREUM_MAINNET_OPTIMISM_1.Selector, Forwarder: "0x9119a1501550ed94a3f2794038ed9258337afa18"},

	{Selector: chainselectors.PRIVATE_TESTNET_ANDESITE.Selector, Forwarder: "0xcF4629d8DC7a5fa17F4D77233F5b953225669821"},

	{Selector: chainselectors.ETHEREUM_MAINNET_ZKSYNC_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_ZKSYNC_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.JOVAY_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.JOVAY_MAINNET.Selector, Forwarder: "0x2B3068C4B288A2CD1f8B3613b8f33ef7cEecadC4"},

	{Selector: chainselectors.PHAROS_ATLANTIC_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.PHAROS_MAINNET.Selector, Forwarder: "0x2B3068C4B288A2CD1f8B3613b8f33ef7cEecadC4"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_WORLDCHAIN_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_MAINNET_WORLDCHAIN_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.PLASMA_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.PLASMA_MAINNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_LINEA_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_MAINNET_LINEA_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.INK_TESTNET_SEPOLIA.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_MAINNET_INK_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.HYPERLIQUID_TESTNET.Selector, Forwarder: "0xB27fA1c28288c50542527F64BCda22C9FbAc24CB"},
	{Selector: chainselectors.HYPERLIQUID_MAINNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.APECHAIN_TESTNET_CURTIS.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.ARC_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.XLAYER_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_MAINNET_XLAYER_1.Selector, Forwarder: "0x2B3068C4B288A2CD1f8B3613b8f33ef7cEecadC4"},

	{Selector: chainselectors.MEGAETH_TESTNET_2.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.MEGAETH_MAINNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.CELO_MAINNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.GNOSIS_CHAIN_TESTNET_CHIADO.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.GNOSIS_CHAIN_MAINNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.CRONOS_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_MANTLE_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_MAINNET_MANTLE_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.TAC_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_UNICHAIN_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.ETHEREUM_TESTNET_SEPOLIA_SCROLL_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.ETHEREUM_MAINNET_SCROLL_1.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.SONIC_TESTNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
	{Selector: chainselectors.SONIC_MAINNET.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},

	{Selector: chainselectors.DTCC_TESTNET_ANDESITE.Selector, Forwarder: "0x6E9EE680ef59ef64Aa8C7371279c27E496b5eDc1"},
}

SupportedChains is the canonical list of EVM chains supported for simulation.

Functions

func GetEVMTriggerLog

func GetEVMTriggerLog(ctx context.Context, ethClient *ethclient.Client) (*evmpb.Log, error)

GetEVMTriggerLog prompts user for EVM trigger data and fetches the log interactively.

func GetEVMTriggerLogFromValues

func GetEVMTriggerLogFromValues(ctx context.Context, ethClient *ethclient.Client, txHashStr string, eventIndex uint64) (*evmpb.Log, error)

GetEVMTriggerLogFromValues fetches a log given tx hash string and event index. Unlike GetEVMTriggerLog (interactive), this does not emit ui.Success messages to keep non-interactive/CI output clean.

func RunRPCHealthCheck

func RunRPCHealthCheck(clients map[uint64]chain.ChainClient, experimentalSelectors map[uint64]bool) error

RunRPCHealthCheck validates RPC connectivity for all configured EVM clients. The experimentalSelectors set identifies which selectors are experimental chains.

Types

type EVMChainCapabilities

type EVMChainCapabilities struct {
	EVMChains map[uint64]*fakes.FakeEVMChain
}

EVMChainCapabilities holds the EVM chain capability servers created for simulation.

func NewEVMChainCapabilities

func NewEVMChainCapabilities(
	ctx context.Context,
	lggr logger.Logger,
	registry *capabilities.Registry,
	clients map[uint64]*ethclient.Client,
	forwarders map[uint64]string,
	privateKey *ecdsa.PrivateKey,
	dryRunChainWrite bool,
	limits EVMChainLimits,
) (*EVMChainCapabilities, error)

NewEVMChainCapabilities creates EVM chain capability servers and registers them with the capability registry. Cron and HTTP triggers are not created here — they are chain-agnostic and managed by the simulate command directly.

func (*EVMChainCapabilities) Close

func (c *EVMChainCapabilities) Close() error

Close closes all EVM chains.

func (*EVMChainCapabilities) Start

func (c *EVMChainCapabilities) Start(ctx context.Context) error

Start starts all configured EVM chains.

type EVMChainLimits

type EVMChainLimits interface {
	chain.Limits
	ChainWriteGasLimit() uint64
}

EVMChainLimits is the EVM-scoped limit contract LimitedEVMChain enforces. It extends chain.Limits with EVM-specific accessors (e.g. gas limit) so non-EVM chain types cannot accidentally depend on EVM semantics.

type EVMChainType

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

EVMChainType implements chain.ChainType for EVM-based blockchains.

func (*EVMChainType) CollectCLIInputs

func (ct *EVMChainType) CollectCLIInputs(v *viper.Viper) map[string]string

func (*EVMChainType) ExecuteTrigger

func (ct *EVMChainType) ExecuteTrigger(ctx context.Context, selector uint64, registrationID string, triggerData interface{}) error

func (*EVMChainType) Name

func (ct *EVMChainType) Name() string

func (*EVMChainType) ParseTriggerChainSelector

func (ct *EVMChainType) ParseTriggerChainSelector(triggerID string) (uint64, bool)

func (*EVMChainType) RegisterCapabilities

func (ct *EVMChainType) RegisterCapabilities(ctx context.Context, cfg chain.CapabilityConfig) ([]services.Service, error)

func (*EVMChainType) ResolveClients

func (ct *EVMChainType) ResolveClients(v *viper.Viper) (chain.ResolvedChains, error)

func (*EVMChainType) ResolveKey

func (ct *EVMChainType) ResolveKey(creSettings *settings.Settings, broadcast bool) (interface{}, error)

ResolveKey parses the user's ECDSA private key from settings. When broadcast is true, an invalid or default-sentinel key is a hard error. Otherwise a sentinel key is used with a warning so non-broadcast simulations can run.

func (*EVMChainType) ResolveTriggerData

func (ct *EVMChainType) ResolveTriggerData(ctx context.Context, selector uint64, params chain.TriggerParams) (interface{}, error)

ResolveTriggerData fetches the EVM log payload for the given selector from CLI-supplied or interactively-prompted inputs.

func (*EVMChainType) RunHealthCheck

func (ct *EVMChainType) RunHealthCheck(resolved chain.ResolvedChains) error

func (*EVMChainType) SupportedChains

func (ct *EVMChainType) SupportedChains() []chain.ChainConfig

func (*EVMChainType) Supports

func (ct *EVMChainType) Supports(selector uint64) bool

Supports reports whether an EVM chain capability is live for the selector.

type LimitedEVMChain

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

LimitedEVMChain wraps an evmserver.ClientCapability and enforces chain write report size and gas limits.

func NewLimitedEVMChain

func NewLimitedEVMChain(inner evmserver.ClientCapability, limits EVMChainLimits) *LimitedEVMChain

func (*LimitedEVMChain) AckEvent

func (l *LimitedEVMChain) AckEvent(ctx context.Context, triggerId string, eventId string, method string) caperrors.Error

func (*LimitedEVMChain) ChainSelector

func (l *LimitedEVMChain) ChainSelector() uint64

func (*LimitedEVMChain) Close

func (l *LimitedEVMChain) Close() error

func (*LimitedEVMChain) Description

func (l *LimitedEVMChain) Description() string

func (*LimitedEVMChain) HealthReport

func (l *LimitedEVMChain) HealthReport() map[string]error

func (*LimitedEVMChain) Initialise

func (*LimitedEVMChain) Name

func (l *LimitedEVMChain) Name() string

func (*LimitedEVMChain) Ready

func (l *LimitedEVMChain) Ready() error

func (*LimitedEVMChain) RegisterLogTrigger

func (*LimitedEVMChain) Start

func (l *LimitedEVMChain) Start(ctx context.Context) error

func (*LimitedEVMChain) UnregisterLogTrigger

func (l *LimitedEVMChain) UnregisterLogTrigger(ctx context.Context, triggerID string, metadata commonCap.RequestMetadata, input *evmcappb.FilterLogTriggerRequest) caperrors.Error

Jump to

Keyboard shortcuts

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