Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BTCRPCClient ¶
type BTCRPCClient interface {
GetNetworkInfo() (*btcjson.GetNetworkInfoResult, error)
CreateWallet(name string, opts ...rpcclient.CreateWalletOpt) (*btcjson.CreateWalletResult, error)
GetNewAddress(account string) (btcutil.Address, error)
GenerateToAddress(numBlocks int64, address btcutil.Address, maxTries *int64) ([]*chainhash.Hash, error)
GetBalance(account string) (btcutil.Amount, error)
SendRawTransaction(tx *wire.MsgTx, allowHighFees bool) (*chainhash.Hash, error)
ListUnspent() ([]btcjson.ListUnspentResult, error)
ListUnspentMinMaxAddresses(minConf int, maxConf int, addrs []btcutil.Address) ([]btcjson.ListUnspentResult, error)
EstimateSmartFee(confTarget int64, mode *btcjson.EstimateSmartFeeMode) (*btcjson.EstimateSmartFeeResult, error)
GetTransaction(txHash *chainhash.Hash) (*btcjson.GetTransactionResult, error)
GetRawTransaction(txHash *chainhash.Hash) (*btcutil.Tx, error)
GetRawTransactionVerbose(txHash *chainhash.Hash) (*btcjson.TxRawResult, error)
GetBlockCount() (int64, error)
GetBlockHash(blockHeight int64) (*chainhash.Hash, error)
GetBlockVerbose(blockHash *chainhash.Hash) (*btcjson.GetBlockVerboseResult, error)
GetBlockVerboseTx(blockHash *chainhash.Hash) (*btcjson.GetBlockVerboseTxResult, error)
GetBlockHeader(blockHash *chainhash.Hash) (*wire.BlockHeader, error)
}
BTCRPCClient is the interface for BTC RPC client
type ChainClient ¶
type ChainClient interface {
Start(ctx context.Context)
Stop()
IsOutboundProcessed(ctx context.Context, xmsg *xmsgtypes.Xmsg, logger zerolog.Logger) (bool, bool, error)
SetChainParams(relayertypes.ChainParams)
GetChainParams() relayertypes.ChainParams
OutboundID(nonce uint64) string
WatchIntxTracker(ctx context.Context) error
}
ChainClient is the interface for chain clients
type ChainEventHandler ¶
type ChainEventHandler interface {
// HandleBlocks scans blockchain events within the specified block range
// and returns the highest block height processed.
//
// Parameters:
// - ctx: Context for managing request-scoped values, deadlines, and cancellations.
// - startBlock: The starting block height for scanning.
// - toBlock: The ending block height for scanning.
// - eventStore: A pointer to a map where the key is the block height (int64),
// and the value is a slice of `MsgVoteOnObservedInboundTx` messages observed at that block.
//
// Returns:
// - uint64: The highest block height scanned.
// - error: An error, if any occurs during execution.
HandleBlocks(startBlock, toBlock uint64, eventStore *map[uint64][]*xmsgtypes.MsgVoteOnObservedInboundTx) (uint64, error)
// CheckAndBuildInboundVoteMsg validates and builds an inbound vote message.
//
// Parameters:
// - ctx: Context for managing request-scoped values, deadlines, and cancellations.
// - tx: The Ethereum transaction to validate.
// - receipt: The Ethereum transaction receipt to validate.
//
// Returns:
// - []*xmsgtypes.MsgVoteOnObservedInboundTx: A slice of `MsgVoteOnObservedInboundTx` messages.
// - error: An error, if any occurs during execution.
CheckAndBuildInboundVoteMsg(tx *ethrpc.Transaction, receipt *ethtypes.Receipt) ([]*xmsgtypes.MsgVoteOnObservedInboundTx, error)
}
ChainEventHandler defines an interface for handling chain events, such as scanning blockchain events within specific block ranges and managing event storage.
Methods:
- Execute: Processes blockchain events within a block range.
type ChainSigner ¶
type ChainSigner interface {
TryProcessOutTx(
ctx context.Context,
xmsg *xmsgtypes.Xmsg,
outTxMan *outtxprocessor.Processor,
outTxID string,
chainclient ChainClient,
pellBridge PellCoreBridger,
height uint64,
)
SetPellConnectorAddress(address ethcommon.Address)
GetPellConnectorAddress() ethcommon.Address
}
ChainSigner is the interface to sign transactions for a chain
type EVMJSONRPCClient ¶
type EVMJSONRPCClient interface {
EthGetBlockByNumber(number int, withTransactions bool) (*ethrpc.Block, error)
EthGetTransactionByHash(hash string) (*ethrpc.Transaction, error)
}
EVMJSONRPCClient is the interface for EVM JSON RPC client
type EVMRPCClient ¶
type EVMRPCClient interface {
bind.ContractBackend
SendTransaction(ctx context.Context, tx *ethtypes.Transaction) error
SuggestGasPrice(ctx context.Context) (*big.Int, error)
BlockNumber(ctx context.Context) (uint64, error)
BlockByNumber(ctx context.Context, number *big.Int) (*ethtypes.Block, error)
HeaderByNumber(ctx context.Context, number *big.Int) (*ethtypes.Header, error)
TransactionByHash(ctx context.Context, hash ethcommon.Hash) (tx *ethtypes.Transaction, isPending bool, err error)
TransactionReceipt(ctx context.Context, txHash ethcommon.Hash) (*ethtypes.Receipt, error)
TransactionSender(ctx context.Context, tx *ethtypes.Transaction, block ethcommon.Hash, index uint) (ethcommon.Address, error)
CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) ([]byte, error)
BalanceAt(ctx context.Context, account ethcommon.Address, blockNumber *big.Int) (*big.Int, error)
}
EVMRPCClient is the interface for EVM RPC client
type IEVMEventReactor ¶
type IEVMEventReactor interface {
// HandleBlocks processes all events from the given start block to the end block.
//
// Parameters:
// - startBlock: The starting block height for scanning.
// - toBlock: The ending block height for scanning.
//
// Returns:
// - map[uint64][]*xmsgtypes.MsgVoteOnObservedInboundTx: A map where the key is the block height (uint64),
// and the value is a slice of `MsgVoteOnObservedInboundTx` messages observed at that block.
// - uint64: The highest block height scanned.
HandleBlocks(startBlock, toBlock uint64) (map[uint64][]*xmsgtypes.MsgVoteOnObservedInboundTx, uint64)
// RegisterEventHandler registers a chain event handler to the reactor.
//
// Parameters:
// - handler: The chain event handler to register.
RegisterEventHandler(handler ChainEventHandler)
// CheckAndBuildInboundVoteMsg validates and builds an inbound vote message.
//
// Parameters:
// - ctx: Context for managing request-scoped values, deadlines, and cancellations.
// - tx: The Ethereum transaction to validate.
// - receipt: The Ethereum transaction receipt to validate.
// - lastBlock: The last block height.
//
// Returns:
// - []*xmsgtypes.MsgVoteOnObservedInboundTx: A slice of `MsgVoteOnObservedInboundTx` messages.
// - error: An error, if any occurs during execution.
CheckAndBuildInboundVoteMsg(tx *ethrpc.Transaction, receipt *ethtypes.Receipt, lastBlock uint64) ([]*xmsgtypes.MsgVoteOnObservedInboundTx, error)
}
IEVMEventReactor defines an interface for processing events within a specified block range in an EVM-compatible blockchain. The main purpose is to handle all relevant events between two block heights.
Methods:
- HandleBlocks: Processes all events from the given start block to the end block.
type PellCoreBridger ¶
type PellCoreBridger interface {
PellcoreVoter
Chain() chains.Chain
GetLogger() *zerolog.Logger
GetKeys() keyinterfaces.ObserverKeys
GetKeyGen(ctx context.Context) (relayertypes.Keygen, error)
GetBlockHeight(ctx context.Context) (int64, error)
GetLastBlockHeightByChain(ctx context.Context, chain chains.Chain) (*xmsgtypes.LastBlockHeight, error)
GetBlockHeaderChainState(ctx context.Context, chainID int64) (*lightclienttypes.QueryChainStateResponse, error)
ListPendingXmsg(ctx context.Context, chainID int64) ([]*xmsgtypes.Xmsg, uint64, error)
ListPendingXmsgWithinRatelimit(ctx context.Context) (*xmsgtypes.QueryListPendingXmsgWithinRateLimitResponse, error)
GetRateLimiterInput(ctx context.Context, window int64) (*xmsgtypes.QueryRateLimiterInputResponse, error)
GetPendingNoncesByChain(ctx context.Context, chainID int64) (relayertypes.PendingNonces, error)
GetXmsgByNonce(ctx context.Context, chainID int64, nonce uint64) (*xmsgtypes.Xmsg, error)
GetOutTxTracker(ctx context.Context, chain chains.Chain, nonce uint64) (*xmsgtypes.OutTxTracker, error)
GetAllOutTxTrackerByChain(ctx context.Context, chainID int64, order Order) ([]xmsgtypes.OutTxTracker, error)
GetCrosschainFlags(ctx context.Context) (relayertypes.CrosschainFlags, error)
GetRateLimiterFlags(ctx context.Context) (xmsgtypes.RateLimiterFlags, error)
GetObserverList(ctx context.Context) ([]string, error)
GetPellHotKeyBalance(ctx context.Context) (sdkmath.Int, error)
GetInboundTrackersForChain(ctx context.Context, chainID int64) ([]xmsgtypes.InTxTracker, error)
GetChainIndex(ctx context.Context, chainId int64) (*xmsgtypes.ChainIndex, error)
GetPellRechargeOperationIndex(ctx context.Context, chainId int64) (*xmsgtypes.PellRechargeOperationIndex, error)
GetGasRechargeOperationIndex(ctx context.Context, chainId int64) (*xmsgtypes.GasRechargeOperationIndex, error)
Stop()
OnBeforeStop(callback func())
}
PellCoreBridger is the interface to interact with PellCore
type PellcoreVoter ¶
type PellcoreVoter interface {
PostVoteBlockHeader(
ctx context.Context,
chainID int64,
txhash []byte,
height int64,
header proofs.HeaderData,
) (string, error)
PostGasPrice(
ctx context.Context,
chain chains.Chain,
gasPrice uint64,
supply string,
blockNum uint64,
) (string, error)
PostVoteInboundEvents(
ctx context.Context,
gasLimit, retryGasLimit uint64,
msg []*xmsgtypes.MsgVoteOnObservedInboundTx,
) (string, string, error)
PostVoteOutbound(
ctx context.Context,
sendHash string,
outTxHash string,
outBlockHeight uint64,
outTxGasUsed uint64,
outTxEffectiveGasPrice *big.Int,
outTxEffectiveGasLimit uint64,
status chains.ReceiveStatus,
failedReasonMsg string,
chain chains.Chain,
nonce uint64,
) (string, string, error)
PostBlameData(
ctx context.Context,
blame *blame.Blame,
chainID int64,
index string,
) (string, error)
PostAddTxHashToOutTxTracker(
ctx context.Context,
chainID int64,
nonce uint64,
txHash string,
proof *proofs.Proof,
blockHash string,
txIndex int64,
) (string, error)
PostVoteOnPellRecharge(
ctx context.Context,
chain chains.Chain,
voteIndex uint64,
) (string, error)
PostVoteOnGasRecharge(
ctx context.Context,
chain chains.Chain,
voteIndex uint64,
) (string, error)
PostVoteInboundBlock(
ctx context.Context,
gasLimit, retryLimit uint64,
block *xmsgtypes.MsgVoteInboundBlock,
events []*xmsgtypes.MsgVoteOnObservedInboundTx,
) ([]string, []string, error)
}
PellcoreVoter represents voter interface.
type TSSSigner ¶
type TSSSigner interface {
Pubkey() []byte
// Sign: Specify optionalPubkey to use a different pubkey than the current pubkey set during keygen
Sign(ctx context.Context, data []byte, height uint64, nonce uint64, chain *chains.Chain, optionalPubkey string) ([65]byte, error)
EVMAddress() ethcommon.Address
PubKeyCompressedBytes() []byte
}