Multi-account support and partial delegation

AdaLite wallet
7 min readJan 15, 2021

AdaLite is introducing the concept of wallet accounts. Apart from other benefits, this should allow the users to delegate to multiple staking pools from a single wallet. When compared to standard banking products, accounts in cryptocurrency wallets work similarly as sub-accounts to your main bank account. Please note, as of now, the accounts are supported only on AdaLite and you won’t be able to access funds transferred to accounts other than the first account on different wallets such as Daedalus and Yoroi. But it is very likely that this concept will be introduced to other wallets in the future too and as our approach to account discovery is compliant with the BIP-44 standard, it is very likely that the concept they introduce will be compatible with ours.

Concept of accounts

The concept of accounts is not new for Cardano protocol and it was always here, it was just not used by any of the wallets. It is important to mention, that previously, all Cardano holders used only their 1st account (Now labelled as “Account 0” for mnemonic and Ledger users and “Account #1” for Trezor users but we will be unifying this notation in the near future). So currently all your funds are located on the first of the accounts of your wallet and now AdaLite is making it possible to access more accounts. Using the other accounts is the same as using the one you were using until now in every way. Every account has its own set of addresses and its own balances on these addresses but all accounts are still controlled by the same mnemonic, Ledger, or Trezor. Since every account has its own staking key thus delegation and rewards balance, you can simply move funds from one account to another and delegate these accounts to different stakepools. This way you will be able to delegate your funds to multiple stakepools from a single wallet. Every account has its own staking balance which is delegated to the selected pool and also receives its own rewards.

With the latest update, AdaLite adds two new tabs, the Account tab, and the Advanced tab. The Advanced tab shows some public keys related information about your wallet and also an interface for support of stake pool owners for Trezor and Ledger. For more information about stakepool owner support read this. In this article, we will explain the Account tab and give you some basic usage guidelines.

Account tab

The main purpose of the accounts tab is to enable users to switch between accounts, transfer funds between them easily, and also to serve as a dashboard for them. At the top of the page, you can see your total balance and total rewards balance which is a sum of balances on all accounts. Please notice, the label of the Account tab always displays the index of the currently active account. All the other content (transaction history, balances, etc.) on the Sending, Staking, and Advanced tab always corresponds to the currently active account.

Below the total balances is displayed the list of explored accounts with their corresponding available and rewards balance and the ticker of the stakepool the account is delegating to. You can switch between accounts anytime by clicking the “Activate” button on any of the accounts. As mentioned, by activating the account, the content on all the other tabs changes and corresponds to the currently active account.

The account tab also provides a way to easily control the accounts, namely to transfer and delegate ADA. By clicking the transfer button, a dialog, very similar to what you are used to using in the sending tab pops up. You can choose the source and destination accounts for the transaction and how much funds you want to transfer.

The fee is calculated and by clicking the “Send ADA” button a final confirmation dialog is opened. On the confirmation screen, you can verify the destination address (first address of the destination account) and confirm the transaction. Note that moving funds between accounts is a transaction like any other. The source account provides the inputs for the transaction and the output address is the first address of the target account. Therefore we can also provide hardware-wallet users with the possibility to verify the output address on their device before the signing (because it belongs to their wallet).

HW wallets users: It is important to protect yourself from phishing attacks and always validate that the destination address is yours by clicking on the “Verify on Ledger/Trezor” button on the confirmation screen! HW device will return an address on the device screen and you should visually confirm that the address matches the destination address on the computer screen, and make sure that this is the destination address when finally confirming the transaction.

How to delegate to multiple stakepools?

Multi-delegation is the main reason for implementing multi-account support. You can easily delegate your funds to multiple stakepools from the Accounts tab by

1) transferring your funds to one of your other accounts using the transfer button,

2) delegating the funds on the other account using the delegate button.

With this action, a new staking key is registered, a new delegation is created and your other account will start receiving its own rewards 3 epochs later.

HW wallets users: It is important to protect yourself from phishing attacks and always validate the data on the device screen. Make sure that the transaction that you are executing is a delegation transaction — you will see “Delegate” prompt and “Pool hash” prompt on your screen. Double-check that you are not being phished and you are NOT sending funds instead of delegation.

Export public keys in bulk

With the feature of multiple accounts, we made it possible to bulk-export the account public keys. For mnemonic users, this means nothing and won’t have any effect on their usage whatsoever.

For hardware-wallets users though, this means quicker logging in and easier usage of multiple accounts.

By default, this checkbox is checked for everybody. If it’s checked it means we won’t ask the public keys one by one as you were used to, Trezor users won’t need to open two popups, and ledger users (users of Cardano Ledger app 2.1.0 or higher) won’t need to confirm two or more exports. Using the bulk export, we will export account public keys for the first 5 Shelley accounts so we won’t ask you for another public key export if you are not using more than the first 5 accounts (explained in next paragraph). Additionally, we will export the first Byron account (in order to find out if the wallet has some funds left on the legacy Byron addresses) so when unlocking the wallet you should expect a prompt asking to confirm export of 6 account public keys.

Hint: If you are a Ledger user, try to access your wallet using the “Connect with WebUSB” button. WebUSB protocol is usually faster and more reliable than the standard U2F protocol. Works best with Chrome and Windows 10 but works also on other operating systems. You may need to update your drivers as described in this guide.

How do we explore accounts?

In case you are a mnemonic user or hardware wallet user with bulk export of public keys enabled and the required version of your Cardano app, the account exploration is quite straightforward. We explore and display all used accounts (accounts that have at least 1 transaction on them) and add one more for possible usage. This means you can see the number of used accounts + 1. If you just created a wallet and haven’t used it yet, (no transaction has happened on the account) you will see only the first account. If you’ve used this account already (like most of the AdaLite users) you will see two accounts, one you always used, and one more (never used) to use if you choose so.

If you decided to disable the bulk export of public keys or have the Cardano Ledger app below the required version we won’t explore the accounts as this would cause you to export a lot of public keys one by one. You can still use the multi-account support but need to Explore the accounts manually. Notice this action will request an export of an additional public key.

Please note, if you use many accounts, the initiation and exploration of the wallet may be slower.

Trezor Limitations

Although everything should work as expected on Trezor, there are several UI bugs in the Trezor firmware. These bugs have been fixed some time ago but will be released by Trezor only on 10th February. You shouldn't be worried about any malfunctions because these are really just user interface bugs.

Also please note, until new Trezor firmware is released, using any account above #20 on Trezor will be prompting a warning (this will be changed to 100 accounts by the upcoming firmware update).

The development of Trezor and Ledger firmware was done by Vacuumlabs and funded by IOHK. The development of AdaLite multi-account and partial delegation feature was funded by Vacuumlabs. Any donations to support further development of AdaLite are appreciated.

--

--

AdaLite wallet

AdaLite.io — lightweight, in-browser wallet for Cardano with Trezor support