evm

package
v0.0.16 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2026 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventTypeSendFunds          = "sendFunds"
	EventTypeExecuteUniversalTx = "executeUniversalTx" // UniversalTxExecuted on-chain event
	EventTypeRevertUniversalTx  = "revertUniversalTx"  // RevertUniversalTx on-chain event
)

Event type constants matching gateway method names in chain config.

View Source
const DefaultGasLimitV0 = 500000

DefaultGasLimitV0 is used when gas limit is not provided in the outbound event data

Variables

This section is empty.

Functions

func ParseEvent added in v0.0.13

func ParseEvent(log *types.Log, eventType string, chainID string, logger zerolog.Logger) *store.Event

ParseEvent parses a log into a store.Event based on the event type. eventType should be one of: sendFunds, executeUniversalTx, revertUniversalTx.

Types

type Client

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

Client implements the ChainClient interface for EVM chains

func NewClient

func NewClient(
	config *uregistrytypes.ChainConfig,
	database *db.DB,
	chainConfig *config.ChainSpecificConfig,
	pushSigner *pushsigner.Signer,
	logger zerolog.Logger,
) (*Client, error)

NewClient creates a new EVM chain client

func (*Client) ChainID added in v0.0.13

func (c *Client) ChainID() string

ChainID returns the chain ID string

func (*Client) GetConfig added in v0.0.13

func (c *Client) GetConfig() *uregistrytypes.ChainConfig

GetConfig returns the registry chain config

func (*Client) GetTxBuilder added in v0.0.13

func (c *Client) GetTxBuilder() (common.OutboundTxBuilder, error)

GetTxBuilder returns the OutboundTxBuilder for this chain

func (*Client) IsHealthy

func (c *Client) IsHealthy() bool

IsHealthy checks if the EVM chain RPC client is healthy

func (*Client) Start

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

Start initializes and starts the EVM chain client

func (*Client) Stop

func (c *Client) Stop() error

Stop gracefully shuts down the EVM chain client

type EventConfirmer added in v0.0.13

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

EventConfirmer periodically checks pending events and marks them as CONFIRMED once their transactions are confirmed on-chain.

func NewEventConfirmer added in v0.0.13

func NewEventConfirmer(
	rpcClient *RPCClient,
	database *db.DB,
	chainID string,
	pollIntervalSeconds int,
	fastConfirmations uint64,
	standardConfirmations uint64,
	logger zerolog.Logger,
) *EventConfirmer

NewEventConfirmer creates a new event confirmer

func (*EventConfirmer) Start added in v0.0.13

func (ec *EventConfirmer) Start(ctx context.Context) error

Start begins checking and confirming events

func (*EventConfirmer) Stop added in v0.0.13

func (ec *EventConfirmer) Stop()

Stop stops the event confirmer

type EventListener added in v0.0.13

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

EventListener listens for gateway events on EVM chains and stores them in the database

func NewEventListener added in v0.0.13

func NewEventListener(
	rpcClient *RPCClient,
	gatewayAddress string,
	chainID string,
	gatewayMethods []*uregistrytypes.GatewayMethods,
	database *db.DB,
	eventPollingSeconds int,
	eventStartFrom *int64,
	logger zerolog.Logger,
) (*EventListener, error)

NewEventListener creates a new EVM event listener

func (*EventListener) IsRunning added in v0.0.13

func (el *EventListener) IsRunning() bool

IsRunning returns whether the listener is currently running

func (*EventListener) Start added in v0.0.13

func (el *EventListener) Start(ctx context.Context) error

Start begins listening for gateway events

func (*EventListener) Stop added in v0.0.13

func (el *EventListener) Stop() error

Stop gracefully stops the event listener

type GasOracle added in v0.0.13

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

GasOracle handles fetching and reporting gas prices

func NewGasOracle added in v0.0.13

func NewGasOracle(
	rpcClient *RPCClient,
	pushSigner *pushsigner.Signer,
	chainID string,
	gasPriceIntervalSeconds int,
	logger zerolog.Logger,
) *GasOracle

NewGasOracle creates a new gas oracle

func (*GasOracle) Start added in v0.0.13

func (g *GasOracle) Start(ctx context.Context) error

Start begins fetching and voting on gas prices

func (*GasOracle) Stop added in v0.0.13

func (g *GasOracle) Stop()

Stop stops the gas oracle

type RPCClient added in v0.0.13

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

RPCClient provides EVM-specific RPC operations

func NewRPCClient added in v0.0.13

func NewRPCClient(rpcURLs []string, expectedChainID int64, logger zerolog.Logger) (*RPCClient, error)

NewRPCClient creates a new EVM RPC client from RPC URLs and validates chain ID

func (*RPCClient) BroadcastTransaction added in v0.0.13

