How to stake FET using Ledger on Cosmostation Web Wallet

Sep 2, 2021

Disclaimer: The guide is a courtesy of Cros-Net who is a validator on Fetch.ai Mainnet.

What do I need:

  1. Ledger Nano and a Desktop PC, as mobile devices are not yet supported.
  2. Ledger Live software installed on your PC and an empty MetaMask wallet on your Brave/Chrome Browser.
  3. FET ERC20 tokens (except HitBTC all other exchanges

Head over here — Cosmostation web application (Cosmos Web Wallet) to stake the ERC20 Fetch coins.

This guide also assumes you have Fetch.AI tokens stored in your Ledger Nano Wallet ready to be staked.

STEP 1 (Install Ethereum and Cosmos Ledger apps)

After setting up your device with a PIN and passphrase, you should install both the Ethereum and Cosmos wallets through the Ledger Live app.

STEP 2 (Set specific Ethereum app settings correctly)

Open the Ethereum app on your Ledger wallet. Within the app, go to settings; make sure “Contract Data” is set to “Allow contract data in transactions”. By default this is turned off, it must be turned on so signing the transaction later on won’t fail. Now exit the app.

STEP 3 (Obtaining Fetch.ai address)

  1. Open Cosmos app on your Ledger.
  2. Via Brave/Chrome, go to Cosmos Web Wallet, Cosmostation: https://wallet.cosmostation.io/
  3. On the top right corner, drop down menu, make sure it is set to “fetch.ai”:

4. Click “Connect Wallet”. Click “Connect to Ledger”.

5. Your fetch.ai address will appear in the middle of the screen

6. Make a note of this address as it will be needed later when staking.

7. Logout of Cosmostation website.

8. Close down the Cosmos App on Ledger Wallet and open up Ethereum App.

STEP 4 (Set MetaMask bridge with Ledger Live Wallet)

  1. On your Brave/Chrome browser, open the MetaMask wallet. You will now link this wallet with your Ledger via a bridge. Make sure that MetaMask is set to Ethereum Mainnet.
  2. Open the MetaMask wallet and click on top right corner where it has your profile icon:

3. Choose “Connect Hardware Wallet”, a dialog will appear asking you to “Open Ledger Live”

4.Click “Open Ledger Live”. Ledger Live will then ask you to login (if not done so already). Ledger Live will then display “Expose your device accounts through websocket”

5. Click Open to expose the device via web socket. When doing this for the first time, you will receive a message asking if you want to allow Ledger to make outside connections. Click OK on this.

6. Once the connection is established and the bridge is set, Ledger Live will display “Ethereum bridge opened”. Now we can communicate between the two wallets in this process.

7. You will also notice that your MetaMask will now have two accounts on Ethereum Mainnet, one which is your original account that was setup with it. The second account is a hardware account linked to Ledger Wallet with “Hardware” displayed next to it.

STEP 5 (Visit the bridge to move coins onto Cosmostation)

To complete this phase, visit the bridge at https://token-bridge.fetch.ai/.

  1. Make sure MetaMask is unlocked so it can be connected onto this bridge.
  2. Make sure MetaMask is set to the HARDWARE wallet and that you have enough Ethereum in there to sign the transaction and pay the fees for transfer.

STEP 6 (Open Wallet and check bridge details)

The source address (Ethereum address of HARDWARE wallet) will be already filled in, and you will see a blank field for the Native address (this is your Fetch native destination address from STEP 3).

STEP 7 (Enter Fetch address details and make transfer)

Paste your address starting with “fetch1”, that you identified in STEP 2 into the “Native Address” field, enter the amount, and then click the “Transfer” button. The Ethereum address is connected to the site through Metamask or other browser extension, and needs to be the source from which your tokens will move to MainnetThe Fetch (Native) address is your destination address, to which they will move on main-net.

STEP 8 (Sign the transaction — first one)

This will trigger a transaction that will ask you to “approve” the bridge contract for holding your tokens. After signing the transaction in your Brave/Chrome browser, be sure to also sign it on your physical device (Ledger Nano), and it will be submitted to the Ethereum blockchain. Once this step is done, you can check your Ledger Live and see that the Fetch Tokens have transferred.

As the first transaction is signed, make sure the bridge between Ledger Nano and MetaMask is still running. This is not needed for the second signing below.

STEP 9 (Sign the transaction — second one)

To complete the tokens transfer, you will be asked to sign a second transaction. In case this step fails, retry the process again from Step 8 above and you will only need to sign once (since Fetch tokens would have been transferred onto Mainnet).

STEP 10 (Check tokens transferred to validator area)

After completing these steps, your Fetch address will be credited with tokens that you can delegate to a validator of your choice to start earning staking rewards. Login to Cosmostation as you did in Step 3. Your coins should be present at the centre of the dashboard.

STEP 11 (Delegating stake)

After completing the transfer onto Fetch AI Mainnet and confirming that the coins are now visible on your dashboard, it is time to stake the coins.

  1. Make sure Ledger is unlocked and Cosmos App is running.
  2. Click on Wallet and select “Reward” (see left hand side of screen)

3. This will show a list of validators to delegate to. (In case you get an error when trying to open the Reward section, make sure the Cosmos App is unlocked and running on your Ledger).

4. Validators are listed at the bottom of the screen. Choose a validator to delegate to by clicking on the “Delegate” button. A dialog will appear:

5. Enter the amount of Fetch tokens you want to delegate and then click on the “Generate & Sign Transaction” button.

6. Confirm this on your Ledger wallet and your coins will be sent to the validator for staking.

7. Repeat the process if you wish to delegate to other validators.

8. As each validator is added, this will be displayed in the UI of the page.