How to store your persistence assets on ledger hardware wallets

Berry Brains
5 min readJul 31, 2021

This is a collaboration between Persistence and Ledger Wallet because XPRT holders can securely store their assets in Ledger Wallet. This article will walk you through a step-by-step tutorial.

LEDGER WALLET

Ledger is a hardware wallet that saves your private keys, making your crypto assets more secure. The Ledger device stores your key and seed phrase in an enclave.

How to Install and Connect the Persistence Wallet to Ledger: A Step-by-Step Guide

Install the Persistence Ledger application

Installing the Persistence application on your ledger device is required before you use persistenceCore. To do so, you need to:

  1. Install Ledger Live on your machine.

2. Using Ledger Live, update your Ledger Nano S with the latest firmware. On the Ledger Live application, navigate to the Manager menu . manager

3. Connect your Ledger Nano device and select the Allow Ledger Manager on your device check box.

4. On the Ledger Live application, search for Persistence.

5. Install the Persistence application by clicking Install.

Persistence Wallet + Ledger Nano

You can sign into your Persistence Wallet with the Ledger Nano device and perform all transactions without having to enter your private key or mnemonic.

Prerequisites: Install the Persistence app on your Ledger Nano before doing the following task.

  • After connecting your Ledger device to the computer, unlock it with the PIN and open the Persistence Wallet app on your Ledger device.
  • Open the Persistence Wallet in your web browser.
  • Select Sign in on the web wallet. wallet-sign in
    You can now use Persistence Wallet with your Ledger Nano.

Note: You must confirm the transaction on your Ledger device while using Persistence Wallet (Send or Stake). Your Persistence Wallet app will show you whether you should approve or refuse the transaction.

Confirm Address on ledger

Once logged in, you can verify the logged in address with the address on the ledger device by clicking the verify button.

PersistenceCore CLI + Ledger Nano

Note: Before utilising this part, you must first install the Persistence app on your Ledger Nano.

PersistenceCore is the utility that is used to produce addresses and transactions on the Persistence. Here’s how to get going.

Before you begin, consider the following:

  • Install the Golang programming language.
  • PersistenceCore should be installed.

✅Verify that persistenceCore is installed correctly with the following command

persistenceCore version — long

➜ name: persistenceCore
server_name: persistenceCore
version: 0.1.3–2-gebc7dc7
commit: ebc7dc7
build_tags: netgo,ledger
go version go1.14.5 darwin/amd64

Add your Ledger key

  1. Connect and unlock your Ledger device.
  2. Open the Persistence app on your Ledger.
  3. Create an account in persistenceCore from your ledger key.

:: Tip Make careful to give the keyName parameter a relevant name so you can easily recognise it. PersistenceCore will use your Ledger to seed the account if the Ledger flag is set.

persistenceCore keys add <keyName> — ledger

➜ NAME: TYPE: ADDRESS: PUBKEY:
<keyName> ledger persistence1… persistencepub1…

HD wallets are used by Persistence. This implies you can use the same Ledger seed to create many accounts. Run (modify the integer I to some value >= 0 to choose the account for HD derivation) to create another account from your Ledger device:

persistenceCore keys add <secondKeyName> — ledger — account <i>

Confirm your address

Run this command to display your address on the device. Use the keyName that you gave on your ledger key. The -d flag is supported in version 1.2.0 and higher.

persistenceCore keys show <keyName> -d
Confirm that the address displayed on the device matches the one that’s displayed when you added the key.

Connect to a full node

NEXT The URL of a Persistence complete node and the relevant chain id must then be configured in persistenceCore. In this example, we connect to Persistence’s public load balanced complete node on the core-1 chain. You can, however, point your persistenceCore to any entire Persistence node. Make that the chain-id is the same as the full node’s chain.

Test your connection with a query such as:

persistenceCore query staking validators — node https://rpc.core.persistence.one:443 — chain-id core-1

tip To run your own full node locally read more here..

Send a transaction

You are now ready to start signing in and sending transactions. Send a transaction with persistenceCore using the the tx send command.

persistenceCore tx bank send — help # to see all available options.

tip: Ensure that you unlock your device with the PIN and then open the Persistence app before trying to run these commands :::

Use the keyName you set for your Ledger key and persistenceCore will connect with the Persistence Ledger app to then sign your transaction.

persistenceCore tx bank send <keyName> <destinationAddress> <amount><denomination> — node https://rpc.core.persistence.one:443 — chain-id core-1

When prompted with confirm transaction before signing, Answer Y.

On your Ledger device, you’ll be asked to examine and approve the transaction. Make sure to look through the transaction JSON on the screen. Each field and message can be scrolled through. To learn more about the data fields of a normal transaction object, scroll down.

Now, you are all set to start sending transactions on the network

Receive funds

Retrieve the address for your Ledger account (the ones with TYPE ledger) use this command to receive funds to the Persistence account on your Ledger device:

persistenceCore keys list

➜ NAME: TYPE: ADDRESS: PUBKEY:
<keyName> ledger persistence1… persistencepub1…

The Cosmos Standard Transaction

Transactions in Persistence embed the Standard Transaction type from the Cosmos SDK. The Ledger device displays a serialized JSON representation of this object for you to review before signing the transaction. Here are the fields and what they mean:

  • chain-id: The chain to which you are broadcasting the tx, such as the test-core-1 testnet or core-1: mainnet.
  • account_number: The global id of the sending account assigned when the account receives funds for the first time.
  • sequence: The nonce for this account, incremented with each transaction.
  • fee: JSON object describing the transaction fee, its gas amount and coin denomination
  • memo: optional text field used in various ways to tag transactions.
  • msgs_<index>/<field>: The array of messages included in the transaction. Double click to drill down into nested fields of the JSON

connect today with persistence and stay updated

TWITTER

TELEGRAM

DISCORD

REDDIT

MEDIUM

LINKEDIN

YOUTUBE

--

--