func (rc *RPCClient) BroadcastTransaction(ctx context.Context, tx *types.Transaction) (string, error)

BroadcastTransaction broadcasts a signed transaction and returns the transaction hash

func (*RPCClient) CallContract added in v0.0.13

func (rc *RPCClient) CallContract(ctx context.Context, contractAddr ethcommon.Address, data []byte, blockNumber *big.Int) ([]byte, error)

CallContract calls a contract method and returns the result

func (*RPCClient) CallContractWithFrom added in v0.0.16

func (rc *RPCClient) CallContractWithFrom(ctx context.Context, from, contractAddr ethcommon.Address, data []byte, value *big.Int, blockNumber *big.Int) ([]byte, error)

CallContractWithFrom simulates a contract call as if from the given address (eth_call). No private key needed - use for simulation to check if a tx would pass or fail.

func (*RPCClient) Close added in v0.0.13

func (rc *RPCClient) Close()

Close closes all RPC connections

func (*RPCClient) FilterLogs added in v0.0.13

func (rc *RPCClient) FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error)

FilterLogs fetches logs matching the filter query

func (*RPCClient) GetFinalizedNonce added in v0.0.16

func (rc *RPCClient) GetFinalizedNonce(ctx context.Context, address ethcommon.Address, blockNum *big.Int) (uint64, error)

GetFinalizedNonce returns the finalized nonce at a block.

func (*RPCClient) GetGasPrice added in v0.0.13

func (rc *RPCClient) GetGasPrice(ctx context.Context) (*big.Int, error)

GetGasPrice fetches the current gas price

func (*RPCClient) GetLatestBlock added in v0.0.13

func (rc *RPCClient) GetLatestBlock(ctx context.Context) (uint64, error)

GetLatestBlock returns the latest block number

func (*RPCClient) GetPendingNonce added in v0.0.16

func (rc *RPCClient) GetPendingNonce(ctx context.Context, address ethcommon.Address) (uint64, error)

GetPendingNonce returns the pending nonce (next nonce the chain will accept for this account).

func (*RPCClient) GetTransactionReceipt added in v0.0.13

func (rc *RPCClient) GetTransactionReceipt(ctx context.Context, txHash ethcommon.Hash) (*types.Receipt, error)

GetTransactionReceipt fetches a transaction receipt

func (*RPCClient) IsHealthy added in v0.0.13

func (rc *RPCClient) IsHealthy(ctx context.Context) bool

IsHealthy checks if any RPC in the pool is healthy by pinging it

type RevertInstructionsV0 added in v0.0.15

type RevertInstructionsV0 struct {
	FundRecipient ethcommon.Address
	RevertMsg     []byte
}

RevertInstructionsV0 represents the struct for revert instruction in UniversalGatewayV0 contract Matches: struct RevertInstructions { address fundRecipient; bytes revertMsg; }

type TxBuilder added in v0.0.13

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

TxBuilder implements OutboundTxBuilder for EVM chains using UniversalGatewayV0 contract

func NewTxBuilder added in v0.0.13

func NewTxBuilder(
	rpcClient *RPCClient,
	chainID string,
	chainIDInt int64,
	gatewayAddress string,
	logger zerolog.Logger,
) (*TxBuilder, error)

NewTxBuilder creates a new EVM transaction builder for UniversalGatewayV0

func (*TxBuilder) BroadcastOutboundSigningRequest added in v0.0.13

func (tb *TxBuilder) BroadcastOutboundSigningRequest(
	ctx context.Context,
	req *common.UnSignedOutboundTxReq,
	data *uetypes.OutboundCreatedEvent,
	signature []byte,
) (string, error)

BroadcastOutboundSigningRequest assembles and broadcasts a signed transaction

func (*TxBuilder) GetNextNonce added in v0.0.16

func (tb *TxBuilder) GetNextNonce(ctx context.Context, signerAddress string, useFinalized bool) (uint64, error)

GetNextNonce returns the next nonce for the signer. useFinalized: if true, use nonce at latest block (aggressive, allows replacing stuck txs); if false, use pending.

func (*TxBuilder) GetOutboundSigningRequest added in v0.0.13

func (tb *TxBuilder) GetOutboundSigningRequest(
	ctx context.Context,
	data *uetypes.OutboundCreatedEvent,
	gasPrice *big.Int,
	nonce uint64,
) (*common.UnSignedOutboundTxReq, error)

GetOutboundSigningRequest creates a signing request from outbound event data

func (*TxBuilder) VerifyBroadcastedTx added in v0.0.16

func (tb *TxBuilder) VerifyBroadcastedTx(ctx context.Context, txHash string) (found bool, blockHeight uint64, confirmations uint64, status uint8, err error)

VerifyBroadcastedTx checks the status of a broadcasted transaction on the EVM chain.

Jump to

Keyboard shortcuts

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