Simply Staking
Published in

Simply Staking

Celo Wallet Guide: A Step-By-Step cGLD Ledger Tutorial

Latest update: May 2020

In this guide, we’ll be going over the steps required to store your Celo tokens in the most secure way possible. We will do this by using Celo CLI and a Ledger Nano S Hardware Wallet.

Prerequisites for this guide:

We’ll be going through these steps:

  1. Setup of Ledger Live and Nano S
  2. Celo App Installation
  3. Installing and Configuring CeloCLI on your system
  4. Generating Celo addresses
  5. Sending transactions on the network
  6. CeloCLI command cheat sheet

Setup of Ledger Live and Nano S

Ledger Live is the desktop application used to interact with the Ledger Nano hardware attached to your device.

1. Visit Ledger.com: Download and install Ledger Live

2. Run through the relevant installation steps to install Ledger Live

3. Connect your Ledger device

4. Set up your Ledger device if you have not done so already. Make sure to backup your mnemonic phrase and PIN code.

5. On Ledger Live start-up, click the Right button of the Ledger device to allow Ledger Live to interact with it.

Celo App Installation

1. Update your device’s firmware to the latest version. This is an IMPORTANT step, to ensure your device is using the most secure software compatible with the Celo App. Move to the next step once the update is complete.

2. Set Ledger Live to Developer mode to gain access to the Celo Ledger App. This can be found in Settings -> Experimental features -> Developer Mode.

3. Search and Install the Celo App on the Manager dashboard.

4. Once the Celo App is installed, you should see it on your Ledger’s screen, as below.

5. Click both Ledger buttons to enter the Celo App.

As of 4th May 2020, the App is pending Ledger’s official review, so you’ll have to click both buttons twice to get past a Pending Ledger Review screen.

You should see the following screen:

6. The Celo network uses smart contracts for the network’s protocol and governance, therefore we must enable Contract data on the App.

  • Once on the Application is ready screen, click the Right button until you see Contract data NOT Allowed .
  • Press both Ledger buttons to toggle this setting to Contract data Allowed .

Installing and Configuring CeloCLI on your system

CeloCLI, the tool used for interacting with the Celo blockchain, requires NodeJS 10.X installed.

For Windows users:

1. Download and install NodeJS v10.20.1 from nodejs.org: Previous Releases.

2. Open a command-line interface to be able to run commands.

3. Confirm node and npm were installed correctly.

npm -v
node -v

4. CeloCLI is then installed globally on the system using the npm install command:

npm install -g @celo/celocli

5. Confirm celocli was installed correctly by checking its version.

celocli version

For Ubuntu/Mac:

1. We’ll use NVM to set NodeJS 10 to default. Installing NVM is done as follows:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash

2. Once NVM has been installed, load NVM’s PATH into the current environment, and then install the latest 10.X NodeJS version, setting it as the default version to be used, as follows:

source ~/.bashrc
nvm install 10 && nvm use 10

3. Confirm node and npm were installed correctly.

npm -v
node -v

4. CeloCLI is then installed globally on the system using the npm install command:

npm install -g @celo/celocli

5. Confirm celocli was installed correctly by checking its version.

celocli version

Configuring CeloCLI with the network

1. CeloCLI is a tool which sends and receives data from Celo nodes to interact with the network and Celo Protocol. Therefore, assuming you are not already running a Celo node on your system, we should configure it to use a cLabs node.

celocli config:set --node https://rc1-forno.celo-testnet.org/

2. Check that you have successfully connected to the node, by confirming the follow command returns true . This command will error out or output false if there is an issue with the node or connection.

celocli node:synced
Example query: Node is synced and queriable

Generating Celo addresses

Ledger Nano’s are able to generate 1000s of addresses, with each address having its own index.

Generate the first address of the ledger by running the following command:

celocli account:list --useLedger --ledgerAddresses 1

This outputs both the account that is present on the Celo node, and also the Ledger’s address. Only the addresses listed under the Ledger addresses category must be taken into consideration.

Example query: Outputting 1 addresses generated from the Ledger

Changing the ledgerAddresses parameter of the command will produce further addresses:

Example query: Outputting 5 addresses generated from the Ledger

Sending transactions on the network

When creating a transfer transaction, you can specify any of the addresses generated by the Ledger, as long as it is included in the array of addresses referenced by the ledgerAddresses parameter.

celocli transfer:gold --from=<your-address> --to=<to-address> --value=<amount> --useLedger --ledgerAddresses Xcelocli transfer:dollars --from=<your-address> --to=<to-address> --value=<amount> --useLedger --ledgerAddresses X

For the Ledger to sign a transaction, you must accept and confirm each one on the Ledger Nano by navigation right from the Review transaction screen to the Accept and send screen, and pressing both buttons.

Example transaction:

Example transaction: Transferring cGLD between addresses using the Ledger

CeloCLI command cheat sheet

Check out our CeloCLI +Ledger cheat sheet for cGLD holders.

I hope you find this step-by-step guide useful! I would be happy to hear your thoughts and answer any questions on Twitter https://twitter.com/cremonafran.

Stay tuned to Simply VC for more Celo guides and documentation:

Find out more about Celo:

--

--

--

A team of security, cryptocurrency & business experts passionate about supporting the blockchain ecosystem. Find us at https://www.simply-vc.com.mt.

Recommended from Medium

Many white people think that all Black people talk

How to Build your Own Real-time Chat App like WhatsApp?

How to build Messenger chatbot in Python, Flask and Heroku?

Demystify Dependency Injection and see it in action with this quick intro

Laravel — How should I setup my views?

MEMENOPOLY Public Beta (v1)

Using Composer: PHP’s Dependency Manager

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Francesco Cremona

Francesco Cremona

More from Medium

The HuaNOTs are coming!

Putting Creators First: How Web3 Changes the Future for Creatives

SeeleN Turbo Launches $10M Ecosystem Fund and CandySwap Is the First Incubation Project

AnimePunks DAO?WTF bro?