Wallet API

The wallet model (exposed as walletModel) is used for functions pertaining to the wallet and accounts on the node.

Methods

Methods can be invoked by calling them directly on the walletModel, ie walletModel.getSigningPhrase().

Gets the link to Etherscan from the current network settings

getSigningPhrase() : QVariant<string>

Gets the link to Etherscan from the current network settings

getStatusToken() : string

Gets the Status token for the current network (ie SNT for mainnet and STT for Ropsten) and returns a stringified JSON object containing name, symbol, and address for the token.

getCurrentCollectiblesLists() : QVariant<CollectiblesList>

Gets the list of collectibles for the currently selected wallet.

getCurrentTransactions() : QVariant<TransactionList>

Gets the list of transactions for the currently selected wallet.

setCurrentAccountByIndex(index: int)

  • index (int): index of the account in the list of accounts

sets the currently selected account to the account at the provided index

getCurrentAccount() : QVariant<AccountItemView>

gets the currently selected account

setFocusedAccountByAddress(address: string): void

  • address (string): address of the account to focus

sets the focused account in the chat transaction modal to the account with the provided address

getFocusedAccount() : QVariant<AccountItemView>

gets the currently focused account in the chat transaction modal

getCurrentAssetList() : QVariant<AssetList>

returns list of token assets for the currently selected wallet account

getTotalFiatBalance() : QVariant<string>

returns the total equivalent fiat balance of all wallets in the format #.##

getFiatValue(crytoBalance: string, cryptoSymbol: string, fiatSymbol: string): QVariant<string>

  • cryptoBalance (string): balance whole (ie ETH)
  • cryptoSymbol (string): symbol to convert from
  • fiatSymbol (string) symbol of fiat currency to convert to

returns the total equivalent fiat balance in the format

getCryptoValue(fiatBalance: string, fiatSymbol: string, cryptoSymbol: string) : QVariant<string>

  • fiatBalance (string): balance whole (ie USD)
  • fiatSymbol (string): fiat currency symbol to convert from
  • cryptoSymbol (string) symbol of fiat currency to convert to

returns the total equivalent crypto balance in the format #.##

getGasEthValue(gweiValue: string, gasLimit: string) : string

  • gweiValue (string): gas price in gwei
  • gasLimit (string): gas limit

gets maximum gas spend by multiplying the gas limit by the gas price

generateNewAccount(password: string, accountName: string, color: string) : string

  • password (string): password for the current user account
  • accountName (string): name for the new wallet account
  • color (string) hex code of the custom wallet color

creates a new account on the node with a custom name and color

addAccountsFromSeed(seed: string, password: string, name: string, color: string) : string

  • seed (string): seed phrase of account
  • password (string): password of the current user account
  • name (string): name for the new wallet account
  • color (string) hex code of the custom wallet color

adds an account to the status-go node from the provided seed phrase |

addAccountsFromPrivateKey(privateKey: string, password: string, name: string, color: string) : string

  • privateKey (string): private key of account
  • password (string): password of the current user account
  • name (string): name for the new wallet account
  • color (string) hex code of the custom wallet color

adds an account to the status-go node from the provided private key |

addWatchOnlyAccount(address: string, accountName: string, color: string) : string

  • address (string): address of account to watch
  • accountName (string): name for the new wallet account
  • color (string) hex code of the custom wallet color

watches an account without adding it to the status-go node |

changeAccountSettings(address: string, accountName: string, color: string) : string

  • address (string): address of account
  • accountName (string): updated name for the wallet account
  • color (string) updated hex code of the account

updates the account’s name and color

deleteAccount(address: string) : string

  • address (string): address of account

deletes an account from the status-go node and returns an error string or empty string if no error

getAccountList() : QVariant<AccountList>

returns list of accounts on status-go node

estimateGas(from_addr: string, to: string, assetAddress: string, value: string, data: string) : string

  • from_addr (string): from address for the transaction
  • to (string): to address for the transaction
  • assetAddress (string): token contract address (use "0x0000000000000000000000000000000000000000" for Ethereum transactions)
  • value (string): amount of Ethereum to send (in whole Ethereum units)
  • data (string): encoded transaction data

