blockchain

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Aug 12, 2025 License: MIT Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RATE_REGISTRY_MESSAGE_FEE_KEY            = "xmtp.rateRegistry.messageFee"
	RATE_REGISTRY_STORAGE_FEE_KEY            = "xmtp.rateRegistry.storageFee"
	RATE_REGISTRY_CONGESTION_FEE_KEY         = "xmtp.rateRegistry.congestionFee"
	RATE_REGISTRY_TARGET_RATE_PER_MINUTE_KEY = "xmtp.rateRegistry.targetRatePerMinute"
)
View Source
const (
	NODE_REGISTRY_MAX_CANONICAL_NODES_KEY = "xmtp.nodeRegistry.maxCanonicalNodes"
)

Variables

View Source
var ErrNoLogsFound = errors.New("no logs found")

Functions

func ExecuteTransaction added in v0.3.0

func ExecuteTransaction(
	ctx context.Context,
	signer TransactionSigner,
	logger *zap.Logger,
	client *ethclient.Client,
	txFunc func(*bind.TransactOpts) (*types.Transaction, error),
	eventParser func(*types.Log) (interface{}, error),
	logHandler func(interface{}),
) error

ExecuteTransaction is a helper function that: - estimates the gas required for the transaction - checks if the sender has enough balance to cover the gas cost - executes a transaction - waits for it to be mined - processes the event logs

func NewNodeRegistryAdmin

func NewNodeRegistryAdmin(
	logger *zap.Logger,
	client *ethclient.Client,
	signer TransactionSigner,
	contractsOptions config.ContractsOptions,
) (*nodeRegistryAdmin, error)

func NewNodeRegistryCaller

func NewNodeRegistryCaller(
	logger *zap.Logger,
	client *ethclient.Client,
	contractsOptions config.ContractsOptions,
) (*nodeRegistryCaller, error)

func NewRPCClient added in v0.5.0

func NewRPCClient(ctx context.Context, rpcURL string) (*ethclient.Client, error)

NewRPCClient creates a new RPC client that can be used for JSON-RPC calls. RPC providers usually implement middleware with optimizations for HTTP JSON-RPC requests.

func NewWebsocketClient added in v0.5.0

func NewWebsocketClient(
	ctx context.Context,
	wsURL string,
	opts ...WebsocketClientOption,
) (*ethclient.Client, error)

NewWebsocketClient creates a new websocket client that can be configured with dialer options. It's used mostly for subscriptions.

func WaitForTransaction

func WaitForTransaction(
	ctx context.Context,
	logger *zap.Logger,
	client *ethclient.Client,
	timeout time.Duration,
	pollSleep time.Duration,
	hash common.Hash,
) (*types.Receipt, error)

WaitForTransaction waits for the given transaction hash to have been submitted to the chain and soft confirmed.

Types

type BlockchainPublisher

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

BlockchainPublisher can publish to the blockchain, signing messages using the provided signer.

func NewBlockchainPublisher

func NewBlockchainPublisher(
	ctx context.Context,
	logger *zap.Logger,
	client *ethclient.Client,
	signer TransactionSigner,
	contractOptions config.ContractsOptions,
	nonceManager noncemanager.NonceManager,
) (*BlockchainPublisher, error)

func (*BlockchainPublisher) BootstrapGroupMessages added in v0.5.0

func (m *BlockchainPublisher) BootstrapGroupMessages(
	ctx context.Context,
	groupIDs [][16]byte,
	messages [][]byte,
	sequenceIDs []uint64,
) ([]*gm.GroupMessageBroadcasterMessageSent, error)

func (*BlockchainPublisher) BootstrapIdentityUpdates added in v0.5.0

func (m *BlockchainPublisher) BootstrapIdentityUpdates(
	ctx context.Context,
	inboxIDs [][32]byte,
	identityUpdates [][]byte,
	sequenceIDs []uint64,
) ([]*iu.IdentityUpdateBroadcasterIdentityUpdateCreated, error)

func (*BlockchainPublisher) Close added in v0.3.0

func (m *BlockchainPublisher) Close()

func (*BlockchainPublisher) PublishGroupMessage

func (m *BlockchainPublisher) PublishGroupMessage(
	ctx context.Context,
	groupID [16]byte,
	message []byte,
) (*gm.GroupMessageBroadcasterMessageSent, error)

func (*BlockchainPublisher) PublishIdentityUpdate

func (m *BlockchainPublisher) PublishIdentityUpdate(
	ctx context.Context,
	inboxID [32]byte,
	identityUpdate []byte,
) (*iu.IdentityUpdateBroadcasterIdentityUpdateCreated, error)

type IBlockchainPublisher

type IBlockchainPublisher interface {
	Close()
	PublishIdentityUpdate(
		ctx context.Context,
		inboxID [32]byte,
		identityUpdate []byte,
	) (*iu.IdentityUpdateBroadcasterIdentityUpdateCreated, error)
	BootstrapIdentityUpdates(
		ctx context.Context,
		inboxIDs [][32]byte,
		identityUpdates [][]byte,
		sequenceIDs []uint64,
	) ([]*iu.IdentityUpdateBroadcasterIdentityUpdateCreated, error)
	PublishGroupMessage(
		ctx context.Context,
		groupID [16]byte,
		message []byte,
	) (*gm.GroupMessageBroadcasterMessageSent, error)
	BootstrapGroupMessages(
		ctx context.Context,
		groupIDs [][16]byte,
		messages [][]byte,
		sequenceIDs []uint64,
	) ([]*gm.GroupMessageBroadcasterMessageSent, error)
}

