evm

package
v0.0.15 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	EventTypeSendFunds           = "sendFunds"
	EventTypeOutboundObservation = "outboundObservation"
)

Event type constants

View Source
const DefaultGasLimit = 500000

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

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 "sendFunds" or "outboundObservation"

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) 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) 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) GetNonceAt added in v0.0.13

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

GetNonceAt returns the nonce of an account at a specific block number (nil = latest)

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 RevertInstructions added in v0.0.13

type RevertInstructions struct {
	RevertRecipient ethcommon.Address
	RevertMsg       []byte
}

RevertInstructions represents the struct for revert instruction in gateway/vault contracts

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) GetOutboundSigningRequest added in v0.0.13

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

GetOutboundSigningRequest creates a signing request from outbound event data

type TxBuilderV2 added in v0.0.15

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

TxBuilderV2 implements OutboundTxBuilder for EVM chains (DEPRECATED - not active) This was designed for an older gateway contract version. Use TxBuilder for the current UniversalGatewayV0 contract.

func NewTxBuilderV2 added in v0.0.15

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

NewTxBuilderV2 creates a new EVM transaction builder (DEPRECATED)

func (*TxBuilderV2) BroadcastOutboundSigningRequest added in v0.0.15

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

BroadcastOutboundSigningRequest assembles and broadcasts a signed transaction from the signing request, event data, and signature

func (*TxBuilderV2) GetOutboundSigningRequest added in v0.0.15

func (tb *TxBuilderV2) GetOutboundSigningRequest(
	ctx context.Context,
	data *uetypes.OutboundCreatedEvent,
	gasPrice *big.Int,
	signerAddress string,
) (*common.UnSignedOutboundTxReq, error)

GetOutboundSigningRequest creates a signing request from outbound event data

Jump to

Keyboard shortcuts

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