wallet

package
v0.115.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2022 License: MPL-2.0 Imports: 36 Imported by: 0

README

Wallet service API

Wallet service provides RPC API for checking transfers history and other methods related to wallet functionality. To enable service two values need to be changed in the config:

  1. Set Enable to true in WalletConfig
{
  "WalletConfig": {
    "Enabled": true,
  }
}
  1. And expose wallet API with APIModules
{
  APIModules: "eth,net,web3,peer,wallet",
}

API

wallet_getTransfersByAddress

Returns avaiable transfers in a given range.

Parameters
  • address: HEX - ethereum address encoded in hex
  • toBlock: BIGINT - end of the range. if nil query will return last transfers.
  • limit: BIGINT - limit of returned transfers.
  • fetchMore: BOOLEAN - if true, there are less than limit fetched transfers in the database, and zero block is not reached yet, history will be scanned for more transfers. If false only transfers which are already fetched to the app's database will be returned.
Examples
{
  "jsonrpc":"2.0",
  "id":7,
  "method":"wallet_getTransfersByAddress",
  "params":[
    "0xb81a6845649fa8c042dfaceb3f7a684873406993",
    "0x0",
    "0x5",
    true
  ]
}
Returns
[
  {
    "id":"0xb1a8adeaa0e6727bf01d6d8431b6238bdefa915e19ae7e8ceb16886c9f5e",
    "type":"eth",
    "address":"0xd65f3cb52605a54a833ae118fb13",
    "blockNumber":"0xb7190",
    "blockhash":"0x8d98aa2297fe322d0093b24372e2ead98414959093b479baf670",
    "timestamp":"0x6048ec6",
    "gasPrice":"0x346308a00",
    "gasLimit":"0x508",
    "gasUsed":"0x520",
    "nonce":"0x13",
    "txStatus":"0x1",
    "input":"0x",
    "txHash":"0x1adeaa0e672d7e67bf01d8431b6238bdef15e19ae7e8ceb16886c",
    "value":"0x1",
    "from":"0x2f865fb5dfdf0dfdf54a833ae118fb1363aaasd",
    "to":"0xaaaaaaf3cb52605a54a833ae118fb1363a123123",
    "contract":"0x0000000000000000000000000000000000000000",
    "NetworkID":1
  },...
]
GetTransfersByAddressAndChainID

Returns avaiable transfers in a given range.

Parameters
  • chainID: INT - ethereum chain ID
  • address: HEX - ethereum address encoded in hex
  • toBlock: BIGINT - end of the range. if nil query will return last transfers.
  • limit: BIGINT - limit of returned transfers.
  • fetchMore: BOOLEAN - if true, there are less than limit fetched transfers in the database, and zero block is not reached yet, history will be scanned for more transfers. If false only transfers which are already fetched to the app's database will be returned.
Examples
{
  "jsonrpc":"2.0",
  "id":7,
  "method":"wallet_getTransfersByAddressAndChainID",
  "params":[
    1,
    "0xb81a6845649fa8c042dfaceb3f7a684873406993",
    "0x0",
    "0x5",
    true
  ]
}
Returns
[
  {
    "id":"0xb1a8adeaa0e6727bf01d6d8431b6238bdefa915e19ae7e8ceb16886c9f5e",
    "type":"eth",
    "address":"0xd65f3cb52605a54a833ae118fb13",
    "blockNumber":"0xb7190",
    "blockhash":"0x8d98aa2297fe322d0093b24372e2ead98414959093b479baf670",
    "timestamp":"0x6048ec6",
    "gasPrice":"0x346308a00",
    "gasLimit":"0x508",
    "gasUsed":"0x520",
    "nonce":"0x13",
    "txStatus":"0x1",
    "input":"0x",
    "txHash":"0x1adeaa0e672d7e67bf01d8431b6238bdef15e19ae7e8ceb16886c",
    "value":"0x1",
    "from":"0x2f865fb5dfdf0dfdf54a833ae118fb1363aaasd",
    "to":"0xaaaaaaf3cb52605a54a833ae118fb1363a123123",
    "contract":"0x0000000000000000000000000000000000000000",
    "NetworkID":1
  },...
]
wallet_setInitialBlocksRange

Sets zero block - latest block range as scanned for an account. It is used when a new multiaccount is generated to avoid scanning transfers history.

Example
{"jsonrpc":"2.0","id":7,"method":"wallet_setInitialBlocksRange","params":[]}
setInitialBlocksRangeForChainIDs

Sets zero block - latest block range as scanned for an account. It is used when a new multiaccount is generated to avoid scanning transfers history.

Parameters
  • chainIDs: []INT - array of ethereum chain ID to be initialized
Example
{"jsonrpc":"2.0","id":7,"method":"wallet_setInitialBlocksRangeForChainIDs","params":[[1, 2]]}
wallet_watchTransaction

Starts watching for transaction confirmation/rejection. If transaction was not confirmed/rejected in 10 minutes the call is timed out with error.

Parameters
  • tx-id: HEX - transaction hash
Example
{
  "jsonrpc":"2.0",
  "id":7,
  "method":"wallet_watchTransaction",
  "params":[
    "0xaaaaaaaa11111112222233333333"
  ]
}
wallet_watchTransactionByChainID

Starts watching for transaction confirmation/rejection. If transaction was not confirmed/rejected in 10 minutes the call is timed out with error.

Parameters
  • chainID: HEX - ethereum chain id
  • tx-id: HEX - transaction hash
