Documentation
¶
Index ¶
- Constants
- Variables
- func GenerateTxField(data []byte) *types.Transaction
- func GetOwnedMultiTransactionID(tx *sql.Tx, chainID w_common.ChainID, hash common.Hash, address common.Address) (mTID int64, err error)
- func InsertTestMultiTransaction(tb testing.TB, db *sql.DB, tr *MultiTransaction) common.MultiTransactionIDType
- func InsertTestPendingTransaction(tb testing.TB, db *sql.DB, tr *TestTransfer)
- func InsertTestTransfer(tb testing.TB, db *sql.DB, address eth_common.Address, tr *TestTransfer)
- func InsertTestTransferWithOptions(tb testing.TB, db *sql.DB, address eth_common.Address, tr *TestTransfer, ...)
- func IsTransferDetectionEvent(ev walletevent.EventType) bool
- func LookupTokenIdentity(chainID uint64, address eth_common.Address, native bool) *token.Token
- func SaveTransfersMarkBlocksLoaded(database *Database, chainID uint64, address eth_common.Address, ...) error
- func SeedToToken(seed int) *token.Token
- func SetMultiTransactionIDGenerator(f func() common.MultiTransactionIDType)
- func StaticIDCounter() (f func() common.MultiTransactionIDType)
- func TestTrToToken(t *testing.T, tt *TestTransaction) (token *token.Token, isNative bool)
- type BatchDownloader
- type Block
- type BlockDAO
- func (b *BlockDAO) GetBlocksToLoadByAddress(chainID uint64, address common.Address, limit int) (rst []*big.Int, err error)
- func (b *BlockDAO) GetFirstKnownBlock(chainID uint64, address common.Address) (rst *big.Int, err error)
- func (b *BlockDAO) GetFirstSavedBlock(chainID uint64, address common.Address) (rst *DBHeader, err error)
- func (b *BlockDAO) GetLastBlockByAddress(chainID uint64, address common.Address, limit int) (rst *big.Int, err error)
- func (b *BlockDAO) GetLastKnownBlockByAddress(chainID uint64, address common.Address) (block *Block, err error)
- func (b *BlockDAO) GetLastKnownBlockByAddresses(chainID uint64, addresses []common.Address) (map[common.Address]*Block, []common.Address, error)
- type BlockRange
- type BlockRangeDAOer
- type BlockRangeSequentialDAO
- type BlockView
- type BlocksRange
- type ConcurrentDownloader
- type Controller
- func (c *Controller) CheckRecentHistory(chainIDs []uint64, accounts []common.Address) error
- func (c *Controller) GetCachedBalances(ctx context.Context, chainID uint64, addresses []common.Address) ([]BlockView, error)
- func (c *Controller) GetTransfersByAddress(ctx context.Context, chainID uint64, address common.Address, toBlock *big.Int, ...) ([]View, error)
- func (c *Controller) GetTransfersForIdentities(ctx context.Context, identities []TransactionIdentity) ([]View, error)
- func (c *Controller) LoadTransferByHash(ctx context.Context, rpcClient *rpc.Client, address common.Address, ...) error
- func (c *Controller) Start()
- func (c *Controller) Stop()
- type DBHeader
- type Database
- func (db *Database) Close() error
- func (db *Database) GetLatestCollectibleTransfer(address common.Address, id thirdparty.CollectibleUniqueID) (*Transfer, error)
- func (db *Database) GetTransactionsToLoad(chainID uint64, address common.Address, blockNumber *big.Int) (rst []*PreloadedTransaction, err error)
- func (db *Database) GetTransfers(chainID uint64, start, end *big.Int) (rst []Transfer, err error)
- func (db *Database) GetTransfersByAddress(chainID uint64, address common.Address, toBlock *big.Int, limit int64) (rst []Transfer, err error)
- func (db *Database) GetTransfersByAddressAndBlock(chainID uint64, address common.Address, block *big.Int, limit int64) (rst []Transfer, err error)
- func (db *Database) GetTransfersForIdentities(ctx context.Context, identities []TransactionIdentity) (rst []Transfer, err error)
- func (db *Database) GetTransfersInRange(chainID uint64, address common.Address, start, end *big.Int) (rst []Transfer, err error)
- func (db *Database) InsertBlock(chainID uint64, account common.Address, blockNumber *big.Int, ...) error
- func (db *Database) SaveBlocks(chainID uint64, headers []*DBHeader) (err error)
- type Downloader
- type ERC20BlockRange
- type ERC20TransfersDownloader
- type ETHDownloader
- type FetchStrategyType
- type HeaderReader
- type HistoryFetcher
- type InMemMultiTransactionStorage
- func (s *InMemMultiTransactionStorage) CreateMultiTransaction(multiTx *MultiTransaction) error
- func (s *InMemMultiTransactionStorage) DeleteMultiTransaction(id common.MultiTransactionIDType) error
- func (s *InMemMultiTransactionStorage) GetMultiTransaction(id common.MultiTransactionIDType) (*MultiTransaction, error)
- func (s *InMemMultiTransactionStorage) ReadMultiTransactions(details *MultiTxDetails) ([]*MultiTransaction, error)
- func (s *InMemMultiTransactionStorage) UpdateMultiTransaction(multiTx *MultiTransaction) error
- type IterativeDownloader
- type JSONBlob
- type MultiTransaction
- func GenerateTestBridgeMultiTransaction(fromTr, toTr TestTransfer) MultiTransaction
- func GenerateTestSendMultiTransaction(tr TestTransfer) MultiTransaction
- func GenerateTestSwapMultiTransaction(tr TestTransfer, toToken string, toAmount int64) MultiTransaction
- func NewMultiTransaction(timestamp uint64, fromNetworkID, toNetworkID uint64, ...) *MultiTransaction
- type MultiTransactionCommand
- type MultiTransactionCommandResult
- type MultiTransactionDB
- func (mtDB *MultiTransactionDB) CreateMultiTransaction(multiTransaction *MultiTransaction) error
- func (mtDB *MultiTransactionDB) DeleteMultiTransaction(id wallet_common.MultiTransactionIDType) error
- func (mtDB *MultiTransactionDB) ReadMultiTransactions(details *MultiTxDetails) ([]*MultiTransaction, error)
- func (mtDB *MultiTransactionDB) UpdateMultiTransaction(multiTransaction *MultiTransaction) error
- type MultiTransactionDBType
- type MultiTransactionStorage
- type MultiTransactionType
- type MultiTxDetails
- type PreloadedTransaction
- type Reactor
- type Result
- type SeparatorType
- type SequentialFetchStrategy
- type SignatureDetails
- type SyncOption
- type TestCollectible
- type TestCollectibleTransfer
- type TestTransaction
- type TestTransfer
- type TestTransferOptions
- type Transaction
- type TransactionDescription
- type TransactionIdentity
- type TransactionManager
- func (tm *TransactionManager) BuildRawTransaction(chainID uint64, sendArgs transactions.SendTxArgs, signature []byte) (response *TxResponse, err error)
- func (tm *TransactionManager) BuildTransaction(chainID uint64, sendArgs transactions.SendTxArgs) (response *TxResponse, err error)
- func (tm *TransactionManager) CreateMultiTransactionFromCommand(command *MultiTransactionCommand, data []*bridge.TransactionBridge) (*MultiTransaction, error)
- func (tm *TransactionManager) GetBridgeDestinationMultiTransaction(ctx context.Context, toChainID uint64, crossTxID string) (*MultiTransaction, error)
- func (tm *TransactionManager) GetBridgeOriginMultiTransaction(ctx context.Context, toChainID uint64, crossTxID string) (*MultiTransaction, error)
- func (tm *TransactionManager) GetMultiTransactions(ctx context.Context, ids []wallet_common.MultiTransactionIDType) ([]*MultiTransaction, error)
- func (tm *TransactionManager) InsertMultiTransaction(multiTransaction *MultiTransaction) (wallet_common.MultiTransactionIDType, error)
- func (tm *TransactionManager) ProceedWithTransactionsSignatures(ctx context.Context, signatures map[string]SignatureDetails) (*MultiTransactionCommandResult, error)
- func (tm *TransactionManager) SendTransactionForSigningToKeycard(ctx context.Context, multiTransaction *MultiTransaction, ...) error
- func (tm *TransactionManager) SendTransactionWithSignature(chainID uint64, sendArgs transactions.SendTxArgs, signature []byte) (hash types.Hash, err error)
- func (tm *TransactionManager) SendTransactions(ctx context.Context, multiTransaction *MultiTransaction, ...) (*MultiTransactionCommandResult, error)
- func (tm *TransactionManager) SignMessage(message types.HexBytes, account *types.Key) (string, error)
- func (tm *TransactionManager) UpdateMultiTransaction(multiTransaction *MultiTransaction) error
- func (tm *TransactionManager) WatchTransaction(ctx context.Context, chainID uint64, transactionHash common.Hash) error
- type Transfer
- type TxResponse
- type View
Constants ¶
const ( // EventNewTransfers emitted when new block was added to the same canonical chan. EventNewTransfers walletevent.EventType = "new-transfers" // EventFetchingRecentHistory emitted when fetching of lastest tx history is started EventFetchingRecentHistory walletevent.EventType = "recent-history-fetching" // EventRecentHistoryReady emitted when fetching of lastest tx history is started EventRecentHistoryReady walletevent.EventType = "recent-history-ready" // EventFetchingHistoryError emitted when fetching of tx history failed EventFetchingHistoryError walletevent.EventType = "fetching-history-error" // EventNonArchivalNodeDetected emitted when a connection to a non archival node is detected EventNonArchivalNodeDetected walletevent.EventType = "non-archival-node-detected" // Internal events emitted when different kinds of transfers are detected EventInternalETHTransferDetected walletevent.EventType = walletevent.InternalEventTypePrefix + "eth-transfer-detected" EventInternalERC20TransferDetected walletevent.EventType = walletevent.InternalEventTypePrefix + "erc20-transfer-detected" EventInternalERC721TransferDetected walletevent.EventType = walletevent.InternalEventTypePrefix + "erc721-transfer-detected" EventInternalERC1155TransferDetected walletevent.EventType = walletevent.InternalEventTypePrefix + "erc1155-transfer-detected" )
const ( NoThreadLimit uint32 = 0 SequentialThreadLimit uint32 = 10 )
const ( MultiTransactionDBTypeInvalid = 0 MultiTransactionDBSend = iota MultiTransactionDBSwap MultiTransactionDBBridge )
const ( ReactorNotStarted string = "reactor not started" NonArchivalNodeBlockChunkSize = 100 DefaultNodeBlockChunkSize = 100000 )
const ( MultiTransactionSend = iota MultiTransactionSwap MultiTransactionBridge MultiTransactionTypeInvalid = 255 )
const ETHSymbol string = "ETH"
const WETHSymbol string = "WETH"
Variables ¶
var DaiGoerli = token.Token{ Address: eth_common.HexToAddress("0xf2edF1c091f683E3fb452497d9a98A49cBA84666"), Name: "DAI Stablecoin", Symbol: "DAI", ChainID: 5, }
var DaiMainnet = token.Token{ Address: eth_common.HexToAddress("0xf2edF1c091f683E3fb452497d9a98A49cBA84666"), Name: "DAI Stablecoin", Symbol: "DAI", ChainID: 5, }
var ErrPendingTxNotExists = errors.New("pending transaction does not exist")
var ErrWatchPendingTxTimeout = errors.New("timeout watching for pending transaction")
var EthGoerli = token.Token{ Address: eth_common.HexToAddress("0x"), Name: "Ether", Symbol: "ETH", ChainID: 5, }
var EthMainnet = token.Token{ Address: eth_common.HexToAddress("0x"), Name: "Ether", Symbol: "ETH", ChainID: 1, }
var EthOptimism = token.Token{ Address: eth_common.HexToAddress("0x"), Name: "Ether", Symbol: "ETH", ChainID: 10, }
var NativeTokenIndices = []int{0, 1, 2}
var SntMainnet = token.Token{ Address: eth_common.HexToAddress("0x744d70fdbe2ba4cf95131626614a1763df805b9e"), Name: "Status Network Token", Symbol: "SNT", ChainID: 1, }
var TestCollectibles = []TestCollectible{ TestCollectible{ TokenAddress: eth_common.HexToAddress("0x97a04fda4d97c6e3547d66b572e29f4a4ff40392"), TokenID: big.NewInt(1), ChainID: 1, }, TestCollectible{ TokenAddress: eth_common.HexToAddress("0x2cec8879915cdbd80c88d8b1416aa9413a24ddfa"), TokenID: big.NewInt(1), ChainID: 1, }, TestCollectible{ TokenAddress: eth_common.HexToAddress("0x97a04fda4d97c6e3547d66b572e29f4a4ff4ABCD"), TokenID: big.NewInt(0), ChainID: 420, }, TestCollectible{ TokenAddress: eth_common.HexToAddress("0x1dea7a3e04849840c0eb15fd26a55f6c40c4a69b"), TokenID: big.NewInt(11), ChainID: 5, }, TestCollectible{ TokenAddress: eth_common.HexToAddress("0x1dea7a3e04849840c0eb15fd26a55f6c40c4a69b"), TokenID: big.NewInt(12), ChainID: 5, }, }
var TestTokens = []*token.Token{ &EthMainnet, &EthGoerli, &EthOptimism, &UsdcMainnet, &UsdcGoerli, &UsdcOptimism, &SntMainnet, &DaiMainnet, &DaiGoerli, }
TestTokens contains ETH/Mainnet, ETH/Goerli, ETH/Optimism, USDC/Mainnet, USDC/Goerli, USDC/Optimism, SNT/Mainnet, DAI/Mainnet, DAI/Goerli
var UsdcGoerli = token.Token{ Address: eth_common.HexToAddress("0x98339d8c260052b7ad81c28c16c0b98420f2b46a"), Name: "USD Coin", Symbol: "USDC", ChainID: 5, }
var UsdcMainnet = token.Token{ Address: eth_common.HexToAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), Name: "USD Coin", Symbol: "USDC", ChainID: 1, }
var UsdcOptimism = token.Token{ Address: eth_common.HexToAddress("0x7f5c764cbc14f9669b88837ca1490cca17c31607"), Name: "USD Coin", Symbol: "USDC", ChainID: 10, }
Functions ¶
func GenerateTxField ¶ added in v0.170.0
func GenerateTxField(data []byte) *types.Transaction
func GetOwnedMultiTransactionID ¶ added in v0.166.9
func GetOwnedMultiTransactionID(tx *sql.Tx, chainID w_common.ChainID, hash common.Hash, address common.Address) (mTID int64, err error)
GetOwnedMultiTransactionID returns sql.ErrNoRows if no transaction is found for the given identity
func InsertTestMultiTransaction ¶ added in v0.151.4
func InsertTestMultiTransaction(tb testing.TB, db *sql.DB, tr *MultiTransaction) common.MultiTransactionIDType
func InsertTestPendingTransaction ¶ added in v0.152.2
func InsertTestPendingTransaction(tb testing.TB, db *sql.DB, tr *TestTransfer)
func InsertTestTransfer ¶ added in v0.151.4
func InsertTestTransfer(tb testing.TB, db *sql.DB, address eth_common.Address, tr *TestTransfer)
func InsertTestTransferWithOptions ¶ added in v0.159.10
func InsertTestTransferWithOptions(tb testing.TB, db *sql.DB, address eth_common.Address, tr *TestTransfer, opt *TestTransferOptions)
func IsTransferDetectionEvent ¶ added in v0.173.0
func IsTransferDetectionEvent(ev walletevent.EventType) bool
func LookupTokenIdentity ¶ added in v0.174.5
func SaveTransfersMarkBlocksLoaded ¶ added in v0.171.30
func SaveTransfersMarkBlocksLoaded(database *Database, chainID uint64, address eth_common.Address, transfers []Transfer, blocks []*big.Int) error
For using in tests only outside the package
func SeedToToken ¶ added in v0.159.2
func SetMultiTransactionIDGenerator ¶ added in v0.179.16
func SetMultiTransactionIDGenerator(f func() common.MultiTransactionIDType)
func StaticIDCounter ¶ added in v0.179.16
func StaticIDCounter() (f func() common.MultiTransactionIDType)
func TestTrToToken ¶ added in v0.159.2
Types ¶
type BatchDownloader ¶
type BatchDownloader interface {
GetHeadersInRange(ctx context.Context, from, to *big.Int) ([]*DBHeader, error)
}
BatchDownloader interface for loading transfers in batches in speificed range of blocks.
type BlockDAO ¶ added in v0.148.4
type BlockDAO struct {
// contains filtered or unexported fields
}
func (*BlockDAO) GetBlocksToLoadByAddress ¶ added in v0.156.1
func (b *BlockDAO) GetBlocksToLoadByAddress(chainID uint64, address common.Address, limit int) (rst []*big.Int, err error)
GetBlocksToLoadByAddress gets unloaded blocks for a given address.
func (*BlockDAO) GetFirstKnownBlock ¶ added in v0.148.4
func (*BlockDAO) GetFirstSavedBlock ¶ added in v0.154.4
func (*BlockDAO) GetLastBlockByAddress ¶ added in v0.148.4
func (*BlockDAO) GetLastKnownBlockByAddress ¶ added in v0.148.4
func (*BlockDAO) GetLastKnownBlockByAddresses ¶ added in v0.148.4
func (b *BlockDAO) GetLastKnownBlockByAddresses(chainID uint64, addresses []common.Address) (map[common.Address]*Block, []common.Address, error)
TODO Remove the method below, it is used in one place and duplicates getLastKnownBlocks method with slight unneeded change
type BlockRange ¶ added in v0.151.13
type BlockRange struct { Start *big.Int // Block of first transfer FirstKnown *big.Int // Oldest scanned block LastKnown *big.Int // Last scanned block }
func NewBlockRange ¶ added in v0.151.13
func NewBlockRange() *BlockRange
type BlockRangeDAOer ¶ added in v0.171.33
type BlockRangeDAOer interface {
// contains filtered or unexported methods
}
type BlockRangeSequentialDAO ¶ added in v0.151.13
type BlockRangeSequentialDAO struct {
// contains filtered or unexported fields
}
type BlocksRange ¶
type BlocksRange struct {
// contains filtered or unexported fields
}
type ConcurrentDownloader ¶
type ConcurrentDownloader struct { *async.QueuedAtomicGroup *Result }
func NewConcurrentDownloader ¶
func NewConcurrentDownloader(ctx context.Context, limit uint32) *ConcurrentDownloader
NewConcurrentDownloader creates ConcurrentDownloader instance.
type Controller ¶
func NewTransferController ¶
func NewTransferController(db *sql.DB, accountsDB *statusaccounts.Database, rpcClient *rpc.Client, accountFeed *event.Feed, transferFeed *event.Feed, transactionManager *TransactionManager, pendingTxManager *transactions.PendingTxTracker, tokenManager *token.Manager, balanceCacher balance.Cacher, blockChainState *blockchainstate.BlockChainState) *Controller
func (*Controller) CheckRecentHistory ¶
func (c *Controller) CheckRecentHistory(chainIDs []uint64, accounts []common.Address) error
func (*Controller) GetCachedBalances ¶
func (*Controller) GetTransfersByAddress ¶
func (*Controller) GetTransfersForIdentities ¶ added in v0.151.4
func (c *Controller) GetTransfersForIdentities(ctx context.Context, identities []TransactionIdentity) ([]View, error)
func (*Controller) LoadTransferByHash ¶ added in v0.91.10
func (c *Controller) LoadTransferByHash(ctx context.Context, rpcClient *rpc.Client, address common.Address, hash common.Hash) error
Only used by status-mobile
func (*Controller) Start ¶
func (c *Controller) Start()
func (*Controller) Stop ¶
func (c *Controller) Stop()
type DBHeader ¶
type DBHeader struct { Number *big.Int Hash common.Hash Timestamp uint64 PreloadedTransactions []*PreloadedTransaction Network uint64 Address common.Address // Head is true if the block was a head at the time it was pulled from chain. Head bool // Loaded is true if transfers from this block have been already fetched Loaded bool }
DBHeader fields from header that are stored in database.
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database sql wrapper for operations with wallet objects.
func (*Database) GetLatestCollectibleTransfer ¶ added in v0.172.5
func (db *Database) GetLatestCollectibleTransfer(address common.Address, id thirdparty.CollectibleUniqueID) (*Transfer, error)
func (*Database) GetTransactionsToLoad ¶ added in v0.156.1
func (*Database) GetTransfers ¶
GetTransfers load transfers transfer between two blocks.
func (*Database) GetTransfersByAddress ¶
func (db *Database) GetTransfersByAddress(chainID uint64, address common.Address, toBlock *big.Int, limit int64) (rst []Transfer, err error)
GetTransfersByAddress loads transfers for a given address between two blocks.
func (*Database) GetTransfersByAddressAndBlock ¶
func (db *Database) GetTransfersByAddressAndBlock(chainID uint64, address common.Address, block *big.Int, limit int64) (rst []Transfer, err error)
GetTransfersByAddressAndBlock loads transfers for a given address and block.
func (*Database) GetTransfersForIdentities ¶ added in v0.151.4
func (*Database) GetTransfersInRange ¶
func (db *Database) GetTransfersInRange(chainID uint64, address common.Address, start, end *big.Int) (rst []Transfer, err error)
GetTransfersInRange loads transfers for a given address between two blocks.
type Downloader ¶
Downloader downloads transfers from single block using number.
type ERC20BlockRange ¶ added in v0.170.0
type ERC20BlockRange struct {
// contains filtered or unexported fields
}
type ERC20TransfersDownloader ¶
type ERC20TransfersDownloader struct {
// contains filtered or unexported fields
}
ERC20TransfersDownloader is a downloader for erc20 and erc721 tokens transfers. Since both transaction types share the same signature, both will be assigned type Erc20Transfer. Until the downloader gets refactored and a migration of the database gets implemented, differentiation between erc20 and erc721 will handled in the controller.
func NewERC20TransfersDownloader ¶
func NewERC20TransfersDownloader(client chain.ClientInterface, accounts []common.Address, signer types.Signer, incomingOnly bool) *ERC20TransfersDownloader
NewERC20TransfersDownloader returns new instance.
func (*ERC20TransfersDownloader) GetHeadersInRange ¶
func (d *ERC20TransfersDownloader) GetHeadersInRange(parent context.Context, from, to *big.Int) ([]*DBHeader, error)
GetHeadersInRange returns transfers between two blocks. time to get logs for 100000 blocks = 1.144686979s. with 249 events in the result set.
type ETHDownloader ¶
type ETHDownloader struct {
// contains filtered or unexported fields
}
ETHDownloader downloads regular eth transfers and tokens transfers.
func (*ETHDownloader) GetTransfersByNumber ¶
type FetchStrategyType ¶ added in v0.148.4
type FetchStrategyType int32
const (
SequentialFetchStrategyType FetchStrategyType = iota
)
type HeaderReader ¶
type HeaderReader interface { HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) }
HeaderReader interface for reading headers using block number or hash.
type HistoryFetcher ¶ added in v0.148.4
type HistoryFetcher interface {
// contains filtered or unexported methods
}
type InMemMultiTransactionStorage ¶ added in v0.179.26
type InMemMultiTransactionStorage struct {
// contains filtered or unexported fields
}
func NewInMemMultiTransactionStorage ¶ added in v0.179.26
func NewInMemMultiTransactionStorage() *InMemMultiTransactionStorage
func (*InMemMultiTransactionStorage) CreateMultiTransaction ¶ added in v0.179.26
func (s *InMemMultiTransactionStorage) CreateMultiTransaction(multiTx *MultiTransaction) error
func (*InMemMultiTransactionStorage) DeleteMultiTransaction ¶ added in v0.179.26
func (s *InMemMultiTransactionStorage) DeleteMultiTransaction(id common.MultiTransactionIDType) error
func (*InMemMultiTransactionStorage) GetMultiTransaction ¶ added in v0.179.26
func (s *InMemMultiTransactionStorage) GetMultiTransaction(id common.MultiTransactionIDType) (*MultiTransaction, error)
func (*InMemMultiTransactionStorage) ReadMultiTransactions ¶ added in v0.179.26
func (s *InMemMultiTransactionStorage) ReadMultiTransactions(details *MultiTxDetails) ([]*MultiTransaction, error)
func (*InMemMultiTransactionStorage) UpdateMultiTransaction ¶ added in v0.179.26
func (s *InMemMultiTransactionStorage) UpdateMultiTransaction(multiTx *MultiTransaction) error
type IterativeDownloader ¶
type IterativeDownloader struct {
// contains filtered or unexported fields
}
IterativeDownloader downloads batches of transfers in a specified size.
func SetupIterativeDownloader ¶
func SetupIterativeDownloader( client HeaderReader, downloader BatchDownloader, size *big.Int, to *big.Int, from *big.Int) (*IterativeDownloader, error)
SetupIterativeDownloader configures IterativeDownloader with last known synced block.
func (*IterativeDownloader) Finished ¶
func (d *IterativeDownloader) Finished() bool
Finished true when earliest block with given sync option is zero.
func (*IterativeDownloader) Header ¶
func (d *IterativeDownloader) Header() *big.Int
Header return last synced header.
func (*IterativeDownloader) Revert ¶
func (d *IterativeDownloader) Revert()
Revert reverts last step progress. Should be used if application failed to process transfers. For example failed to persist them.
type JSONBlob ¶
type JSONBlob struct {
// contains filtered or unexported fields
}
JSONBlob type for marshaling/unmarshaling inner type to json.
type MultiTransaction ¶ added in v0.135.2
type MultiTransaction struct { ID wallet_common.MultiTransactionIDType `json:"id"` Timestamp uint64 `json:"timestamp"` FromNetworkID uint64 `json:"fromNetworkID"` ToNetworkID uint64 `json:"toNetworkID"` FromTxHash common.Hash `json:"fromTxHash"` ToTxHash common.Hash `json:"toTxHash"` FromAddress common.Address `json:"fromAddress"` ToAddress common.Address `json:"toAddress"` FromAsset string `json:"fromAsset"` ToAsset string `json:"toAsset"` FromAmount *hexutil.Big `json:"fromAmount"` ToAmount *hexutil.Big `json:"toAmount"` Type MultiTransactionType `json:"type"` CrossTxID string }
func GenerateTestBridgeMultiTransaction ¶ added in v0.159.2
func GenerateTestBridgeMultiTransaction(fromTr, toTr TestTransfer) MultiTransaction
func GenerateTestSendMultiTransaction ¶ added in v0.159.2
func GenerateTestSendMultiTransaction(tr TestTransfer) MultiTransaction
func GenerateTestSwapMultiTransaction ¶ added in v0.159.2
func GenerateTestSwapMultiTransaction(tr TestTransfer, toToken string, toAmount int64) MultiTransaction
func NewMultiTransaction ¶ added in v0.179.16
type MultiTransactionCommand ¶ added in v0.158.0
type MultiTransactionCommandResult ¶ added in v0.158.0
type MultiTransactionDB ¶ added in v0.179.26
type MultiTransactionDB struct {
// contains filtered or unexported fields
}
func NewMultiTransactionDB ¶ added in v0.179.26
func NewMultiTransactionDB(db *sql.DB) *MultiTransactionDB
func (*MultiTransactionDB) CreateMultiTransaction ¶ added in v0.179.26
func (mtDB *MultiTransactionDB) CreateMultiTransaction(multiTransaction *MultiTransaction) error
func (*MultiTransactionDB) DeleteMultiTransaction ¶ added in v0.179.26
func (mtDB *MultiTransactionDB) DeleteMultiTransaction(id wallet_common.MultiTransactionIDType) error
func (*MultiTransactionDB) ReadMultiTransactions ¶ added in v0.179.26
func (mtDB *MultiTransactionDB) ReadMultiTransactions(details *MultiTxDetails) ([]*MultiTransaction, error)
func (*MultiTransactionDB) UpdateMultiTransaction ¶ added in v0.179.26
func (mtDB *MultiTransactionDB) UpdateMultiTransaction(multiTransaction *MultiTransaction) error
type MultiTransactionDBType ¶ added in v0.179.26
type MultiTransactionDBType MultiTransactionType
Since we already use MultitransactionIDType in DB, and its default value is 0 (Send) this type is used to with default value 0 to represent invalid type to avoid bugs when devs forget to call NewMultiTxDetails()
type MultiTransactionStorage ¶ added in v0.179.26
type MultiTransactionStorage interface { CreateMultiTransaction(tx *MultiTransaction) error ReadMultiTransactions(details *MultiTxDetails) ([]*MultiTransaction, error) UpdateMultiTransaction(tx *MultiTransaction) error DeleteMultiTransaction(id wallet_common.MultiTransactionIDType) error }
type MultiTransactionType ¶ added in v0.135.2
type MultiTransactionType uint8
type MultiTxDetails ¶ added in v0.179.26
type MultiTxDetails struct { IDs []wallet_common.MultiTransactionIDType AnyAddress common.Address FromAddress common.Address ToAddress common.Address ToChainID uint64 CrossTxID string Type MultiTransactionDBType }
func NewMultiTxDetails ¶ added in v0.179.26
func NewMultiTxDetails() *MultiTxDetails
type PreloadedTransaction ¶ added in v0.156.1
type PreloadedTransaction struct { Type w_common.Type `json:"type"` ID common.Hash `json:"-"` Address common.Address `json:"address"` // Log that was used to generate preloaded transaction. Log *types.Log `json:"log"` TokenID *big.Int `json:"tokenId"` Value *big.Int `json:"value"` }
Partial transaction info obtained by ERC20Downloader. A PreloadedTransaction represents a Transaction which contains one ERC20/ERC721/ERC1155 transfer event. To be converted into one Transfer object post-indexing.
type Reactor ¶
type Reactor struct {
// contains filtered or unexported fields
}
Reactor listens to new blocks and stores transfers into the database.
func NewReactor ¶ added in v0.148.4
func NewReactor(db *Database, blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, accountsDB *accounts.Database, feed *event.Feed, tm *TransactionManager, pendingTxManager *transactions.PendingTxTracker, tokenManager *token.Manager, balanceCacher balance.Cacher, omitHistory bool, blockChainState *blockchainstate.BlockChainState) *Reactor
type Result ¶
type Result struct {
// contains filtered or unexported fields
}
func (*Result) GetHeaders ¶
func (*Result) PushHeader ¶
type SeparatorType ¶ added in v0.151.4
type SeparatorType int
const ( NoSeparator SeparatorType = iota + 1 OrSeparator AndSeparator )
Beware: please update addWhereSeparator if changing this enum
type SequentialFetchStrategy ¶ added in v0.148.4
type SequentialFetchStrategy struct {
// contains filtered or unexported fields
}
func NewSequentialFetchStrategy ¶ added in v0.151.13
func NewSequentialFetchStrategy(db *Database, blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, accountsDB *accounts.Database, feed *event.Feed, transactionManager *TransactionManager, pendingTxManager *transactions.PendingTxTracker, tokenManager *token.Manager, chainClients map[uint64]chain.ClientInterface, accounts []common.Address, balanceCacher balance.Cacher, omitHistory bool, blockChainState *blockchainstate.BlockChainState, ) *SequentialFetchStrategy
type SignatureDetails ¶ added in v0.171.1
type SyncOption ¶
type SyncOption uint
SyncOption is used to specify that application processed transfers for that block.
type TestCollectible ¶ added in v0.167.5
type TestCollectibleTransfer ¶ added in v0.179.26
type TestCollectibleTransfer struct { TestTransfer TestCollectible }
type TestTransaction ¶ added in v0.151.4
type TestTransaction struct { Hash eth_common.Hash ChainID common.ChainID From eth_common.Address // [sender] Timestamp int64 BlkNumber int64 Success bool Nonce uint64 Contract eth_common.Address MultiTransactionID common.MultiTransactionIDType }
type TestTransfer ¶ added in v0.159.2
type TestTransfer struct { TestTransaction To eth_common.Address // [address] Value int64 Token *token.Token }
func GenerateTestTransfers ¶ added in v0.159.2
func GenerateTestTransfers(tb testing.TB, db *sql.DB, firstStartIndex int, count int) (result []TestTransfer, fromAddresses, toAddresses []eth_common.Address)
GenerateTestTransfers will generate transaction based on the TestTokens index and roll over if there are more than len(TestTokens) transactions
type TestTransferOptions ¶ added in v0.159.10
type TestTransferOptions struct { TokenAddress eth_common.Address TokenID *big.Int NullifyAddresses []eth_common.Address Tx *types.Transaction Receipt *types.Receipt }
type Transaction ¶ added in v0.161.4
type Transaction []*Transfer
type TransactionDescription ¶ added in v0.171.1
type TransactionDescription struct {
// contains filtered or unexported fields
}
type TransactionIdentity ¶ added in v0.151.4
type TransactionManager ¶ added in v0.135.2
type TransactionManager struct {
// contains filtered or unexported fields
}
func NewTransactionManager ¶ added in v0.135.2
func NewTransactionManager( storage MultiTransactionStorage, gethManager *account.GethManager, transactor transactions.TransactorIface, config *params.NodeConfig, accountsDB accounts.AccountsStorage, pendingTxManager *transactions.PendingTxTracker, eventFeed *event.Feed, ) *TransactionManager
func (*TransactionManager) BuildRawTransaction ¶ added in v0.171.27
func (tm *TransactionManager) BuildRawTransaction(chainID uint64, sendArgs transactions.SendTxArgs, signature []byte) (response *TxResponse, err error)
func (*TransactionManager) BuildTransaction ¶ added in v0.171.25
func (tm *TransactionManager) BuildTransaction(chainID uint64, sendArgs transactions.SendTxArgs) (response *TxResponse, err error)
func (*TransactionManager) CreateMultiTransactionFromCommand ¶ added in v0.158.0
func (tm *TransactionManager) CreateMultiTransactionFromCommand(command *MultiTransactionCommand, data []*bridge.TransactionBridge) (*MultiTransaction, error)
func (*TransactionManager) GetBridgeDestinationMultiTransaction ¶ added in v0.161.4
func (tm *TransactionManager) GetBridgeDestinationMultiTransaction(ctx context.Context, toChainID uint64, crossTxID string) (*MultiTransaction, error)
func (*TransactionManager) GetBridgeOriginMultiTransaction ¶ added in v0.161.4
func (tm *TransactionManager) GetBridgeOriginMultiTransaction(ctx context.Context, toChainID uint64, crossTxID string) (*MultiTransaction, error)
func (*TransactionManager) GetMultiTransactions ¶ added in v0.138.1
func (tm *TransactionManager) GetMultiTransactions(ctx context.Context, ids []wallet_common.MultiTransactionIDType) ([]*MultiTransaction, error)
func (*TransactionManager) InsertMultiTransaction ¶ added in v0.156.1
func (tm *TransactionManager) InsertMultiTransaction(multiTransaction *MultiTransaction) (wallet_common.MultiTransactionIDType, error)
func (*TransactionManager) ProceedWithTransactionsSignatures ¶ added in v0.171.1
func (tm *TransactionManager) ProceedWithTransactionsSignatures(ctx context.Context, signatures map[string]SignatureDetails) (*MultiTransactionCommandResult, error)
func (*TransactionManager) SendTransactionForSigningToKeycard ¶ added in v0.179.16
func (tm *TransactionManager) SendTransactionForSigningToKeycard(ctx context.Context, multiTransaction *MultiTransaction, data []*bridge.TransactionBridge, bridges map[string]bridge.Bridge) error
func (*TransactionManager) SendTransactionWithSignature ¶ added in v0.171.25
func (tm *TransactionManager) SendTransactionWithSignature(chainID uint64, sendArgs transactions.SendTxArgs, signature []byte) (hash types.Hash, err error)
func (*TransactionManager) SendTransactions ¶ added in v0.179.16
func (tm *TransactionManager) SendTransactions(ctx context.Context, multiTransaction *MultiTransaction, data []*bridge.TransactionBridge, bridges map[string]bridge.Bridge, account *account.SelectedExtKey) (*MultiTransactionCommandResult, error)
func (*TransactionManager) SignMessage ¶ added in v0.171.25
func (*TransactionManager) UpdateMultiTransaction ¶ added in v0.161.4
func (tm *TransactionManager) UpdateMultiTransaction(multiTransaction *MultiTransaction) error
func (*TransactionManager) WatchTransaction ¶ added in v0.179.27
type Transfer ¶
type Transfer struct { Type w_common.Type `json:"type"` ID common.Hash `json:"-"` Address common.Address `json:"address"` BlockNumber *big.Int `json:"blockNumber"` BlockHash common.Hash `json:"blockhash"` Timestamp uint64 `json:"timestamp"` Transaction *types.Transaction `json:"transaction"` Loaded bool NetworkID uint64 // From is derived from tx signature in order to offload this computation from UI component. From common.Address `json:"from"` Receipt *types.Receipt `json:"receipt"` // Log that was used to generate erc20 transfer. Nil for eth transfer. Log *types.Log `json:"log"` // TokenID is the id of the transferred token. Nil for eth transfer. TokenID *big.Int `json:"tokenId"` // TokenValue is the value of the token transfer. Nil for eth transfer. TokenValue *big.Int `json:"tokenValue"` BaseGasFees string // Internal field that is used to track multi-transaction transfers. MultiTransactionID w_common.MultiTransactionIDType `json:"multi_transaction_id"` }
Transfer stores information about transfer. A Transfer represents a plain ETH transfer or some token activity inside a Transaction Since ERC1155 transfers can contain multiple tokens, a single Transfer represents a single token transfer, that means ERC1155 batch transfers will be represented by multiple Transfer objects.
type TxResponse ¶ added in v0.171.25
type TxResponse struct { KeyUID string `json:"keyUid,omitempty"` Address types.Address `json:"address,omitempty"` AddressPath string `json:"addressPath,omitempty"` SignOnKeycard bool `json:"signOnKeycard,omitempty"` ChainID uint64 `json:"chainId,omitempty"` MessageToSign interface{} `json:"messageToSign,omitempty"` TxArgs transactions.SendTxArgs `json:"txArgs,omitempty"` RawTx string `json:"rawTx,omitempty"` TxHash common.Hash `json:"txHash,omitempty"` }
type View ¶
type View struct { ID common.Hash `json:"id"` Type w_common.Type `json:"type"` Address common.Address `json:"address"` BlockNumber *hexutil.Big `json:"blockNumber"` BlockHash common.Hash `json:"blockhash"` Timestamp hexutil.Uint64 `json:"timestamp"` GasPrice *hexutil.Big `json:"gasPrice"` MaxFeePerGas *hexutil.Big `json:"maxFeePerGas"` MaxPriorityFeePerGas *hexutil.Big `json:"maxPriorityFeePerGas"` EffectiveTip *hexutil.Big `json:"effectiveTip"` EffectiveGasPrice *hexutil.Big `json:"effectiveGasPrice"` GasLimit hexutil.Uint64 `json:"gasLimit"` GasUsed hexutil.Uint64 `json:"gasUsed"` Nonce hexutil.Uint64 `json:"nonce"` TxStatus hexutil.Uint64 `json:"txStatus"` Input hexutil.Bytes `json:"input"` TxHash common.Hash `json:"txHash"` Value *hexutil.Big `json:"value"` // Only used for Type EthTransfer and Erc20Transfer TokenID *hexutil.Big `json:"tokenId"` // Only used for Type Erc721Transfer From common.Address `json:"from"` To common.Address `json:"to"` Contract common.Address `json:"contract"` NetworkID uint64 `json:"networkId"` MultiTransactionID int64 `json:"multiTransactionID"` BaseGasFees string `json:"base_gas_fee"` }
View stores only fields used by a client and ensures that all relevant fields are encoded in hex.
func CastToTransferView ¶
Source Files
¶
- block_dao.go
- block_ranges_sequential_dao.go
- bridge_identifier.go
- commands.go
- commands_sequential.go
- concurrent.go
- controller.go
- database.go
- downloader.go
- helpers.go
- iterative.go
- multi_transaction_db.go
- query.go
- reactor.go
- sequential_fetch_strategy.go
- swap_identifier.go
- testutils.go
- transaction_manager.go
- transaction_manager_internal.go
- transaction_manager_multitransaction.go
- view.go