type INodeRegistryAdmin added in v0.3.0

type INodeRegistryAdmin interface {
	AddNode(
		ctx context.Context,
		owner string,
		signingKeyPub *ecdsa.PublicKey,
		httpAddress string,
	) (uint32, error)
	AddToNetwork(ctx context.Context, nodeId uint32) error
	RemoveFromNetwork(ctx context.Context, nodeId uint32) error
	SetHttpAddress(ctx context.Context, nodeId uint32, httpAddress string) error
	SetMaxCanonical(ctx context.Context, limit uint8) error
}

type INodeRegistryCaller added in v0.3.0

type INodeRegistryCaller interface {
	GetAllNodes(ctx context.Context) ([]noderegistry.INodeRegistryNodeWithId, error)
	GetNode(ctx context.Context, nodeId uint32) (noderegistry.INodeRegistryNode, error)
	OwnerOf(ctx context.Context, nodeId uint32) (common.Address, error)
	GetMaxCanonicalNodes(
		ctx context.Context,
	) (uint8, error)
}

type LogStreamBuilder

type LogStreamBuilder interface {
	ListenForContractEvent(
		fromBlock uint64,
		contractAddress common.Address,
		topic common.Hash,
	) <-chan types.Log
	Build() (LogStreamer, error)
}

Construct a raw blockchain listener that can be used to listen for events across many contract event types

type LogStreamer

type LogStreamer interface {
	Start(ctx context.Context) error
}

type PayerReportsManager added in v0.5.0

type PayerReportsManager interface {
	SubmitPayerReport(ctx context.Context, report *payerreport.PayerReportWithStatus) error
	GetReport(
		ctx context.Context,
		originatorNodeID uint32,
		index uint64,
	) (*payerreport.PayerReport, error)
	GetDomainSeparator(ctx context.Context) (common.Hash, error)
	GetReportID(
		ctx context.Context,
		payerReport *payerreport.PayerReportWithStatus,
	) (payerreport.ReportID, error)
}

type PrivateKeySigner

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

* PrivateKeySigner is a naive and not secure implementation of the TransactionSigner interface.

It is meant to be used in tests only *

func NewPrivateKeySigner

func NewPrivateKeySigner(privateKeyString string, chainID int) (*PrivateKeySigner, error)

func (*PrivateKeySigner) FromAddress

func (s *PrivateKeySigner) FromAddress() common.Address

func (*PrivateKeySigner) SignerFunc

func (s *PrivateKeySigner) SignerFunc() bind.SignerFn

type RatesAdmin added in v0.3.0

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

* A RatesAdmin is a struct responsible for calling admin functions on the RatesRegistry contract *

func NewRatesAdmin added in v0.3.0

func NewRatesAdmin(
	logger *zap.Logger,
	client *ethclient.Client,
	signer TransactionSigner,
	contractsOptions config.ContractsOptions,
) (*RatesAdmin, error)

func (*RatesAdmin) AddRates added in v0.3.0

func (r *RatesAdmin) AddRates(
	ctx context.Context,
	rates fees.Rates,
) error

* * * AddRates adds a new rate to the rates manager. * The new rate must have a later start time than the last rate in the contract.

type ReportsManager added in v0.5.0

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

func NewReportsManager added in v0.5.0

func NewReportsManager(
	log *zap.Logger,
	client *ethclient.Client,
	signer TransactionSigner,
	options config.SettlementChainOptions,
) (*ReportsManager, error)

func (*ReportsManager) GetDomainSeparator added in v0.5.0

func (r *ReportsManager) GetDomainSeparator(ctx context.Context) (common.Hash, error)

func (*ReportsManager) GetReport added in v0.5.0

func (r *ReportsManager) GetReport(
	ctx context.Context,
	originatorNodeID uint32,
	index uint64,
) (*payerreport.PayerReport, error)

func (*ReportsManager) GetReportID added in v0.5.0

func (r *ReportsManager) GetReportID(
	ctx context.Context,
	payerReport *payerreport.PayerReportWithStatus,
) (payerreport.ReportID, error)

func (*ReportsManager) SubmitPayerReport added in v0.5.0

func (r *ReportsManager) SubmitPayerReport(
	ctx context.Context,
	report *payerreport.PayerReportWithStatus,
) error

type TransactionSigner

type TransactionSigner interface {
	FromAddress() common.Address
	SignerFunc() bind.SignerFn
}

type WebsocketClientOption added in v0.5.0

type WebsocketClientOption func(*websocketClientConfig)

func WithKeepAliveConfig added in v0.5.0

func WithKeepAliveConfig(cfg net.KeepAliveConfig) WebsocketClientOption

Directories

Path Synopsis
Package noncemanager provides interfaces and implementations for managing transaction nonces in a blockchain environment.
Package noncemanager provides interfaces and implementations for managing transaction nonces in a blockchain environment.
redis
Package redis provides a Redis-backed implementation of the NonceManager interface.
Package redis provides a Redis-backed implementation of the NonceManager interface.
sql
Package sql provides a SQL database-backed implementation of the NonceManager interface.
Package sql provides a SQL database-backed implementation of the NonceManager interface.

Jump to

Keyboard shortcuts

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