Example
{
  "jsonrpc":"2.0",
  "id":7,
  "method":"wallet_watchTransactionByChainID",
  "params":[
    1,
    "0xaaaaaaaa11111112222233333333"
  ]
}
wallet_checkRecentHistory
Parameters
  • addresses: []HEX - array of addresses to be checked
Example
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_checkRecentHistory",
  "params":[
    [
      "0x23458d65f3cB52605a54AaA833ae118fb1111aaa",
      "0x24568B4166D11aaa1194097C60Cdc714F7e11111"
    ]
  ]
}
wallet_checkRecentHistoryForChainIDs
Parameters
  • chainIDs: []INT - array of ethereum chain ID to be checked
  • addresses: []HEX - array of addresses to be checked
Example
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_checkRecentHistoryForChainIDs",
  "params":[
    [1, 2],
    [
      "0x23458d65f3cB52605a54AaA833ae118fb1111aaa",
      "0x24568B4166D11aaa1194097C60Cdc714F7e11111"
    ]
  ]
}
wallet_getTokensBalancesForChainIDs

Returns tokens balances mapping for every account. See section below for the response example.

Parameters
  • chainIDs: []INT - array of ethereum chain ID
  • accounts HEX - list of ethereum addresses encoded in hex
  • tokens HEX - list of ethereum addresses encoded in hex
Request
{"jsonrpc":"2.0","id":11,"method":"wallet_getTokensBalancesForChainIDs","params":[
  [1, 2]
  ["0x066ed5c2ed45d70ad72f40de0b4dd97bd67d84de", "0x0ed535be4c0aa276942a1a782669790547ad8768"], 
  ["0x5e4bbdc178684478a615354d83c748a4393b20f0", "0x5e4bbdc178684478a615354d83c748a4393b20f0"]]
}
Returns

First level keys accounts, second level keys are tokens.

{
  "0x066ed5c2ed45d70ad72f40de0b4dd97bd67d84de": {
    "0x1dfb2099f936b3e98bfc9b7059a8fb04edcce5b3": 12,
    "0x5e4bbdc178684478a615354d83c748a4393b20f0": 12
  },
  "0x0ed535be4c0aa276942a1a782669790547ad8768": {
    "0x1dfb2099f936b3e98bfc9b7059a8fb04edcce5b3": 14,
    "0x5e4bbdc178684478a615354d83c748a4393b20f0": 14
  }
}
wallet_getTokensBalances

Returns tokens balances mapping for every account. See section below for the response example.

Parameters
  • accounts HEX - list of ethereum addresses encoded in hex
  • tokens HEX - list of ethereum addresses encoded in hex
Request
{"jsonrpc":"2.0","id":11,"method":"wallet_getTokensBalances","params":[["0x066ed5c2ed45d70ad72f40de0b4dd97bd67d84de", "0x0ed535be4c0aa276942a1a782669790547ad8768"], ["0x5e4bbdc178684478a615354d83c748a4393b20f0", "0x5e4bbdc178684478a615354d83c748a4393b20f0"]]}
Returns

First level keys accounts, second level keys are tokens.

{
  "0x066ed5c2ed45d70ad72f40de0b4dd97bd67d84de": {
    "0x1dfb2099f936b3e98bfc9b7059a8fb04edcce5b3": 12,
    "0x5e4bbdc178684478a615354d83c748a4393b20f0": 12
  },
  "0x0ed535be4c0aa276942a1a782669790547ad8768": {
    "0x1dfb2099f936b3e98bfc9b7059a8fb04edcce5b3": 14,
    "0x5e4bbdc178684478a615354d83c748a4393b20f0": 14
  }
}
wallet_storePendingTransaction

Stores pending transation in the database.

Parameters
  • transaction OBJECT - list of ethereum addresses encoded in hex
