Documentation ¶
Index ¶
- Constants
- Variables
- type AddrLocker
- type AutoDeleteType
- type ConditionalRepeater
- type ErrBadNonce
- type GasCalculator
- type MockChainClient
- type MockETHClient
- type PendingNonceProvider
- type PendingTransaction
- type PendingTrxType
- type PendingTxTracker
- func (tm *PendingTxTracker) APIs() []ethrpc.API
- func (tm *PendingTxTracker) CountPendingTxsFromNonce(chainID common.ChainID, address eth.Address, nonce uint64) (pendingTx uint64, err error)
- func (tm *PendingTxTracker) Delete(ctx context.Context, chainID common.ChainID, transactionHash eth.Hash) error
- func (tm *PendingTxTracker) DeleteBySQLTx(tx *sql.Tx, chainID common.ChainID, hash eth.Hash) (notify func(), err error)
- func (tm *PendingTxTracker) GetAllPending() ([]*PendingTransaction, error)
- func (tm *PendingTxTracker) GetPendingByAddress(chainIDs []uint64, address eth.Address) ([]*PendingTransaction, error)
- func (tm *PendingTxTracker) GetPendingEntry(chainID common.ChainID, hash eth.Hash) (*PendingTransaction, error)
- func (tm *PendingTxTracker) Protocols() []p2p.Protocol
- func (tm *PendingTxTracker) Start() error
- func (tm *PendingTxTracker) Stop() error
- func (tm *PendingTxTracker) StoreAndTrackPendingTx(transaction *PendingTransaction) error
- func (tm *PendingTxTracker) TrackPendingTransaction(chainID common.ChainID, hash eth.Hash, from eth.Address, to eth.Address, ...) error
- func (tm *PendingTxTracker) Watch(ctx context.Context, chainID common.ChainID, hash eth.Hash) (*TxStatus, error)
- type PendingTxUpdatePayload
- type SendTxArgs
- type StatusChangedPayload
- type TaskFunc
- type TestTxSummary
- type Transactor
- func (t *Transactor) AddSignatureToTransaction(chainID uint64, tx *gethtypes.Transaction, sig []byte) (*gethtypes.Transaction, error)
- func (t *Transactor) BuildTransactionWithSignature(chainID uint64, args SendTxArgs, sig []byte) (*gethtypes.Transaction, error)
- func (t *Transactor) EstimateGas(network *params.Network, from common.Address, to common.Address, ...) (uint64, error)
- func (t *Transactor) HashTransaction(args SendTxArgs) (validatedArgs SendTxArgs, hash types.Hash, err error)
- func (t *Transactor) NetworkID() uint64
- func (t *Transactor) NextNonce(rpcClient rpc.ClientInterface, chainID uint64, from types.Address) (uint64, error)
- func (t *Transactor) SendRawTransaction(chainID uint64, rawTx string) error
- func (t *Transactor) SendTransaction(sendArgs SendTxArgs, verifiedAccount *account.SelectedExtKey) (hash types.Hash, err error)
- func (t *Transactor) SendTransactionWithChainID(chainID uint64, sendArgs SendTxArgs, verifiedAccount *account.SelectedExtKey) (hash types.Hash, err error)
- func (t *Transactor) SendTransactionWithSignature(from common.Address, symbol string, ...) (hash types.Hash, err error)
- func (t *Transactor) SetNetworkID(networkID uint64)
- func (t *Transactor) SetPendingTracker(tracker *PendingTxTracker)
- func (t *Transactor) SetRPC(rpcClient *rpc.Client, timeout time.Duration)
- func (t *Transactor) StoreAndTrackPendingTx(from common.Address, symbol string, chainID uint64, ...) error
- func (t *Transactor) ValidateAndBuildTransaction(chainID uint64, sendArgs SendTxArgs) (tx *gethtypes.Transaction, err error)
- type TransactorIface
- type TxIdentity
- type TxStatus
Constants ¶
const ( WorkNotDone = false WorkDone = true )
const ( // EventPendingTransactionUpdate is emitted when a pending transaction is updated (added or deleted). Carries PendingTxUpdatePayload in message EventPendingTransactionUpdate walletevent.EventType = "pending-transaction-update" // EventPendingTransactionStatusChanged carries StatusChangedPayload in message EventPendingTransactionStatusChanged walletevent.EventType = "pending-transaction-status-changed" PendingCheckInterval = 10 * time.Second GetTransactionReceiptRPCName = "eth_getTransactionReceipt" )
const (
ValidSignatureSize = 65
)
Variables ¶
var ( // ErrInvalidSendTxArgs is returned when the structure of SendTxArgs is ambigious. ErrInvalidSendTxArgs = errors.New("transaction arguments are invalid") // ErrUnexpectedArgs is returned when args are of unexpected length. ErrUnexpectedArgs = errors.New("unexpected args") //ErrInvalidTxSender is returned when selected account is different than From field. ErrInvalidTxSender = errors.New("transaction can only be send by its creator") //ErrAccountDoesntExist is sent when provided sub-account is not stored in database. ErrAccountDoesntExist = errors.New("account doesn't exist") )
var ErrInvalidSignatureSize = errors.New("signature size must be 65")
ErrInvalidSignatureSize is returned if a signature is not 65 bytes to avoid panic from go-ethereum
var (
ErrStillPending = errors.New("transaction is still pending")
)
Functions ¶
This section is empty.
Types ¶
type AddrLocker ¶
type AddrLocker struct {
// contains filtered or unexported fields
}
AddrLocker provides locks for addresses
func (*AddrLocker) LockAddr ¶
func (l *AddrLocker) LockAddr(address types.Address)
LockAddr locks an account's mutex. This is used to prevent another tx getting the same nonce until the lock is released. The mutex prevents the (an identical nonce) from being read again during the time that the first transaction is being signed.
func (*AddrLocker) UnlockAddr ¶
func (l *AddrLocker) UnlockAddr(address types.Address)
UnlockAddr unlocks the mutex of the given account.
type AutoDeleteType ¶ added in v0.166.1
type AutoDeleteType = bool
const ( AutoDelete AutoDeleteType = true Keep AutoDeleteType = false )
type ConditionalRepeater ¶ added in v0.166.1
type ConditionalRepeater struct {
// contains filtered or unexported fields
}
ConditionalRepeater runs a task at regular intervals until the task returns true. It doesn't allow running task in parallel and can be triggered early by call to RunUntilDone.
func NewConditionalRepeater ¶ added in v0.166.1
func NewConditionalRepeater(interval time.Duration, task TaskFunc) *ConditionalRepeater
func (*ConditionalRepeater) IsRunning ¶ added in v0.166.6
func (t *ConditionalRepeater) IsRunning() bool
func (*ConditionalRepeater) RunUntilDone ¶ added in v0.166.1
func (t *ConditionalRepeater) RunUntilDone()
RunUntilDone starts the task immediately and continues to run it at the defined interval until the task returns true. Can be called multiple times but it does not allow multiple concurrent executions of the task.
func (*ConditionalRepeater) Stop ¶ added in v0.166.1
func (t *ConditionalRepeater) Stop()
Stop forcefully stops the running task by canceling its context.
type ErrBadNonce ¶ added in v0.35.0
type ErrBadNonce struct {
// contains filtered or unexported fields
}
func (*ErrBadNonce) Error ¶ added in v0.35.0
func (e *ErrBadNonce) Error() string
type GasCalculator ¶
type GasCalculator interface { ethereum.GasEstimator ethereum.GasPricer }
GasCalculator provides methods for estimating and pricing gas.
type MockChainClient ¶ added in v0.172.5
type MockChainClient struct { mock.Mock mock_client.MockClientInterface Clients map[common.ChainID]*MockETHClient }
func NewMockChainClient ¶ added in v0.172.5
func NewMockChainClient() *MockChainClient
func (*MockChainClient) AbstractEthClient ¶ added in v0.172.5
func (m *MockChainClient) AbstractEthClient(chainID common.ChainID) (chain.BatchCallClient, error)
func (*MockChainClient) SetAvailableClients ¶ added in v0.172.5
func (m *MockChainClient) SetAvailableClients(chainIDs []common.ChainID) *MockChainClient
type MockETHClient ¶ added in v0.172.5
func (*MockETHClient) BatchCallContext ¶ added in v0.172.5
type PendingNonceProvider ¶
type PendingNonceProvider interface {
PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
}
PendingNonceProvider provides information about nonces.
type PendingTransaction ¶ added in v0.161.6
type PendingTransaction struct { Hash eth.Hash `json:"hash"` Timestamp uint64 `json:"timestamp"` Value bigint.BigInt `json:"value"` From eth.Address `json:"from"` To eth.Address `json:"to"` Data string `json:"data"` Symbol string `json:"symbol"` GasPrice bigint.BigInt `json:"gasPrice"` GasLimit bigint.BigInt `json:"gasLimit"` Type PendingTrxType `json:"type"` AdditionalData string `json:"additionalData"` ChainID common.ChainID `json:"network_id"` MultiTransactionID wallet_common.MultiTransactionIDType `json:"multi_transaction_id"` Nonce uint64 `json:"nonce"` // nil will insert the default value (Pending) in DB Status *TxStatus `json:"status,omitempty"` // nil will insert the default value (true) in DB AutoDelete *bool `json:"autoDelete,omitempty"` }
func GenerateTestPendingTransactions ¶ added in v0.172.5
func GenerateTestPendingTransactions(start int, count int) []PendingTransaction
func MockTestTransactions ¶ added in v0.172.5
func MockTestTransactions(t *testing.T, chainClient *MockChainClient, testTxs []TestTxSummary) []PendingTransaction
type PendingTrxType ¶ added in v0.161.6
type PendingTrxType string
const ( RegisterENS PendingTrxType = "RegisterENS" ReleaseENS PendingTrxType = "ReleaseENS" SetPubKey PendingTrxType = "SetPubKey" BuyStickerPack PendingTrxType = "BuyStickerPack" WalletTransfer PendingTrxType = "WalletTransfer" DeployCommunityToken PendingTrxType = "DeployCommunityToken" AirdropCommunityToken PendingTrxType = "AirdropCommunityToken" RemoteDestructCollectible PendingTrxType = "RemoteDestructCollectible" BurnCommunityToken PendingTrxType = "BurnCommunityToken" DeployOwnerToken PendingTrxType = "DeployOwnerToken" SetSignerPublicKey PendingTrxType = "SetSignerPublicKey" WalletConnectTransfer PendingTrxType = "WalletConnectTransfer" )
func GetOwnedPendingStatus ¶ added in v0.166.9
func GetOwnedPendingStatus(tx *sql.Tx, chainID common.ChainID, hash eth.Hash, ownerAddress eth.Address) (txType *PendingTrxType, mTID *int64, err error)
GetOwnedPendingStatus returns sql.ErrNoRows if no pending transaction is found for the given identity
type PendingTxTracker ¶ added in v0.166.1
type PendingTxTracker struct {
// contains filtered or unexported fields
}
PendingTxTracker implements StatusService in common/status_node_service.go
func NewPendingTxTracker ¶ added in v0.166.1
func NewPendingTxTracker(db *sql.DB, rpcClient rpc.ClientInterface, rpcFilter *rpcfilters.Service, eventFeed *event.Feed, checkInterval time.Duration) *PendingTxTracker
func (*PendingTxTracker) APIs ¶ added in v0.166.1
func (tm *PendingTxTracker) APIs() []ethrpc.API
APIs returns a list of new APIs.
func (*PendingTxTracker) CountPendingTxsFromNonce ¶ added in v0.177.1
func (*PendingTxTracker) Delete ¶ added in v0.166.1
func (tm *PendingTxTracker) Delete(ctx context.Context, chainID common.ChainID, transactionHash eth.Hash) error
Delete returns ErrStillPending if the deleted transaction was still pending The transactions are suppose to be deleted by the client only after they are confirmed
func (*PendingTxTracker) DeleteBySQLTx ¶ added in v0.166.1
func (tm *PendingTxTracker) DeleteBySQLTx(tx *sql.Tx, chainID common.ChainID, hash eth.Hash) (notify func(), err error)
DeleteBySQLTx returns ErrStillPending if the transaction is still pending
func (*PendingTxTracker) GetAllPending ¶ added in v0.166.1
func (tm *PendingTxTracker) GetAllPending() ([]*PendingTransaction, error)
func (*PendingTxTracker) GetPendingByAddress ¶ added in v0.166.1
func (tm *PendingTxTracker) GetPendingByAddress(chainIDs []uint64, address eth.Address) ([]*PendingTransaction, error)
func (*PendingTxTracker) GetPendingEntry ¶ added in v0.166.1
func (tm *PendingTxTracker) GetPendingEntry(chainID common.ChainID, hash eth.Hash) (*PendingTransaction, error)
GetPendingEntry returns sql.ErrNoRows if no pending transaction is found for the given identity
func (*PendingTxTracker) Protocols ¶ added in v0.166.1
func (tm *PendingTxTracker) Protocols() []p2p.Protocol
Protocols returns a new protocols list. In this case, there are none.
func (*PendingTxTracker) Start ¶ added in v0.166.1
func (tm *PendingTxTracker) Start() error
func (*PendingTxTracker) Stop ¶ added in v0.166.1
func (tm *PendingTxTracker) Stop() error
func (*PendingTxTracker) StoreAndTrackPendingTx ¶ added in v0.166.1
func (tm *PendingTxTracker) StoreAndTrackPendingTx(transaction *PendingTransaction) error
StoreAndTrackPendingTx store the details of a pending transaction and track it until it is mined
func (*PendingTxTracker) TrackPendingTransaction ¶ added in v0.166.1
func (tm *PendingTxTracker) TrackPendingTransaction(chainID common.ChainID, hash eth.Hash, from eth.Address, to eth.Address, trType PendingTrxType, autoDelete AutoDeleteType, additionalData string) error
PendingTransaction called with autoDelete = false will keep the transaction in the database until it is confirmed by the caller using Delete
type PendingTxUpdatePayload ¶ added in v0.172.5
type PendingTxUpdatePayload struct { TxIdentity Deleted bool `json:"deleted"` }
type SendTxArgs ¶
type SendTxArgs struct { From types.Address `json:"from"` To *types.Address `json:"to"` Gas *hexutil.Uint64 `json:"gas"` GasPrice *hexutil.Big `json:"gasPrice"` Value *hexutil.Big `json:"value"` Nonce *hexutil.Uint64 `json:"nonce"` MaxFeePerGas *hexutil.Big `json:"maxFeePerGas"` MaxPriorityFeePerGas *hexutil.Big `json:"maxPriorityFeePerGas"` // We keep both "input" and "data" for backward compatibility. // "input" is a preferred field. // see `vendor/github.com/ethereum/go-ethereum/internal/ethapi/api.go:1107` Input types.HexBytes `json:"input"` Data types.HexBytes `json:"data"` // additional data MultiTransactionID wallet_common.MultiTransactionIDType Symbol string }
SendTxArgs represents the arguments to submit a new transaction into the transaction pool. This struct is based on go-ethereum's type in internal/ethapi/api.go, but we have freedom over the exact layout of this struct.
func (SendTxArgs) GetInput ¶
func (args SendTxArgs) GetInput() types.HexBytes
GetInput returns either Input or Data field's value dependent on what is filled.
func (SendTxArgs) IsDynamicFeeTx ¶ added in v0.82.0
func (args SendTxArgs) IsDynamicFeeTx() bool
IsDynamicFeeTx checks whether dynamic fee parameters are set for the tx
func (SendTxArgs) ToTransactOpts ¶ added in v0.93.2
func (args SendTxArgs) ToTransactOpts(signerFn bind.SignerFn) *bind.TransactOpts
func (SendTxArgs) Valid ¶
func (args SendTxArgs) Valid() bool
Valid checks whether this structure is filled in correctly.
type StatusChangedPayload ¶ added in v0.166.1
type StatusChangedPayload struct { TxIdentity Status TxStatus `json:"status"` }
type TaskFunc ¶ added in v0.166.1
TaskFunc defines the task to be run. The context is canceled when Stop is called to early stop scheduled task.
type TestTxSummary ¶ added in v0.172.5
type Transactor ¶
type Transactor struct {
// contains filtered or unexported fields
}
Transactor validates, signs transactions. It uses upstream to propagate transactions to the Ethereum network.
func (*Transactor) AddSignatureToTransaction ¶ added in v0.171.21
func (t *Transactor) AddSignatureToTransaction(chainID uint64, tx *gethtypes.Transaction, sig []byte) (*gethtypes.Transaction, error)
func (*Transactor) BuildTransactionWithSignature ¶ added in v0.171.27
func (t *Transactor) BuildTransactionWithSignature(chainID uint64, args SendTxArgs, sig []byte) (*gethtypes.Transaction, error)
BuildTransactionAndSendWithSignature receive a transaction and a signature, serialize them together It's different from eth_sendRawTransaction because it receives a signature and not a serialized transaction with signature. Since the transactions is already signed, we assume it was validated and used the right nonce.
func (*Transactor) EstimateGas ¶ added in v0.171.10
func (*Transactor) HashTransaction ¶ added in v0.35.0
func (t *Transactor) HashTransaction(args SendTxArgs) (validatedArgs SendTxArgs, hash types.Hash, err error)
func (*Transactor) NetworkID ¶ added in v0.161.6
func (t *Transactor) NetworkID() uint64
func (*Transactor) NextNonce ¶ added in v0.125.0
func (t *Transactor) NextNonce(rpcClient rpc.ClientInterface, chainID uint64, from types.Address) (uint64, error)
func (*Transactor) SendRawTransaction ¶ added in v0.171.21
func (t *Transactor) SendRawTransaction(chainID uint64, rawTx string) error
func (*Transactor) SendTransaction ¶
func (t *Transactor) SendTransaction(sendArgs SendTxArgs, verifiedAccount *account.SelectedExtKey) (hash types.Hash, err error)
SendTransaction is an implementation of eth_sendTransaction. It queues the tx to the sign queue.
func (*Transactor) SendTransactionWithChainID ¶ added in v0.101.1
func (t *Transactor) SendTransactionWithChainID(chainID uint64, sendArgs SendTxArgs, verifiedAccount *account.SelectedExtKey) (hash types.Hash, err error)
func (*Transactor) SendTransactionWithSignature ¶ added in v0.35.0
func (t *Transactor) SendTransactionWithSignature(from common.Address, symbol string, multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) (hash types.Hash, err error)
func (*Transactor) SetNetworkID ¶
func (t *Transactor) SetNetworkID(networkID uint64)
SetNetworkID selects a correct network.
func (*Transactor) SetPendingTracker ¶ added in v0.176.10
func (t *Transactor) SetPendingTracker(tracker *PendingTxTracker)
SetPendingTracker sets a pending tracker.
func (*Transactor) SetRPC ¶
func (t *Transactor) SetRPC(rpcClient *rpc.Client, timeout time.Duration)
SetRPC sets RPC params, a client and a timeout
func (*Transactor) StoreAndTrackPendingTx ¶ added in v0.182.36
func (t *Transactor) StoreAndTrackPendingTx(from common.Address, symbol string, chainID uint64, multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) error
func (*Transactor) ValidateAndBuildTransaction ¶ added in v0.171.1
func (t *Transactor) ValidateAndBuildTransaction(chainID uint64, sendArgs SendTxArgs) (tx *gethtypes.Transaction, err error)
type TransactorIface ¶ added in v0.179.26
type TransactorIface interface { NextNonce(rpcClient rpc.ClientInterface, chainID uint64, from types.Address) (uint64, error) EstimateGas(network *params.Network, from common.Address, to common.Address, value *big.Int, input []byte) (uint64, error) SendTransaction(sendArgs SendTxArgs, verifiedAccount *account.SelectedExtKey) (hash types.Hash, err error) SendTransactionWithChainID(chainID uint64, sendArgs SendTxArgs, verifiedAccount *account.SelectedExtKey) (hash types.Hash, err error) ValidateAndBuildTransaction(chainID uint64, sendArgs SendTxArgs) (tx *gethtypes.Transaction, err error) AddSignatureToTransaction(chainID uint64, tx *gethtypes.Transaction, sig []byte) (*gethtypes.Transaction, error) SendRawTransaction(chainID uint64, rawTx string) error BuildTransactionWithSignature(chainID uint64, args SendTxArgs, sig []byte) (*gethtypes.Transaction, error) SendTransactionWithSignature(from common.Address, symbol string, multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) (hash types.Hash, err error) StoreAndTrackPendingTx(from common.Address, symbol string, chainID uint64, multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) error }
Transactor is an interface that defines the methods for validating and sending transactions.
type TxIdentity ¶ added in v0.172.5
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package fake is a generated GoMock package.
|
Package fake is a generated GoMock package. |
Package mock_transactor is a generated GoMock package.
|
Package mock_transactor is a generated GoMock package. |