# Ledger Hardware Wallets with chain-maind
You can use your Ledger hardware wallets to securely manage your CRO assets. Ledger devices are hardware wallets which store your private keys safely in the device and can be used in even unsafe PCs.
# Pre-requisites
- An initialized Ledger Nano device;
- Install the latest firmware on your device;
- Ledger Live;
- Download our latest released
chain-maind
binary.
# Technical support and enquiries
In case you have any enquiry about using Ledger device with desktop wallet, kindly send a message to the Crypto.org Chain Discord #technical-questions channel for assistance.
# Install the Crypto.org Chain app on your Ledger device
We will use Ledger Nano S for this illustration:
First of all, you will need to install the Crypto.org Chain app on your Ledger device. Kindly make sure your Ledger Live is updated to the latest version.
Step 1 - Connect and unlock your Ledger device
Step 2 - On your Ledger device, go to "Install app", It should show "Open Ledger live to install apps"
Step 3 - On the Ledger Live, find and install Crypto.org Chain in the app catalog under "Manager" as below:
Step 4 - Your Ledger device will display "Processing…". Once the installation is completed, you should see "Installed" on your Ledger Live as below:
You can confirm the installation by checking if the Crypto.org App shows up in the main menu of your Ledger device:
Remark: Once the Crypto.org App is successfully installed, please close the Ledger Live app before proceeding to the next step .
# Generate Address with Ledger device
Connect and unlock your Ledger device
Open "Crypto.org Chain" app on the device
Run in your terminal
$ ./chain-maind keys add [name] --ledger --keyring-backend=test
name
is an arbitrary name for your new key
An address will be displayed on your Ledger device, for example:
Confirm the address on your Ledger device and verify the address displayed on the terminal. They should match with each other, for example, of we create a wallet named
ledger_test
, you should see the same address displayed on you terminal after confirming and pressing "Ok" on your ledger device:- name: ledger_test type: ledger address: cro1v2uvz32f98kvf2k6tec7pqp4t5hhen6vr5a8ms pubkey: cropub1addwnpepq09tkjulrexy0r8atsjknpemk7nelswr3vj8p78hdag62phdhwgzgnpxrmg mnemonic: "" threshold: 0 pubkeys: []
Your address is generated successfully. You can now use the address for any chain operations.
# Query account balance
You can query its balance by running in terminal
$ ./chain-maind query bank balances [address]
address
is the address you have generated. If you didn't copy your address, you can query the address listing it in terminal:
$ ./chain-maind keys list --keyring-backend=test
# Sign a transaction
In this tutorial we will send a MsgSend
transaction securely signed by your Ledger device to the chain.
Connect and unlock your Ledger device
Open "Crypto.org Chain" app on the device
For example, if you would like to send
1cro
in the mainnet, in your terminal, you can run:$ ./chain-maind tx bank send [from-address] [to-address] 1cro --chain-id="crypto-org-chain-mainnet-1" --ledger --keyring-backend=test --sign-mode=amino-json
from-address
is the from address generated by your Ledger deviceto-address
is the destination address- In this command, we are sending
1tcro
from the from address, you can specify other amounts you want.
You will be asked to confirm the details of transaction in your terminal, input
y
to confirm:$ ./chain-maind tx bank send tcro1tzhdkuc328cgh2hycyfddtdpqfwwu42ywyfvkj tcro1aaah6juc9n6wvkkkr4zdn073n8gt7waha39xsv 1tcro --chain-id=testnet-croeseid-4 --ledger --keyring-backend=test --sign-mode=amino-json {"body":{"messages":[{"@type":"/cosmos.bank.v1beta1.MsgSend","from_address":"tcro1tzhdkuc328cgh2hycyfddtdpqfwwu42ywyfvkj","to_address":"tcro1aaah6juc9n6wvkkkr4zdn073n8gt7waha39xsv","amount":[{"denom":"basetcro","amount":"100000000"}]}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]} confirm transaction before signing and broadcasting [y/N]: y
Transaction details will be displayed on your Ledger device, you can click the right button to read the different details.
Read the transaction details carefully and confirm ONLY when you have reviewed all the details are correct.
The transaction is signed and will be broadcasted.
Wait for a while, and the broadcast result will be shown in your terminal.