returns a stringified JSON response from status with the transaction gas estimate and an error field if an error occurred.

transactionSent(txResult: string) : void

  • txResult (string): transaction result

fires the QML signal walletModel.transactionWasSent

sendTransaction(from_addr: string, to: string, assetAddress: string, value: string, gas: string, gasPrice: string, password: string, uuid: string): void

  • from_addr (string): from address for the transaction
  • to (string): to address for the transaction
  • assetAddress (string): token contract address (use "0x0000000000000000000000000000000000000000" for Ethereum transactions)
  • value (string): amount of Ethereum to send (in whole Ethereum units)
  • gas (string): gas to use for the transaction
  • gasPrice (string): gas price for the transaction
  • password (string): password of the current user account
  • uuid (string): a unique identifier for the transaction request,so it can be idenified in QML when upon asynchronous completion

sends a transaction in a separate thread.

getDefaultAccount() : string

returns the address of the currently selected account

defaultCurrency() : string

returns the currency symbol from settings

setDefaultCurrency(currency: string) : string

  • currency (string): currency symbol, e.g "USD"

set a new default currency in the current user’s settings

hasAsset(account: string, symbol: string) : bool

  • account (string): account to check for enabled token
  • symbol (string): token symbol, ie "SNT"

returns true if token with symbol is enabled, false other wise

toggleAsset(symbol: string) : void

  • symbol (string): token symbol, ie "SNT"

enables a token with symbol or disables it it’s already enabled

removeCustomToken(tokenAddress: string) : void

  • tokenAddress (string): token contract address

removes the custom token from the list of tokens available in the wallet

addCustomToken(address: string, name: string, symbol: string, decimals: string) : void

  • address (string): token contract address
  • name (string): display name for the token
  • symbol (string): token symbol
  • decimals (string): number of decimals supported by the token

adds the custom token to the list of tokens available in the wallet

setCollectiblesResult(collectibleType: string) : void

  • collectibleType (string): "cryptokitty", "kudo", "ethermon", "stickers"

sets the current wallet’s collectibles

reloadCollectible(collectiblesJSON: string) : void

  • collectiblesJSON (string): stringified JSON structure of collectibles

reloads the current wallet’s collectibles in another thread

getGasPricePredictions() : void

gets current ethereum network gas predictions in a new thread

getGasPricePredictionsResult(gasPricePredictionsJson: string) : void

  • gasPricePredictionsJson (string): JSON stringified response of gas predictions

updates the current gas predictions for the ethereum network, and fires the gasPricePredictionsChanged signal

safeLowGasPrice() : string

returns the current Ethereum networks’s safe low gas price, in gwei

standardGasPrice() : string

returns the current Ethereum networks’s standard gas price, in gwei

fastGasPrice() : string

returns the current Ethereum networks’s fast gas price, in gwei

fastestGasPrice() : string

returns the current Ethereum networks’s fastest gas price, in gwei

defaultGasLimit() : string

returns the default gas limit for sending Ethereum, which is "21000"

getDefaultAddress() : string

returns the address of the first wallet account on the node

getDefaultTokenList() : QVariant<TokenList>

returns the non-custom list of ERC-20 tokens for the currently selected wallet account

loadCustomTokens() : none

loads the custom tokens in to the TokenList added by the user in to walletModel.customTokenList

getCustomTokenList() : QVariant<TokenList>

returns the custom list of ERC-20 tokens added by the user

isFetchingHistory(address: string) : bool

  • address (string): address of the account to check

returns true if status-go is currently fetching the transaction history for the specified account

isKnownTokenContract(address: string) : bool

  • address (string): contract address

returns true if the specified address is in the list of default or custom (user-added) contracts

decodeTokenApproval(tokenAddress: string, data: string) : string

  • tokenAddress (string): contract address
  • data (string): response received from the ERC-20 token Approve function call

Returns stringified JSON result of the decoding. The JSON will contain only an error field if there was an error during decoding. Otherwise, it will contain a symbol (the token symbol) and an amount (amount approved to spend) field.

isHistoryFetched(address: string) : bool

  • address (string): address of the account to check

returns true if status-go has returned transfer history for the specified account (result of wallet_getTransfersByAddress)

