Documentation
¶
Index ¶
- Constants
- Variables
- func ExecuteTransaction(ctx context.Context, signer TransactionSigner, logger *zap.Logger, ...) error
- func NewNodeRegistryAdmin(logger *zap.Logger, client *ethclient.Client, signer TransactionSigner, ...) (*nodeRegistryAdmin, error)
- func NewNodeRegistryCaller(logger *zap.Logger, client *ethclient.Client, ...) (*nodeRegistryCaller, error)
- func NewRPCClient(ctx context.Context, rpcURL string) (*ethclient.Client, error)
- func NewWebsocketClient(ctx context.Context, wsURL string, opts ...WebsocketClientOption) (*ethclient.Client, error)
- func WaitForTransaction(ctx context.Context, logger *zap.Logger, client *ethclient.Client, ...) (*types.Receipt, error)
- type BlockchainPublisher
- func (m *BlockchainPublisher) BootstrapGroupMessages(ctx context.Context, groupIDs [][16]byte, messages [][]byte, ...) ([]*gm.GroupMessageBroadcasterMessageSent, error)
- func (m *BlockchainPublisher) BootstrapIdentityUpdates(ctx context.Context, inboxIDs [][32]byte, identityUpdates [][]byte, ...) ([]*iu.IdentityUpdateBroadcasterIdentityUpdateCreated, error)
- func (m *BlockchainPublisher) Close()
- func (m *BlockchainPublisher) PublishGroupMessage(ctx context.Context, groupID [16]byte, message []byte) (*gm.GroupMessageBroadcasterMessageSent, error)
- func (m *BlockchainPublisher) PublishIdentityUpdate(ctx context.Context, inboxID [32]byte, identityUpdate []byte) (*iu.IdentityUpdateBroadcasterIdentityUpdateCreated, error)
- type ChainClient
- type IBlockchainPublisher
- type INodeRegistryAdmin
- type INodeRegistryCaller
- type LogStreamBuilder
- type LogStreamer
- type PayerReportsManager
- type PrivateKeySigner
- type RatesAdmin
- type ReportsManager
- func (r *ReportsManager) GetDomainSeparator(ctx context.Context) (common.Hash, error)
- func (r *ReportsManager) GetReport(ctx context.Context, originatorNodeID uint32, index uint64) (*payerreport.PayerReport, error)
- func (r *ReportsManager) GetReportID(ctx context.Context, payerReport *payerreport.PayerReportWithStatus) (payerreport.ReportID, error)
- func (r *ReportsManager) SubmitPayerReport(ctx context.Context, report *payerreport.PayerReportWithStatus) error
- type TransactionSigner
- type WebsocketClientOption
Constants ¶
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" )
const (
NODE_REGISTRY_MAX_CANONICAL_NODES_KEY = "xmtp.nodeRegistry.maxCanonicalNodes"
)
Variables ¶
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 NewRPCClient ¶ added in v0.5.0
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 ChainClient ¶
type ChainClient interface {
ethereum.BlockNumberReader
ethereum.LogFilterer
ethereum.ChainIDReader
ethereum.ChainReader
}
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 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)
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 (*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 WebsocketClientOption ¶ added in v0.5.0
type WebsocketClientOption func(*websocketClientConfig)
func WithKeepAliveConfig ¶ added in v0.5.0
func WithKeepAliveConfig(cfg net.KeepAliveConfig) WebsocketClientOption
Source Files
¶
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. |