Documentation ¶
Index ¶
- Constants
- Variables
- func FileNameBTCInbound(chainID int64, inboundHash string, donation bool) string
- func FileNameBTCMsgTx(chainID int64, txHash string) string
- func FileNameBTCOutbound(chainID int64, nonce uint64) string
- func FileNameBTCTxByType(chainID int64, txType string, txHash string) string
- func FileNameCctxByInbound(chainID int64, inboundHash string, coinType coin.CoinType) string
- func FileNameCctxByNonce(chainID int64, nonce uint64) string
- func FileNameEVMBlock(chainID int64, blockNumber uint64, trimmed bool) string
- func FileNameEVMInbound(chainID int64, inboundHash string, coinType coin.CoinType, donation bool) string
- func FileNameEVMInboundReceipt(chainID int64, inboundHash string, coinType coin.CoinType, donation bool) string
- func FileNameEVMOutbound(chainID int64, txHash string, coinType coin.CoinType) string
- func FileNameEVMOutboundReceipt(chainID int64, txHash string, coinType coin.CoinType, eventName string) string
- func FileNameSolanaInbound(chainID int64, inboundHash string, donation bool) string
- func FileNameSolanaOutbound(chainID int64, txHash string) string
- func Get(ctx context.Context, path string, v interface{}) error
- func LoadBTCInboundRawResult(t *testing.T, dir string, chainID int64, txHash string, donation bool) *btcjson.TxRawResult
- func LoadBTCMsgTx(t *testing.T, dir string, chainID int64, txHash string) *wire.MsgTx
- func LoadBTCTxRawResult(t *testing.T, dir string, chainID int64, txType string, txHash string) *btcjson.TxRawResult
- func LoadBTCTxRawResultNCctx(t *testing.T, dir string, chainID int64, nonce uint64) (*btcjson.TxRawResult, *crosschaintypes.CrossChainTx)
- func LoadCctxByInbound(t *testing.T, chainID int64, coinType coin.CoinType, inboundHash string) *crosschaintypes.CrossChainTx
- func LoadCctxByNonce(t *testing.T, chainID int64, nonce uint64) *crosschaintypes.CrossChainTx
- func LoadEVMBlock(t *testing.T, dir string, chainID int64, blockNumber uint64, trimmed bool) *ethrpc.Block
- func LoadEVMCctxNOutboundNReceipt(t *testing.T, dir string, chainID int64, nonce uint64, eventName string) (*crosschaintypes.CrossChainTx, *ethtypes.Transaction, *ethtypes.Receipt)
- func LoadEVMInbound(t *testing.T, dir string, chainID int64, inboundHash string, ...) *ethrpc.Transaction
- func LoadEVMInboundDonation(t *testing.T, dir string, chainID int64, inboundHash string, ...) *ethrpc.Transaction
- func LoadEVMInboundNReceipt(t *testing.T, dir string, chainID int64, inboundHash string, ...) (*ethrpc.Transaction, *ethtypes.Receipt)
- func LoadEVMInboundNReceiptDonation(t *testing.T, dir string, chainID int64, inboundHash string, ...) (*ethrpc.Transaction, *ethtypes.Receipt)
- func LoadEVMInboundNReceiptNCctx(t *testing.T, dir string, chainID int64, inboundHash string, ...) (*ethrpc.Transaction, *ethtypes.Receipt, *crosschaintypes.CrossChainTx)
- func LoadEVMInboundReceipt(t *testing.T, dir string, chainID int64, inboundHash string, ...) *ethtypes.Receipt
- func LoadEVMInboundReceiptDonation(t *testing.T, dir string, chainID int64, inboundHash string, ...) *ethtypes.Receipt
- func LoadEVMOutbound(t *testing.T, dir string, chainID int64, txHash string, coinType coin.CoinType) *ethtypes.Transaction
- func LoadEVMOutboundNReceipt(t *testing.T, dir string, chainID int64, txHash string, coinType coin.CoinType) (*ethtypes.Transaction, *ethtypes.Receipt)
- func LoadEVMOutboundReceipt(t *testing.T, dir string, chainID int64, txHash string, coinType coin.CoinType, ...) *ethtypes.Receipt
- func LoadJSONRawMessageFromFile(t *testing.T, filename string) json.RawMessage
- func LoadObjectFromJSONFile(t *testing.T, obj interface{}, filename string)
- func LoadSolanaInboundTxResult(t *testing.T, dir string, chainID int64, txHash string, donation bool) *rpc.GetTransactionResult
- func LoadSolanaOutboundTxResult(t *testing.T, dir string, chainID int64, txHash string) *rpc.GetTransactionResult
- func ParseReceiptERC20Deposited(receipt *ethtypes.Receipt, custody *erc20custody.ERC20Custody) *erc20custody.ERC20CustodyDeposited
- func ParseReceiptZetaSent(receipt *ethtypes.Receipt, connector *zetaconnector.ZetaConnectorNonEth) *zetaconnector.ZetaConnectorNonEthZetaSent
- func SaveBTCBlockTrimTx(blockVb *btcjson.GetBlockVerboseTxResult, filename string) error
- func SaveEVMBlockTrimTxInput(block *ethrpc.Block, filename string) error
- func SaveObjectToJSONFile(obj interface{}, filename string) error
- type BlockExtra
- type MempoolBlock
- type MempoolTx
- type Vin
- type Vout
Constants ¶
const ( // MockEVMRPCEndpoint is the endpoint to enable the mock EVM RPC client MockEVMRPCEndpoint = "MockEVMRPCEnabled" // TSSAddressEVMMainnet the EVM TSS address for test purposes // Note: public key is zetapub1addwnpepqtadxdyt037h86z60nl98t6zk56mw5zpnm79tsmvspln3hgt5phdc79kvfc TSSAddressEVMMainnet = "0x70e967acFcC17c3941E87562161406d41676FD83" // TSSAddressBTCMainnet the BTC TSS address for test purposes TSSAddressBTCMainnet = "bc1qm24wp577nk8aacckv8np465z3dvmu7ry45el6y" // TSSPubkeyAthens3 is the TSS public key in Athens3 TSSPubkeyAthens3 = "zetapub1addwnpepq28c57cvcs0a2htsem5zxr6qnlvq9mzhmm76z3jncsnzz32rclangr2g35p" // TSSAddressEVMAthens3 the EVM TSS address for test purposes // Note: public key is zetapub1addwnpepq28c57cvcs0a2htsem5zxr6qnlvq9mzhmm76z3jncsnzz32rclangr2g35p TSSAddressEVMAthens3 = "0x8531a5aB847ff5B22D855633C25ED1DA3255247e" // TSSAddressBTCAthens3 the BTC TSS address for test purposes TSSAddressBTCAthens3 = "tb1qy9pqmk2pd9sv63g27jt8r657wy0d9ueeh0nqur" OtherAddress1 = "0x21248Decd0B7EcB0F30186297766b8AB6496265b" OtherAddress2 = "0x33A351C90aF486AebC35042Bb0544123cAed26AB" OtherAddress3 = "0x86B77E4fBd07CFdCc486cAe4F2787fB5C5a62cd3" // evm event names for test data naming EventZetaSent = "ZetaSent" EventZetaReceived = "ZetaReceived" EventZetaReverted = "ZetaReverted" EventERC20Deposit = "Deposited" EventERC20Withdraw = "Withdrawn" )
const ( APIURLBlocks = "https://mempool.space/api/v1/blocks" APIURLBlockTxs = "https://mempool.space/api/block/%s/txs" APIURLBlocksTestnet = "https://mempool.space/testnet/api/v1/blocks" APIURLBlockTxsTestnet = "https://mempool.space/testnet/api/block/%s/txs" )
const ( TestDataPathEVM = "testdata/evm" TestDataPathBTC = "testdata/btc" TestDataPathSolana = "testdata/solana" TestDataPathCctx = "testdata/cctx" )
const OldSolanaGatewayAddressDevnet = "94U5AHQMKkV5txNJ17QPXWoh474PheGou6cNP2FEuL1d"
OldSolanaGatewayAddressDevnet is the old gateway address deployed on Solana devnet
Variables ¶
var ConnectorAddresses = map[int64]ethcommon.Address{ chains.Ethereum.ChainId: ethcommon.HexToAddress("0x000007Cf399229b2f5A4D043F20E90C9C98B7C6a"), chains.BscMainnet.ChainId: ethcommon.HexToAddress("0x000063A6e758D9e2f438d430108377564cf4077D"), chains.Goerli.ChainId: ethcommon.HexToAddress("0x00005E3125aBA53C5652f9F0CE1a4Cf91D8B15eA"), chains.BscTestnet.ChainId: ethcommon.HexToAddress("0x0000ecb8cdd25a18F12DAA23f6422e07fBf8B9E1"), chains.Sepolia.ChainId: ethcommon.HexToAddress("0x3963341dad121c9CD33046089395D66eBF20Fb03"), chains.GoerliLocalnet.ChainId: ethcommon.HexToAddress("0xD28D6A0b8189305551a0A8bd247a6ECa9CE781Ca"), }
ConnectorAddresses contains constants ERC20 connector addresses for testing
var CustodyAddresses = map[int64]ethcommon.Address{ chains.Ethereum.ChainId: ethcommon.HexToAddress("0x0000030Ec64DF25301d8414eE5a29588C4B0dE10"), chains.BscMainnet.ChainId: ethcommon.HexToAddress("0x00000fF8fA992424957F97688015814e707A0115"), chains.Goerli.ChainId: ethcommon.HexToAddress("0x000047f11C6E42293F433C82473532E869Ce4Ec5"), chains.BscTestnet.ChainId: ethcommon.HexToAddress("0x0000a7Db254145767262C6A81a7eE1650684258e"), chains.Sepolia.ChainId: ethcommon.HexToAddress("0x84725b70a239d3Faa7C6EF0C6C8E8b6c8e28338b"), }
CustodyAddresses contains constants ERC20 custody addresses for testing
var GatewayAddresses = map[int64]string{ chains.SolanaDevnet.ChainId: "ZETAjseVjuFsxdRxo6MmTCvqFwb3ZHUx56Co3vCmGis", chains.SolanaMainnet.ChainId: "ZETAjseVjuFsxdRxo6MmTCvqFwb3ZHUx56Co3vCmGis", }
GatewayAddresses contains constants gateway addresses for testing
Functions ¶
func FileNameBTCInbound ¶
FileNameBTCInbound returns unified archive file name for inbound tx
func FileNameBTCMsgTx ¶
FileNameBTCMsgTx returns unified archive file name for btc MsgTx
func FileNameBTCOutbound ¶
FileNameBTCOutbound returns unified archive file name for outbound tx
func FileNameBTCTxByType ¶
FileNameBTCTxByType returns unified archive file name for tx by type txType: "P2TR", "P2WPKH", "P2WSH", "P2PKH", "P2SH
func FileNameCctxByInbound ¶
FileNameCctxByInbound returns unified archive cctx file name by inbound
func FileNameCctxByNonce ¶
FileNameCctxByNonce returns unified archive cctx file name by nonce
func FileNameEVMBlock ¶
FileNameEVMBlock returns unified archive file name for block
func FileNameEVMInbound ¶
func FileNameEVMInbound(chainID int64, inboundHash string, coinType coin.CoinType, donation bool) string
FileNameEVMInbound returns unified archive file name for inbound tx
func FileNameEVMInboundReceipt ¶
func FileNameEVMInboundReceipt(chainID int64, inboundHash string, coinType coin.CoinType, donation bool) string
FileNameEVMInboundReceipt returns unified archive file name for inbound tx receipt
func FileNameEVMOutbound ¶
FileNameEVMOutbound returns unified archive file name for outbound tx
func FileNameEVMOutboundReceipt ¶
func FileNameEVMOutboundReceipt(chainID int64, txHash string, coinType coin.CoinType, eventName string) string
FileNameEVMOutboundReceipt returns unified archive file name for outbound tx receipt
func FileNameSolanaInbound ¶
FileNameSolanaInbound returns archive file name for inbound tx result
func FileNameSolanaOutbound ¶
FileNameSolanaOutbound returns archive file name for outbound tx result
func LoadBTCInboundRawResult ¶
func LoadBTCInboundRawResult( t *testing.T, dir string, chainID int64, txHash string, donation bool, ) *btcjson.TxRawResult
LoadBTCInboundRawResult loads archived Bitcoin inbound raw result from file
func LoadBTCMsgTx ¶
LoadBTCMsgTx loads archived Bitcoin MsgTx from file
func LoadBTCTxRawResult ¶
func LoadBTCTxRawResult(t *testing.T, dir string, chainID int64, txType string, txHash string) *btcjson.TxRawResult
LoadBTCTxRawResult loads archived Bitcoin tx raw result from file
func LoadBTCTxRawResultNCctx ¶
func LoadBTCTxRawResultNCctx( t *testing.T, dir string, chainID int64, nonce uint64, ) (*btcjson.TxRawResult, *crosschaintypes.CrossChainTx)
LoadBTCTxRawResultNCctx loads archived Bitcoin outbound raw result and corresponding cctx
func LoadCctxByInbound ¶
func LoadCctxByInbound( t *testing.T, chainID int64, coinType coin.CoinType, inboundHash string, ) *crosschaintypes.CrossChainTx
LoadCctxByInbound loads archived cctx by inbound
func LoadCctxByNonce ¶
func LoadCctxByNonce( t *testing.T, chainID int64, nonce uint64, ) *crosschaintypes.CrossChainTx
LoadCctxByNonce loads archived cctx by nonce
func LoadEVMBlock ¶
func LoadEVMBlock(t *testing.T, dir string, chainID int64, blockNumber uint64, trimmed bool) *ethrpc.Block
LoadEVMBlock loads archived evm block from file
func LoadEVMCctxNOutboundNReceipt ¶
func LoadEVMCctxNOutboundNReceipt( t *testing.T, dir string, chainID int64, nonce uint64, eventName string) (*crosschaintypes.CrossChainTx, *ethtypes.Transaction, *ethtypes.Receipt)
LoadEVMCctxNOutboundNReceipt loads archived cctx, outbound and receipt from file
func LoadEVMInbound ¶
func LoadEVMInbound( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) *ethrpc.Transaction
LoadEVMInbound loads archived inbound from file
func LoadEVMInboundDonation ¶
func LoadEVMInboundDonation( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) *ethrpc.Transaction
LoadEVMInboundDonation loads archived donation inbound from file
func LoadEVMInboundNReceipt ¶
func LoadEVMInboundNReceipt( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) (*ethrpc.Transaction, *ethtypes.Receipt)
LoadEVMInboundNReceipt loads archived inbound and receipt from file
func LoadEVMInboundNReceiptDonation ¶
func LoadEVMInboundNReceiptDonation( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) (*ethrpc.Transaction, *ethtypes.Receipt)
LoadEVMInboundNReceiptDonation loads archived donation inbound and receipt from file
func LoadEVMInboundNReceiptNCctx ¶
func LoadEVMInboundNReceiptNCctx( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) (*ethrpc.Transaction, *ethtypes.Receipt, *crosschaintypes.CrossChainTx)
LoadEVMInboundNReceiptNCctx loads archived inbound, receipt and corresponding cctx from file
func LoadEVMInboundReceipt ¶
func LoadEVMInboundReceipt( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) *ethtypes.Receipt
LoadEVMInboundReceipt loads archived inbound receipt from file
func LoadEVMInboundReceiptDonation ¶
func LoadEVMInboundReceiptDonation( t *testing.T, dir string, chainID int64, inboundHash string, coinType coin.CoinType) *ethtypes.Receipt
LoadEVMInboundReceiptDonation loads archived donation inbound receipt from file
func LoadEVMOutbound ¶
func LoadEVMOutbound( t *testing.T, dir string, chainID int64, txHash string, coinType coin.CoinType) *ethtypes.Transaction
LoadEVMOutbound loads archived evm outbound from file
func LoadEVMOutboundNReceipt ¶
func LoadEVMOutboundNReceipt( t *testing.T, dir string, chainID int64, txHash string, coinType coin.CoinType) (*ethtypes.Transaction, *ethtypes.Receipt)
LoadEVMOutboundNReceipt loads archived evm outbound and receipt from file
func LoadEVMOutboundReceipt ¶
func LoadEVMOutboundReceipt( t *testing.T, dir string, chainID int64, txHash string, coinType coin.CoinType, eventName string) *ethtypes.Receipt
LoadEVMOutboundReceipt loads archived evm outbound receipt from file
func LoadJSONRawMessageFromFile ¶
func LoadJSONRawMessageFromFile(t *testing.T, filename string) json.RawMessage
LoadJSONRawMessageFromFile loads a raw JSON message from a file in JSON format
func LoadObjectFromJSONFile ¶
LoadObjectFromJSONFile loads an object from a file in JSON format
func LoadSolanaInboundTxResult ¶
func LoadSolanaInboundTxResult( t *testing.T, dir string, chainID int64, txHash string, donation bool, ) *rpc.GetTransactionResult
LoadSolanaInboundTxResult loads archived Solana inbound tx result from file
func LoadSolanaOutboundTxResult ¶
func LoadSolanaOutboundTxResult( t *testing.T, dir string, chainID int64, txHash string, ) *rpc.GetTransactionResult
LoadSolanaOutboundTxResult loads archived Solana outbound tx result from file
func ParseReceiptERC20Deposited ¶
func ParseReceiptERC20Deposited( receipt *ethtypes.Receipt, custody *erc20custody.ERC20Custody, ) *erc20custody.ERC20CustodyDeposited
ParseReceiptERC20Deposited parses an Deposited event from a receipt
func ParseReceiptZetaSent ¶
func ParseReceiptZetaSent( receipt *ethtypes.Receipt, connector *zetaconnector.ZetaConnectorNonEth, ) *zetaconnector.ZetaConnectorNonEthZetaSent
ParseReceiptZetaSent parses a ZetaSent event from a receipt
func SaveBTCBlockTrimTx ¶
func SaveBTCBlockTrimTx(blockVb *btcjson.GetBlockVerboseTxResult, filename string) error
SaveBTCBlockTrimTx trims tx data from a block and saves it to a file NOTE: this function is not used in the tests but used when creating test data
func SaveEVMBlockTrimTxInput ¶
SaveEVMBlockTrimTxInput trims tx input data from a block and saves it to a file NOTE: this function is not used in the tests but used when creating test data
func SaveObjectToJSONFile ¶
SaveObjectToJSONFile saves an object to a file in JSON format NOTE: this function is not used in the tests but used when creating test data
Types ¶
type BlockExtra ¶
type BlockExtra struct { TotalFees int `json:"totalFees"` MedianFee float64 `json:"medianFee"` FeeRange []float64 `json:"feeRange"` Reward int `json:"reward"` Pool struct { ID int `json:"id"` Name string `json:"name"` Slug string `json:"slug"` } `json:"pool"` AvgFee int `json:"avgFee"` AvgFeeRate int `json:"avgFeeRate"` CoinbaseRaw string `json:"coinbaseRaw"` CoinbaseAddress string `json:"coinbaseAddress"` CoinbaseSignature string `json:"coinbaseSignature"` CoinbaseSignatureASCII string `json:"coinbaseSignatureAscii"` AvgTxSize float64 `json:"avgTxSize"` TotalInputs int `json:"totalInputs"` TotalOutputs int `json:"totalOutputs"` TotalOutputAmt int `json:"totalOutputAmt"` MedianFeeAmt int `json:"medianFeeAmt"` FeePercentiles []int `json:"feePercentiles"` SegwitTotalTxs int `json:"segwitTotalTxs"` SegwitTotalSize int `json:"segwitTotalSize"` SegwitTotalWeight int `json:"segwitTotalWeight"` Header string `json:"header"` UTXOSetChange int `json:"utxoSetChange"` UTXOSetSize int `json:"utxoSetSize"` TotalInputAmt int `json:"totalInputAmt"` VirtualSize float64 `json:"virtualSize"` Orphans []struct { Height int `json:"height"` Hash string `json:"hash"` Status string `json:"status"` } `json:"orphans"` MatchRate float64 `json:"matchRate"` EXpectedFees big.Int `json:"expectedFees"` ExpectedWeight int `json:"expectedWeight"` }
BlockExtra represents extra information about a block
type MempoolBlock ¶
type MempoolBlock struct { ID string `json:"id"` Height int `json:"height"` Version int `json:"version"` Time int `json:"timestamp"` Bits int `json:"bits"` Nonce int `json:"nonce"` Difficulty float64 `json:"difficulty"` MerkleRoot string `json:"merkle_root"` TxCount int `json:"tx_count"` Size int `json:"size"` Weight int `json:"weight"` PreviousBlockHash string `json:"previousblockhash"` MedianTime int `json:"mediantime"` Extras BlockExtra `json:"extras"` }
MempoolBlock represents a block in the mempool
type MempoolTx ¶
type MempoolTx struct { TxID string `json:"txid"` Version int `json:"version"` LockTime int `json:"locktime"` Vin []Vin `json:"vin"` Vout []Vout `json:"vout"` Size int `json:"size"` Weight int `json:"weight"` Fee int `json:"fee"` }
MempoolTx represents a transaction in the mempool
type Vin ¶
type Vin struct { TxID string `json:"txid"` Vout uint32 `json:"vout"` Prevout struct { Scriptpubkey string `json:"scriptpubkey"` ScriptpubkeyAsm string `json:"scriptpubkey_asm"` ScriptpubkeyType string `json:"scriptpubkey_type"` ScriptpubkeyAddress string `json:"scriptpubkey_address"` Value int64 `json:"value"` } `json:"prevout"` Scriptsig string `json:"scriptsig"` IsCoinbase bool `json:"is_coinbase"` Sequence uint32 `json:"sequence"` }
Vin represents a Bitcoin transaction input