loadTransactionsForAccount(address: string) : void

  • address (string): address of the account to load transactions for

loads the transfer history for the specified account (result of wallet_getTransfersByAddress) in a separate thread

setTrxHistoryResult(historyJSON: string) : void

  • historyJSON (string): stringified JSON result from status-go’s response to wallet_getTransfersByAddress

sets the transaction history for the account requested. If the requested account was tracked by the walletModel, it will have its transactions updated (including currentAccount). The loadingTrxHistoryChanged signal is also fired with false as a parameter.

resolveENS(end: string) : void

  • ens (string): the ENS name to resolve

resolves an ENS name in a separate thread

ensResolved(ens: string, uuid: string) : void

  • ens (string): the ENS name to resolve
  • uuid (string): a unique identifier to identify the request in QML so that only specific components can respond when needed

fires the ensWasResolved signal with the resolved address (address) and the unique identifier (uuid)

setDappBrowserAddress() : void

sets the dapp browser account to the account specified in settings and then fires the dappBrowserAccountChanged signal

getDappBrowserAccount() : QVariant<AccountItemView>

returns the wallet account currently used in the dapp browser

Signals

The walletModel exposes the following signals, which can be consumed in QML using the Connections component (with a target of walletModel and prefixed with on).

NameParametersDescription
etherscanLinkChangednonefired when the etherscan link has changed
signingPhraseChangednonefired when the signing phrase has changed
currentCollectiblesListsChangednonefired when the list of collectibles for the currently selected account has changed
currentTransactionsChangednonefired when the transactions for the currently selected account have changed
currentAccountChangednonefired when the currently selected account in the wallet has changed
focusedAccountChangednonefired when the currently selected account in the chat transaction model has changed
currentAssetListChangednonefired when the token assets for the currently selected account have changed
totalFiatBalanceChangednonefired when the total equivalent fiat balance of all accounts has changed
accountListChangednonefired when accounts on the node have chagned
transactionWasSenttxResult (string): JSON stringified result of sending a transactionfired when accounts on the node have chagned
defaultCurrencyChangednonefired when the user’s default currency has chagned
gasPricePredictionsChangednonefired when the gas price predictions have changed, typically after getting a gas price prediction response
historyWasFetchednonefired when status-go completes fetching of transaction history
loadingTrxHistoryChangedisLoading (bool): true if the transaction history is loadingfired when the loading of transfer history starts and completes
ensWasResolvedresolvedAddress (string): address resolved from the ENS name
uuid (string): unique identifier that was used to identify the request in QML so that only specific components can respond when needed
fired when an ENS name was resolved
transactionCompletedsuccess (bool): true if the transaction was successful
txHash (string): has of the transaction
revertReason (string): reason transaction was reverted (if provided and if the transaction was reverted)
fired when a tracked transction (from the wallet or ENS) was completed
dappBrowserAccountChangednonefired when the select dapp browser wallet account has changed

QtProperties

The following properties can be accessed directly on the walletModel, ie walletModel.etherscanLink

NameTypeAccessibilitySignalDescription
etherscanLinkQVariant<string>readetherscanLinkChangedlink to Etherscan from the current network settings
signingPhraseQVariant<string>readsigningPhraseChangedgets the signing phrase
collectiblesListsQVariant<CollectiblesList>read/writecurrentCollectiblesListsChangedgets or sets the list of collectibles for the currently selected wallet
transactionsQVariant<TransactionList>read/writecurrentTransactionsChangedgets or sets the list of transactions for the currently selected wallet
currentAccountQVariant<AccountItemView>read/writecurrentAccountChangedgets or sets the currently selected account
focusedAccountQVariant<AccountItemView>read/writefocusedAccountChangedgets or sets the currently focused account in the chat transaction modal
assetsQVariant<AssetList>read/writecurrentAssetListChangedgets or sets list of token assets for the currently selected wallet account
totalFiatBalanceQVariant<string>read/writetotalFiatBalanceChangedgets or sets the total equivalent fiat balance of all wallets in the format #.##
accountsQVariant<AccountList>readaccountListChangedreturns list of accounts on the node
defaultCurrencyQVariant<string>read/writedefaultCurrencyChangedgets or sets the default currency in the current user’s settings
safeLowGasPriceQVariant<string>readgasPricePredictionsChangedgets the current Ethereum networks’s safe low gas price, in gwei
standardGasPriceQVariant<string>readgasPricePredictionsChangedgets the current Ethereum networks’s standard gas price, in gwei
fastGasPriceQVariant<string>readgasPricePredictionsChangedgets the current Ethereum networks’s fast gas price, in gwei
fastestGasPriceQVariant<string>readgasPricePredictionsChangedgets the current Ethereum networks’s fastest gas price, in gwei
fastestGasPriceQVariant<string>readnonegets the default gas limit for sending Ethereum, which is "21000"
defaultTokenListQVariant<TokenList>readnonegets the non-custom list of ERC-20 tokens for the currently selected wallet account
customTokenListQVariant<TokenList>readnonegets the custom list of ERC-20 tokens added by the user
dappBrowserAccountQVariant<AccountItemView>readdappBrowserAccountChangedthe wallet account currently used in the dapp browser