Transaction
  • hash HEX
  • timestamp ``INT`
  • from HEX
  • to HEX
  • symbol VARCHAR - "ETH" for ethereum, otherwise ERC20 tokaen name, null for contract call
  • gasPrice BIGINT
  • gasLimit BIGINT
  • value BIGINT
  • data TEXT - transaction's data field
  • type VARCHAR
  • additionalData TEXT - arbitrary additional data
  • network_id INT - an optional network id
Request example
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_storePendingTransaction",
  "params":[
    {
      "hash":"0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e",
      "symbol":"ETH",
      "gasPrice":"2000000000",
      "value":"1000000000000000",
      "from":"0xaaaad65f3cB52605433ae118fb1363aaaaad2",
      "timestamp":1618584138787,
      "gasLimit":"21000",
      "to":"0x237f8B4166D64a2b94097C60Cdc714F7eC3aa079",
      "data":null
    }
  ]
}
wallet_getPendingTransactions

Returns all stored pending transactions.

Request
{"jsonrpc":"2.0","id":1,"method":"wallet_getPendingTransactions","params":[]}
Returns

First level keys accounts, second level keys are tokens.

{
  "jsonrpc":"2.0",
  "id":1,
  "result":[
    {
      "hash":"0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e",
      "timestamp":1618584138787,
      "value":"1000000000000000",
      "from":"0xaaaaaaaa605a54a833ae118fb1aaaaaaaaaaa",
      "to":"0x237f8b4166d64a2b94097c60cdc714f7ec3aa079",
      "data":"",
      "symbol":"ETH",
      "gasPrice":"2000000000",
      "gasLimit":"21000",
      "type":"",
      "additionalData":""
    },
    ...
  ]
}
wallet_getPendingTransactionsByChainID

Returns all stored pending transactions.

Parameters
  • chainID INT - ethereum chain ID
Request
{"jsonrpc":"2.0","id":1,"method":"wallet_getPendingTransactions","params":[1]}
Returns

First level keys accounts, second level keys are tokens.

{
  "jsonrpc":"2.0",
  "id":1,
  "result":[
    {
      "hash":"0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e",
      "timestamp":1618584138787,
      "value":"1000000000000000",
      "from":"0xaaaaaaaa605a54a833ae118fb1aaaaaaaaaaa",
      "to":"0x237f8b4166d64a2b94097c60cdc714f7ec3aa079",
      "data":"",
      "symbol":"ETH",
      "gasPrice":"2000000000",
      "gasLimit":"21000",
      "type":"",
      "additionalData":"",
      "network_id": 1
    },
    ...
  ]
}
wallet_getPendingOutboundTransactionsByAddress

Returns all stored pending transaction sent from address.

Parameters
  • address HEX
Request
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_getPendingOutboundTransactionsByAddress",
  "params":[
    "0xaaaaaaaa605a54a833ae118fb1aaaaaaaaaaa"
  ]
}
Returns

First level keys accounts, second level keys are tokens.

{
  "jsonrpc":"2.0",
  "id":1,
  "result":[
    {
      "hash":"0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e",
      "timestamp":1618584138787,
      "value":"1000000000000000",
      "from":"0xaaaaaaaa605a54a833ae118fb1aaaaaaaaaaa",
      "to":"0x237f8b4166d64a2b94097c60cdc714f7ec3aa079",
      "data":"",
      "symbol":"ETH",
      "gasPrice":"2000000000",
      "gasLimit":"21000",
      "type":"",
      "additionalData":""
    },
    ...
  ]
}
wallet_getPendingOutboundTransactionsByAddressAndChainID

Returns all stored pending transaction sent from address.

Parameters
  • chainID INT
  • address HEX
Request
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_getPendingOutboundTransactionsByAddress",
  "params":[
    1,
    "0xaaaaaaaa605a54a833ae118fb1aaaaaaaaaaa"
  ]
}
Returns

First level keys accounts, second level keys are tokens.

{
  "jsonrpc":"2.0",
  "id":1,
  "result":[
    {
      "hash":"0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e",
      "timestamp":1618584138787,
      "value":"1000000000000000",
      "from":"0xaaaaaaaa605a54a833ae118fb1aaaaaaaaaaa",
      "to":"0x237f8b4166d64a2b94097c60cdc714f7ec3aa079",
      "data":"",
      "symbol":"ETH",
      "gasPrice":"2000000000",
      "gasLimit":"21000",
      "type":"",
      "additionalData":"",
      "network_id": 1
    },
    ...
  ]
}
wallet_deletePendingTransaction

Deletes pending transaction from the database by hash.

Parameters
  • hash HEX
Request
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_deletePendingTransaction",
  "params":[
    "0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e"
  ]
}
wallet_deletePendingTransactionByChainID

Deletes pending transaction from the database by hash.

Parameters
  • chainID INT
  • hash HEX
Request
{
  "jsonrpc":"2.0",
  "id":1,
  "method":"wallet_deletePendingTransaction",
  "params":[
    1,
    "0x3bce2c2d0fffbd2862ef3ec61a62872e54954551585fa0072d8e5c2f6be3523e"
  ]
}

Signals


All events are of the same format:

{
  "type": "wallet",
  "event": {
    "type": "event-type",
    "blockNumber": 0,
    "accounts": [
      "0x42c8f505b4006d417dd4e0ba0e880692986adbd8",
      "0x3129mdasmeo132128391fml1130410k312312mll"
    ],
    "message": "something might be here"
  }
}
  1. new-transfers

Emitted when transfers are detected. In this case block number is a block number of the latest found transfer. Client expected to request transfers starting from received block.

  1. recent-history-fetching

Emitted when history scanning is started.

  1. recent-history-ready

Emitted when history scanning is ended.

  1. fetching-history-error

Emitted when when history can't be fetched because some error. Error's decritption can be found in message field.

  1. non-archival-node-detected

Emitted when the application is connected to a non-archival node.

Flows

Account creation

When a new multiaccount is created corresponding address will not contain any transaction. Thus no point in checking history, it will be empty.

  1. Call wallet_setInitialRange
  2. Call wallet_checkRecentHistory
  3. On recent-history-ready request transactions via wallet_getTransfersByAddress
  4. Repeat wallet_checkRecentHistory in N minutes (currently 20 minutes in status-mobile for upstream RPC node. If a custom node is used interval can be arbitrary)
Logging into application
  1. Call wallet_checkRecentHistory
  2. On recent-history-ready request transactions via wallet_getTransfersByAddress
  3. Repeat wallet_checkRecentHistory in N minutes (currently 20 minutes in status-mobile for upstream RPC node. If a custom node is used interval can be arbitrary)
Watching transaction
  1. Call wallet_watchTransaction
  2. On success call wallet_checkRecentHistory
  3. On recent-history-ready request transactions via wallet_getTransfersByAddress

Documentation

Index

Constants

View Source
const (
	MultiTransactionSend = iota
	MultiTransactionSwap
	MultiTransactionBridge
)
View Source
const AssetLimit = 50
View Source
const CollectionLimit = 300
View Source
const EstimatePubKey = "" /* 132-byte string literal not displayed */
View Source
const EstimateUsername = "RandomUsername"

Variables

View Source
var BaseURLs = map[uint64]string{
	1: "https://api.opensea.io/api/v1",
	4: "https://rinkeby-api.opensea.io/api/v1",
	5: "https://testnets-api.opensea.io/api/v1",
}

Functions

This section is empty.

Types

type API

type API struct {
	// contains filtered or unexported fields
}

API is class with methods available over RPC.

func NewAPI

func NewAPI(s *Service) *API

func (*API) AddCustomToken added in v0.38.1

func (api *API) AddCustomToken(ctx context.Context, token token.Token) error

func (*API) AddEthereumChain added in v0.86.7

func (api *API) AddEthereumChain(ctx context.Context, network params.Network) error

func (*API) AddSavedAddress added in v0.86.7

func (api *API) AddSavedAddress(ctx context.Context, sa SavedAddress) error

func (*API) CheckRecentHistory added in v0.75.0

func (api *API) CheckRecentHistory(ctx context.Context, addresses []common.Address) error

func (*API) CheckRecentHistoryForChainIDs added in v0.86.7

func (api *API) CheckRecentHistoryForChainIDs(ctx context.Context, chainIDs []uint64, addresses []common.Address) error

func (*API) CreateMultiTransaction added in v0.103.2

func (api *API) CreateMultiTransaction(ctx context.Context, multiTransaction *MultiTransaction, data []*bridge.TransactionBridge, password string) (*MultiTransactionResult, error)

func (*API) DeleteCustomToken added in v0.38.1

func (api *API) DeleteCustomToken(ctx context.Context, address common.Address) error

func (*API) DeleteCustomTokenByChainID added in v0.86.7

func (api *API) DeleteCustomTokenByChainID(ctx context.Context, chainID uint64, address common.Address) error

func (*API) DeleteEthereumChain added in v0.86.7

func (api *API) DeleteEthereumChain(ctx context.Context, chainID uint64) error

func (*API) DeletePendingTransaction added in v0.62.0

func (api *API) DeletePendingTransaction(ctx context.Context, transactionHash common.Hash) error

func (*API) DeletePendingTransactionByChainID added in v0.86.7

func (api *API) DeletePendingTransactionByChainID(ctx context.Context, chainID uint64, transactionHash common.Hash) error

func (*API) DeleteSavedAddress added in v0.86.7

func (api *API) DeleteSavedAddress(ctx context.Context, address common.Address) error

func (*API) DiscoverToken added in v0.98.1

func (api *API) DiscoverToken(ctx context.Context, chainID uint64, address common.Address) (*token.Token, error)

func (*API) FetchMarketValues added in v0.106.1

func (api *API) FetchMarketValues(ctx context.Context, symbols []string, currency string) (map[string]MarketCoinValues, error)

func (*API) FetchPrices added in v0.96.4

func (api *API) FetchPrices(ctx context.Context, symbols []string, currency string) (map[string]float64, error)

func (*API) FetchTokenDetails added in v0.106.1

func (api *API) FetchTokenDetails(ctx context.Context, symbols []string) (map[string]Coin, error)

func (*API) GetBalanceHistory added in v0.114.3

func (api *API) GetBalanceHistory(ctx context.Context, chainID uint64, address common.Address, timeInterval transfer.BalanceHistoryTimeInterval) ([]transfer.BalanceState, error)

GetBalanceHistory retrieves native token. Will be extended later to support token balance history

func (*API) GetCachedBalances added in v0.79.4

func (api *API) GetCachedBalances(ctx context.Context, addresses []common.Address) ([]transfer.LastKnownBlockView, error)

func (*API) GetCachedBalancesbyChainID added in v0.86.7

func (api *API) GetCachedBalancesbyChainID(ctx context.Context, chainID uint64, addresses []common.Address) ([]transfer.LastKnownBlockView, error)

func (*API) GetCryptoOnRamps added in v0.71.4

func (api *API) GetCryptoOnRamps(ctx context.Context) ([]CryptoOnRamp, error)

func (*API) GetCustomTokens added in v0.38.1

func (api *API) GetCustomTokens(ctx context.Context) ([]*token.Token, error)

func (*API) GetDailyMarketValues added in v0.111.5

func (api *API) GetDailyMarketValues(ctx context.Context, symbol string, currency string, limit int, allData bool, aggregate int) ([]TokenHistoricalPairs, error)

func (*API) GetDerivedAddressDetails added in v0.114.1

func (api *API) GetDerivedAddressDetails(ctx context.Context, address string) (*DerivedAddress, error)

func (*API) GetDerivedAddressForPrivateKey added in v0.100.0

func (api *API) GetDerivedAddressForPrivateKey(ctx context.Context, privateKey string) ([]*DerivedAddress, error)

func (*API) GetDerivedAddressesForMnemonicWithPath added in v0.102.6

func (api *API) GetDerivedAddressesForMnemonicWithPath(ctx context.Context, mnemonic string, path string, pageSize int, pageNumber int) ([]*DerivedAddress, error)

func (*API) GetDerivedAddressesForPath added in v0.100.0

func (api *API) GetDerivedAddressesForPath(ctx context.Context, password string, derivedFrom string, path string, pageSize int, pageNumber int) ([]*DerivedAddress, error)

func (*API) GetEthereumChains added in v0.86.7

func (api *API) GetEthereumChains(ctx context.Context, onlyEnabled bool) ([]*params.Network, error)

func (*API) GetHourlyMarketValues added in v0.111.5

func (api *API) GetHourlyMarketValues(ctx context.Context, symbol string, currency string, limit int, aggregate int) ([]TokenHistoricalPairs, error)

func (*API) GetOpenseaAssetsByOwnerAndCollection added in v0.83.17

func (api *API) GetOpenseaAssetsByOwnerAndCollection(ctx context.Context, chainID uint64, owner common.Address, collectionSlug string, limit int) ([]OpenseaAsset, error)

func (*API) GetOpenseaCollectionsByOwner added in v0.83.17

func (api *API) GetOpenseaCollectionsByOwner(ctx context.Context, chainID uint64, owner common.Address) ([]OpenseaCollection, error)

func (*API) GetPendingOutboundTransactionsByAddress added in v0.62.0

func (api *API) GetPendingOutboundTransactionsByAddress(ctx context.Context, address common.Address) ([]*PendingTransaction, error)

func (*API) GetPendingOutboundTransactionsByAddressAndChainID added in v0.86.7

func (api *API) GetPendingOutboundTransactionsByAddressAndChainID(ctx context.Context, chainIDs []uint64, address common.Address) ([]*PendingTransaction, error)

func (*API) GetPendingTransactions added in v0.62.0

func (api *API) GetPendingTransactions(ctx context.Context) ([]*PendingTransaction, error)

func (*API) GetPendingTransactionsByChainIDs added in v0.102.6

func (api *API) GetPendingTransactionsByChainIDs(ctx context.Context, chainIDs []uint64) ([]*PendingTransaction, error)

func (*API) GetSavedAddresses added in v0.86.7

func (api *API) GetSavedAddresses(ctx context.Context) ([]SavedAddress, error)

func (*API) GetSuggestedFees added in v0.97.4

func (api *API) GetSuggestedFees(ctx context.Context, chainID uint64) (*SuggestedFees, error)

func (*API) GetSuggestedRoutes added in v0.101.1

func (api *API) GetSuggestedRoutes(ctx context.Context, sendType SendType, account common.Address, amountIn *hexutil.Big, tokenSymbol string, disabledFromChainIDs, disabledToChaindIDs, preferedChainIDs []uint64, gasFeeMode GasFeeMode) (*SuggestedRoutes, error)

func (*API) GetTokens added in v0.93.2

func (api *API) GetTokens(ctx context.Context, chainID uint64) ([]*token.Token, error)

func (*API) GetTokensBalances

func (api *API) GetTokensBalances(ctx context.Context, accounts, addresses []common.Address) (map[common.Address]map[common.Address]*hexutil.Big, error)

GetTokensBalances return mapping of token balances for every account.

func (*API) GetTokensBalancesForChainIDs added in v0.86.7

func (api *API) GetTokensBalancesForChainIDs(ctx context.Context, chainIDs []uint64, accounts, addresses []common.Address) (map[common.Address]map[common.Address]*hexutil.Big, error)

func (*API) GetTransactionEstimatedTime added in v0.103.2

func (api *API) GetTransactionEstimatedTime(ctx context.Context, chainID uint64, maxFeePerGas *big.Float) (TransactionEstimation, error)

func (*API) GetTransfersByAddress

func (api *API) GetTransfersByAddress(ctx context.Context, address common.Address, toBlock, limit *hexutil.Big, fetchMore bool) ([]transfer.View, error)

GetTransfersByAddress returns transfers for a single address

func (*API) GetTransfersByAddressAndChainID added in v0.86.7

func (api *API) GetTransfersByAddressAndChainID(ctx context.Context, chainID uint64, address common.Address, toBlock, limit *hexutil.Big, fetchMore bool) ([]transfer.View, error)

func (*API) GetVisibleTokens added in v0.98.3

func (api *API) GetVisibleTokens(chainIDs []uint64) (map[uint64][]*token.Token, error)

func (*API) GetWallet added in v0.100.0

func (api *API) GetWallet(ctx context.Context, chainIDs []uint64) (*Wallet, error)

func (*API) LoadTransferByHash added in v0.91.10

func (api *API) LoadTransferByHash(ctx context.Context, address common.Address, hash common.Hash) error

LoadTransferByHash loads transfer to the database

func (*API) SetInitialBlocksRange added in v0.73.1

func (api *API) SetInitialBlocksRange(ctx context.Context) error

SetInitialBlocksRange sets initial blocks range

func (*API) SetInitialBlocksRangeForChainIDs added in v0.86.7

func (api *API) SetInitialBlocksRangeForChainIDs(ctx context.Context, chainIDs []uint64) error

func (*API) StartWallet added in v0.100.0

func (api *API) StartWallet(ctx context.Context, chainIDs []uint64) error

func (*API) StorePendingTransaction added in v0.62.0

func (api *API) StorePendingTransaction(ctx context.Context, trx PendingTransaction) error

func (*API) ToggleVisibleToken added in v0.98.3

func (api *API) ToggleVisibleToken(ctx context.Context, chainID uint64, address common.Address) (bool, error)

func (*API) WatchTransaction added in v0.74.1

func (api *API) WatchTransaction(ctx context.Context, transactionHash common.Hash) error

func (*API) WatchTransactionByChainID added in v0.86.7

func (api *API) WatchTransactionByChainID(ctx context.Context, chainID uint64, transactionHash common.Hash) error

type Coin added in v0.106.1

type Coin struct {
	ID                   string  `json:"Id"`
	Name                 string  `json:"Name"`
	Symbol               string  `json:"Symbol"`
	Description          string  `json:"Description"`
	TotalCoinsMined      float64 `json:"TotalCoinsMined"`
	AssetLaunchDate      string  `json:"AssetLaunchDate"`
	AssetWhitepaperURL   string  `json:"AssetWhitepaperUrl"`
	AssetWebsiteURL      string  `json:"AssetWebsiteUrl"`
	BuiltOn              string  `json:"BuiltOn"`
	SmartContractAddress string  `json:"SmartContractAddress"`
}

type CoinsContainer added in v0.106.1

type CoinsContainer struct {
	Data map[string]Coin `json:"Data"`
}

type CryptoOnRamp added in v0.71.4

type CryptoOnRamp struct {
	Name        string            `json:"name"`
	Description string            `json:"description"`
	Fees        string            `json:"fees"`
	LogoURL     string            `json:"logoUrl"`
	SiteURL     string            `json:"siteUrl"`
	Hostname    string            `json:"hostname"`
	Params      map[string]string `json:"params"` // TODO implement params in JSON and parsing status-mobile
}

type CryptoOnRampManager added in v0.71.4

type CryptoOnRampManager struct {
	LastCalled time.Time
	// contains filtered or unexported fields
}

func NewCryptoOnRampManager added in v0.71.4

func NewCryptoOnRampManager(options *CryptoOnRampOptions) *CryptoOnRampManager

func (*CryptoOnRampManager) Get added in v0.71.4

func (c *CryptoOnRampManager) Get() ([]CryptoOnRamp, error)

type CryptoOnRampOptions added in v0.71.4

type CryptoOnRampOptions struct {
	// contains filtered or unexported fields
}

type DataSourceType added in v0.71.4

type DataSourceType int
const (
	DataSourceHTTP DataSourceType = iota + 1
	DataSourceStatic
)

type DerivedAddress added in v0.100.0

type DerivedAddress struct {
	Address        common.Address `json:"address"`
	Path           string         `json:"path"`
	HasActivity    bool           `json:"hasActivity"`
	AlreadyCreated bool           `json:"alreadyCreated"`
}

type FeeHistory added in v0.97.4

type FeeHistory struct {
	BaseFeePerGas []string `json:"baseFeePerGas"`
}

type FeeManager added in v0.97.4

type FeeManager struct {
	RPCClient *rpc.Client
}

type GasFeeMode added in v0.113.0

type GasFeeMode int
const (
	GasFeeLow GasFeeMode = iota
	GasFeeMedium
	GasFeeHigh
)

type Graph added in v0.113.0

type Graph = []*Node

type HistoricalValuesContainer added in v0.111.5

type HistoricalValuesContainer struct {
	Aggregated     bool                   `json:"Aggregated"`
	TimeFrom       int64                  `json:"TimeFrom"`
	TimeTo         int64                  `json:"TimeTo"`
	HistoricalData []TokenHistoricalPairs `json:"Data"`
}

type HistoricalValuesData added in v0.111.5

type HistoricalValuesData struct {
	Data HistoricalValuesContainer `json:"Data"`
}

type MarketCoinValues added in v0.106.1

type MarketCoinValues struct {
	MKTCAP          string `json:"MKTCAP"`
	HIGHDAY         string `json:"HIGHDAY"`
	LOWDAY          string `json:"LOWDAY"`
	CHANGEPCTHOUR   string `json:"CHANGEPCTHOUR"`
	CHANGEPCTDAY    string `json:"CHANGEPCTDAY"`
	CHANGEPCT24HOUR string `json:"CHANGEPCT24HOUR"`
	CHANGE24HOUR    string `json:"CHANGE24HOUR"`
}

type MarketValuesContainer added in v0.106.1

type MarketValuesContainer struct {
	Display map[string]map[string]MarketCoinValues `json:"Display"`
}

type MultiTransaction added in v0.103.2

type MultiTransaction struct {
	ID          uint                 `json:"id"`
	Timestamp   uint64               `json:"timestamp"`
	FromAddress common.Address       `json:"fromAddress"`
	ToAddress   common.Address       `json:"toAddress"`
	FromAsset   string               `json:"fromAsset"`
	ToAsset     string               `json:"toAsset"`
	FromAmount  *hexutil.Big         `json:"fromAmount"`
	Type        MultiTransactionType `json:"type"`
}

type MultiTransactionResult added in v0.103.2

type MultiTransactionResult struct {
	ID     int64                   `json:"id"`
	Hashes map[uint64][]types.Hash `json:"hashes"`
}

type MultiTransactionType added in v0.103.2

type MultiTransactionType uint8

type Node added in v0.113.0

type Node struct {
	Path     *Path
	Children Graph
}

type OpenseaAsset added in v0.83.17

type OpenseaAsset struct {
	ID                int                    `json:"id"`
	Name              string                 `json:"name"`
	Description       string                 `json:"description"`
	Permalink         string                 `json:"permalink"`
	ImageThumbnailURL string                 `json:"image_thumbnail_url"`
	ImageURL          string                 `json:"image_url"`
	Contract          OpenseaContract        `json:"asset_contract"`
	Collection        OpenseaAssetCollection `json:"collection"`
	Traits            []OpenseaTrait         `json:"traits"`
	LastSale          OpenseaLastSale        `json:"last_sale"`
	SellOrders        []OpenseaSellOrder     `json:"sell_orders"`
	BackgroundColor   string                 `json:"background_color"`
}

type OpenseaAssetCollection added in v0.83.17

type OpenseaAssetCollection struct {
	Name string `json:"name"`
}

type OpenseaAssetContainer added in v0.83.17

type OpenseaAssetContainer struct {
	Assets []OpenseaAsset `json:"assets"`
}

type OpenseaClient added in v0.83.17

type OpenseaClient struct {
	// contains filtered or unexported fields
}

type OpenseaCollection added in v0.83.17

type OpenseaCollection struct {
	Name            string                            `json:"name"`
	Slug            string                            `json:"slug"`
	ImageURL        string                            `json:"image_url"`
	OwnedAssetCount int                               `json:"owned_asset_count"`
	Traits          map[string]OpenseaCollectionTrait `json:"traits"`
}

type OpenseaCollectionTrait added in v0.87.0

type OpenseaCollectionTrait struct {
	Min float64 `json:"min"`
	Max float64 `json:"max"`
}

type OpenseaContract added in v0.83.17

type OpenseaContract struct {
	Address string `json:"address"`
}

type OpenseaLastSale added in v0.87.0

type OpenseaLastSale struct {
	PaymentToken OpenseaPaymentToken `json:"payment_token"`
}

type OpenseaPaymentToken added in v0.87.0

type OpenseaPaymentToken struct {
	ID       int    `json:"id"`
	Symbol   string `json:"symbol"`
	Address  string `json:"address"`
	ImageURL string `json:"image_url"`
	Name     string `json:"name"`
	Decimals int    `json:"decimals"`
	EthPrice string `json:"eth_price"`
	UsdPrice string `json:"usd_price"`
}

type OpenseaSellOrder added in v0.87.0

type OpenseaSellOrder struct {
	CurrentPrice string `json:"current_price"`
}

type OpenseaTrait added in v0.85.1

type OpenseaTrait struct {
	TraitType   string     `json:"trait_type"`
	Value       TraitValue `json:"value"`
	DisplayType string     `json:"display_type"`
	MaxValue    string     `json:"max_value"`
}

type Path added in v0.113.0

type Path struct {
	BridgeName    string
	From          *params.Network
	To            *params.Network
	MaxAmountIn   *hexutil.Big
	AmountIn      *hexutil.Big
	AmountOut     *hexutil.Big
	GasAmount     uint64
	GasFees       *SuggestedFees
	BonderFees    *hexutil.Big
	TokenFees     *big.Float
	Cost          *big.Float
	Preferred     bool
	EstimatedTime TransactionEstimation
}

type PendingTransaction added in v0.62.0

type PendingTransaction struct {
	Hash               common.Hash    `json:"hash"`
	Timestamp          uint64         `json:"timestamp"`
	Value              bigint.BigInt  `json:"value"`
	From               common.Address `json:"from"`
	To                 common.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            uint64         `json:"network_id"`
	MultiTransactionID int64          `json:"multi_transaction_id"`
}

type PendingTrxType added in v0.62.0

type PendingTrxType string
const (
	RegisterENS    PendingTrxType = "RegisterENS"
	ReleaseENS     PendingTrxType = "ReleaseENS"
	SetPubKey      PendingTrxType = "SetPubKey"
	BuyStickerPack PendingTrxType = "BuyStickerPack"
	WalletTransfer PendingTrxType = "WalletTransfer"
)

type Reader added in v0.100.0

type Reader struct {
	// contains filtered or unexported fields
}

func NewReader added in v0.100.0

func NewReader(s *Service) *Reader

func (*Reader) GetWallet added in v0.100.0

func (r *Reader) GetWallet(ctx context.Context, chainIDs []uint64) (*Wallet, error)

func (*Reader) Start added in v0.100.0

func (r *Reader) Start(ctx context.Context, chainIDs []uint64) error

type ReaderAccount added in v0.100.0

type ReaderAccount struct {
	Account      *accounts.Account              `json:"account"`
	Collections  map[uint64][]OpenseaCollection `json:"collections"`
	Tokens       map[uint64][]ReaderToken       `json:"tokens"`
	Transactions map[uint64][]transfer.View     `json:"transactions"`

	FiatBalance *big.Float `json:"fiatBalance"`
}

type ReaderToken added in v0.100.0

type ReaderToken struct {
	Token         *token.Token `json:"token"`
	OraclePrice   float64      `json:"oraclePrice"`
	CryptoBalance *hexutil.Big `json:"cryptoBalance"`
	FiatBalance   *big.Float   `json:"fiatBalance"`
}

type Router added in v0.101.1

type Router struct {
	// contains filtered or unexported fields
}

func NewRouter added in v0.101.1

func NewRouter(s *Service) *Router

type SavedAddress added in v0.86.7

type SavedAddress struct {
	Address common.Address `json:"address"`
	// TODO: Add Emoji and Networks
	// Emoji    string         `json:"emoji"`
	Name      string `json:"name"`
	Favourite bool   `json:"favourite"`
	ChainID   uint64 `json:"chainId"`
	// contains filtered or unexported fields
}

type SavedAddressesManager added in v0.86.7

type SavedAddressesManager struct {
	// contains filtered or unexported fields
}

func NewSavedAddressesManager added in v0.111.5

func NewSavedAddressesManager(db *sql.DB) *SavedAddressesManager

func (*SavedAddressesManager) AddSavedAddressIfNewerUpdate added in v0.111.5

func (sam *SavedAddressesManager) AddSavedAddressIfNewerUpdate(sa SavedAddress, updateClock uint64) (insertedOrUpdated bool, err error)

func (*SavedAddressesManager) DeleteSavedAddress added in v0.86.7

func (sam *SavedAddressesManager) DeleteSavedAddress(chainID uint64, address common.Address) (updatedClock uint64, err error)

func (*SavedAddressesManager) DeleteSavedAddressIfNewerUpdate added in v0.111.5

func (sam *SavedAddressesManager) DeleteSavedAddressIfNewerUpdate(chainID uint64, address common.Address, updateClock uint64) (deleted bool, err error)

func (*SavedAddressesManager) DeleteSoftRemovedSavedAddresses added in v0.111.5

func (sam *SavedAddressesManager) DeleteSoftRemovedSavedAddresses(threshold uint64) error

func (*SavedAddressesManager) GetRawSavedAddresses added in v0.111.5

func (sam *SavedAddressesManager) GetRawSavedAddresses() ([]SavedAddress, error)

GetRawSavedAddresses provides access to the soft-delete and sync metadata

func (*SavedAddressesManager) GetSavedAddresses added in v0.86.7

func (sam *SavedAddressesManager) GetSavedAddresses() ([]SavedAddress, error)

func (*SavedAddressesManager) GetSavedAddressesForChainID added in v0.111.5

func (sam *SavedAddressesManager) GetSavedAddressesForChainID(chainID uint64) ([]SavedAddress, error)

func (*SavedAddressesManager) UpdateMetadataAndUpsertSavedAddress added in v0.111.5

func (sam *SavedAddressesManager) UpdateMetadataAndUpsertSavedAddress(sa SavedAddress) (updatedClock uint64, err error)

type SendType added in v0.113.0

type SendType int
const (
	Transfer SendType = iota
	ENSRegister
	ENSRelease
	ENSSetPubKey
	StickersBuy
)

func (SendType) EstimateGas added in v0.113.0

func (s SendType) EstimateGas(service *Service, network *params.Network) uint64

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service is a wallet service.

func NewService

func NewService(
	db *sql.DB,
	accountsDB *accounts.Database,
	rpcClient *rpc.Client,
	accountFeed *event.Feed,
	openseaAPIKey string,
	gethManager *account.GethManager,
	transactor *transactions.Transactor,
	config *params.NodeConfig,
	ens *ens.Service,
	stickers *stickers.Service,
) *Service

NewService initializes service instance.

func (*Service) APIs

func (s *Service) APIs() []gethrpc.API

APIs returns list of available RPC APIs.

func (*Service) GetFeed added in v0.62.16

func (s *Service) GetFeed() *event.Feed

GetFeed returns signals feed.

func (*Service) IsStarted added in v0.48.8

func (s *Service) IsStarted() bool

func (*Service) Protocols

func (s *Service) Protocols() []p2p.Protocol

Protocols returns list of p2p protocols.

func (*Service) Start

func (s *Service) Start() error

Start signals transmitter.

func (*Service) Stop

func (s *Service) Stop() error

Stop reactor, signals transmitter and close db.

type SuggestedFees added in v0.97.4

type SuggestedFees struct {
	GasPrice             *big.Float `json:"gasPrice"`
	BaseFee              *big.Float `json:"baseFee"`
	MaxPriorityFeePerGas *big.Float `json:"maxPriorityFeePerGas"`
	MaxFeePerGasLow      *big.Float `json:"maxFeePerGasLow"`
	MaxFeePerGasMedium   *big.Float `json:"maxFeePerGasMedium"`
	MaxFeePerGasHigh     *big.Float `json:"maxFeePerGasHigh"`
	EIP1559Enabled       bool       `json:"eip1559Enabled"`
}

type SuggestedRoutes added in v0.101.1

type SuggestedRoutes struct {
	Best                  []*Path
	Candidates            []*Path
	TokenPrice            float64
	NativeChainTokenPrice float64
}

type TokenHistoricalPairs added in v0.111.5

type TokenHistoricalPairs struct {
	Timestamp  int64   `json:"time"`
	Value      float64 `json:"close"`
	Volumefrom float64 `json:"volumefrom"`
	Volumeto   float64 `json:"volumeto"`
}

type TraitValue added in v0.85.1

type TraitValue string

func (*TraitValue) UnmarshalJSON added in v0.85.1

func (st *TraitValue) UnmarshalJSON(b []byte) error

type TransactionEstimation added in v0.103.2

type TransactionEstimation int
const (
	Unknown TransactionEstimation = iota
	LessThanOneMinute
	LessThanThreeMinutes
	LessThanFiveMinutes
	MoreThanFiveMinutes
)

type TransactionManager added in v0.86.7

type TransactionManager struct {
	// contains filtered or unexported fields
}

type Wallet added in v0.100.0

type Wallet struct {
	Accounts            []ReaderAccount                  `json:"accounts"`
	OnRamp              []CryptoOnRamp                   `json:"onRamp"`
	SavedAddresses      map[uint64][]SavedAddress        `json:"savedAddresses"`
	Tokens              map[uint64][]*token.Token        `json:"tokens"`
	CustomTokens        []*token.Token                   `json:"customTokens"`
	PendingTransactions map[uint64][]*PendingTransaction `json:"pendingTransactions"`

	FiatBalance *big.Float `json:"fiatBalance"`
	Currency    string     `json:"currency"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL