How to access Banano on a Ledger hardware wallet using the Nano App
This will guide you through the steps for accessing Banano that is locked by a Ledger Nano S/X, most likely because of a Banano airdrop to Nano holders. One of those took place in Feb 2021.
It’s easy to think that the Ledger should translate Banano accounts equal to Nano accounts (except for the account prefix) but it’s not the case. Nano is using bip39 derivation path 44'/165' while Banano is using 44'/198'. That means the accounts you see in BananoVault when connecting the Ledger is not the same as when connecting the Ledger to Nault. Not only the prefix is different, but also the account.
That means you can’t use the Ledger and BananoVault directly to claim airdropped Banano. However, one method is to use the 24-word recovery phrase of the Ledger and convert that into private keys using https://tools.nanos.cc/?tool=seed or https://iancoleman.io/bip39/. But please know this involves a SECURITY RISK as you will expose your Ledger recovery phrase. Both the tools above works offline and to be run locally from your hard drive, which is highly recommended if you ever attempt to use your Ledger recovery phrase this way. But I still recommend to AVOID IT since you also must make sure your computer is ABSOLUTELY SAFE and not contain any malware that may record your keys.
The Solution — BananoNanoNault
So this is why I present this tool I made, which is a fork from Nault. It will allow you to do some magic by connecting the Ledger device and accessing the Banano using the NANO Ledger app, yeah you heard it right, not the Banano app.
How the heck does that work?
Quite simple actually! You access the Banano network as usual but before signing a transaction with the Ledger, it replaces the ban_ prefix with nano_ and trick the Ledger it’s a Nano block. You sign it, and then the prefix is converted back to ban_ which allows you to publish the block on the Banano network as usual. Your actual Nano can’t be published to the Banano network even if tried since the prefix would be wrong and block invalidated.
Step by Step, please!
2. Install the Nano app on the Ledger via the Ledger Live manager
3. Make sure you are not running any other Ledger wallet or Ledger Live. Start the Nano app on the device (not Banano). Connect your Ledger Nano S or X via USB or Bluetooth and import it (full guide and troubleshooting)
4. Now you should see your first Ledger Banano account on the account page , and if the airdrop was successful, you should also see an incoming transaction. This is safe to accept on the Ledger. Keep in mind the Ledger will use the nano_ prefix since it’s using the Nano app, this is ok. It will also show 1/10 of the real amount due to Banano having 10x the supply of Nano (1 Ban is 1/10 raw of 1 Nano). If you had more Nano accounts on your Ledger, you have to add more accounts manually and receive them too.
5. Now, it’s not recommended to store Banano this way. Banano belongs to the Ledger Banano app (or other wallets). You can now send it to another Banano wallet you own but as an extra precaution, especially if you don’t trust this app, I suggest to do 5a and 5b first.
5a. Create a new account from the accounts page. Copy the account and paste in a Nano explorer such as https://nanolooker.com/ but with nano_ prefix. If the balance is 0, make a note of which account that is. Or create more accounts and repeat. This will be your “safe account” in the next step.
5b. Send your BAN to your “safe account” (account #2 in the pic) and confirm on the Ledger. You can use “Transfer Between Accounts”. If this app would be hypothetically broken and somehow send Nano instead of Banano, which is what you may think you are confirming on the Ledger but should be impossible, you will at least (in your mind) send to an account you own. Once the transaction has been sent, you will have to receive it as well from the Receive Screen.
5c. Now you can feel safe by sending BAN from the “safe account” to another BAN account in another wallet. The Ledger simply can’t access the corresponding Nano since you have validated there is no Nano in that account to violate. Create the send transaction and confirm on the Ledger.
If you did everything correctly, your Ledger should now contain 0 BAN and if you connect the Ledger to Nault again, it should have all Nano intact and safe.
Is this Legit?
If you are paranoid with code changes like I am (which you should be), the source code that was changed after forking Nault can be found from this commit and later.
Also, this source is automatically built into GitHub pages code and a desktop app. Github pages branch is found here and the desktop releases here. Which makes the web app accessible and verifiably unmodified via Github at https://joohansson.github.io/BananoNanoNault/
Lastly, you can always build the code from the source and run it locally.