Models

AccountList

QAbstractListModel to expose node accounts. The following roles are available to the model when bound to a QML control:

NameDescription
nameaccount name defined by user
addressaccount address
iconColoraccount color chosen by user
balanceequivalent fiat balance for display, in format $#.##
fiatBalancethe wallet’s equivalent fiat balance in the format #.## (no currency as in balance)
assetsreturns an AssetList (see below)
isWalletflag indicating whether the asset is a token or a wallet
walletTypein the case of a wallet, indicates the type of wallet (“key”, “seed”, “watch”, “generated”). See AccountItemViewfor more information on wallet types.

AssetList

QAbstractListModel exposes ERC-20 token assets owned by a wallet account. The following roles are available to the model when bound to a QML control:

NameDescription
nametoken name
symboltoken ticker symbol
valueamount of token (in wei or equivalent)
fiatBalanceDisplayequivalent fiat balance for display, in format $#.##
addresstoken contract address
fiatBalanceequivalent fiat balance (not for display)

CollectiblesList

QAbstractListModel exposes ERC-721 assets for a wallet account. The following roles are available to the model when bound to a QML control:

NameDescription
collectibleTypethe type of collectible (“cryptokitty”, “kudo”, “ethermon”, “stickers”)
collectiblesJSONJSON representation of all collectibles in the list (schema is different for each type of collectible)
errorerror encountered while fetching the collectibles

TransactionList

QAbstractListModel to expose transactions for the currently selected wallet. The following roles are available to the model when bound to a QML control:

NameDescription
typeValuethe transaction type
address??
blockNumberthe block number the transaction was included in
blockHashthe hash of the block
timestampUnix timestamp of when the block was created
gasPricegas price used in the transaction
gasLimitmaximum gas allowed in this block
gasUsedamount of gas used in the transaction
noncetransaction nonce
txStatustransaction status
valuevalue (in wei) of the transaction
fromAddressaddress the transaction was sent from
toaddress the transaction was sent to
contract?? likely in a transfer transaction, the token contract interacted with

AccountItemView

This type can be accessed by any of the properties in the walletModel that return QtObject<AccountItemView>, ie walletModel.currentAccount.name. See the walletModeltable above.

NameTypeDescription
name*stringdisplay name given to the wallet by the user
address*stringwallet’s ethereum address
iconColor*stringwallet hexadecimal colour assigned to the wallet by the user
balance*stringthe wallet’s fiat balance used for display purposes in the format of #.## USD
fiatBalance*stringthe wallet’s equivalent fiat balance in the format #.## (no currency as in balance)
path*stringthe wallet’s HD derivation path
walletType*stringtype determined by how the wallet was created. Values include:
"key" - wallet was created with a private key
"seed" - wallet was created with a seed phrase
"watch" - wallet was created as to watch an Ethereum address (like a read-only wallet)
"generated" - wallet was generated by the app

TokenList

QAbstractListModel exposes all displayable ERC-20 tokens. The following roles are available to the model when bound to a QML control:

NameDescription
nametoken display name
symboltoken ticker symbol
hasIconflag indicating whether or not the token has an icon
addressthe token’s ERC-20 contract address
decimalsthe number of decimals held by the token
isCustomflag indicating whether the token was added by the user