vega-frontend-monorepo/specs/0001-WALL-wallet.md
2023-08-07 08:41:25 +01:00

8.0 KiB

Wallet

A Vega wallet is required to prepare and submit transaction on Vega (place, cancel, orders etc). See the wallet docs for more on how "crypto" wallets work.

A wallet can contain many public/private key pairs. The public part of each key pair is known the Party sometimes just referred to as a key or public key.

The primary job(s) of a wallet is to sign/encrypt transaction (so the network can be sure they were sent by a given party) and to broadcast these transactions to a node on the network.

Set up wallet / Restore wallet

When opening the wallet for the first time, I...

  • if the wallet sends telemetry/analytics: must be prompted to opt into (or stay out of) analytics (0001-WALL-003)
  • I can restore a wallet from a seed phrase (0001-WALL-004)
  • I can create a new wallet (0001-WALL-005)
    • I can view the back up phrase (0001-WALL-006)
    • I can see the first key without having to "add key". (i.e. The wallet auto generates the first key from the seed phrase) (0001-WALL-008)

...so I can sign transactions

Configure network

When using the wallet on a network, I...

  • I can have Mainnet and Fairground (testnet) pre-configured (with Mainnet being the default network) (0001-WALL-009)
  • I can create a new network configuration (0001-WALL-010)
  • I can refine the configuration for existing networks (including the ones that come pre-configured) (0001-WALL-011)
  • I can remove networks (0001-WALL-013)

...so I can broadcast transactions to, and read information from a vega network in my wallet

Update wallet

When using an older version of a Vega wallet than the current official release, I...

  • I am warned if the version I am using is not compatible with the version of Vega on the selected network, and I am given a link to get latest compatible version on github (0001-WALL-015)

... so the version of the wallet app I am using works with the network I am using

Log in to a wallet

When using a given wallet, I...

  • I can select a wallet and enter the passphrase only once per "session" (0001-WALL-016)

... so that other users of my machine can not use my wallet, and I am not asked to re-enter frequently

Connecting to Dapps

When a dapp requests use of a wallet, I...

  • I am prompted to either select a wallet or dismiss the prompt (0001-WALL-017)
    • I can select whole wallet (so that new keys are automatically shared) (0001-WALL-019)
  • I can enter wallet passphrase before wallet details are shared (assuming a password has not recently been entered)(0001-WALL-022)
  • I can retrospectively revoke Dapp's access to a Wallet (0001-WALL-023)

... so that I can control what public keys are shared with a dapp and what dapps can prompt me to sign transactions

Approving transactions

When a dapp sends a transaction to the wallet for signing and broadcast, I...

... so I can verify that the transaction being sent is the one I want

Transaction log

When thinking about a recent or specific transaction, I ...

  • I can find a single list of all transactions, completed and ongoing, from all keys and wallets, from my current desktop session and network (0001-WALL-034)
  • I can see transactions that were confirmed by the wallet user (me) (0001-WALL-035)
  • I can see transactions that were rejected by the wallet user (me) (0001-WALL-036)
  • If I switch network, transactions list changes to show the transactions for that network (0001-WALL-037)
  • I can click a transaction in the list to see the transaction details (0001-WALL-038)
  • I can see empty state when there are no transactions for this session (0001-WALL-039)

... so that I can ensure my wallet is being used appropriately and find transaction I made

Transaction details

when looking at a specific transaction...

.. so I can find all the information about what has happened with mined and un-mined transactions

Key management

When using a Vega wallet, I...

  • I can create new keys (derived from the source of wallet) (0001-WALL-052)
  • I can see full public key or be able to copy it to clipboard (0001-WALL-054)
  • I can change key name/alias (0001-WALL-055)

... so I can manage risk (e.g. isolate margin), mitigate the damage of a key being compromised, or use multiple trading strategies

Taint keys

When protecting myself from use of keys that may be compromised, I..

... so that tainted keys must not be used

When I have accidentally tainted a key I...

  • I can select a key to un-taint and be required to enter wallet password (0001-WALL-061)

...so that I must use the key again

Manually sign a message

When wishing to use my wallet to sign arbitrary messages, I...

  • I can enter content to be signed with key (0001-WALL-062)
  • I can submit/sign the content (0001-WALL-065)
    • I can track progress of broadcast transaction either by being given a hash that I can use in block explorer, or see the transaction status

.. so I can control of the message being signed, and can use the message elsewhere (for example to prove I own a wallet)

Wallet management

When seeking to reduce risk of compromise I...

... so that I must administrate my wallets