It’s Finally Here — The First Decentralized Mobile Wallet for The Cosmos Hub

David Park
Cosmostation
Published in
9 min readFeb 28, 2019

Cosmostation just released the first mobile wallet for the Cosmos Hub — packed with features you need as an Atom holder, and more.

Cosmostation Wallet — The First Decentralized Wallet for Cosmos, powered by Cosmostation Validator

A few days ago, we released Mintscan, a Cosmos Block explorer for the Cosmos Hub. Mintscan is currently running on Gaia-12001, and we are implementing new features and some fixes to prepare for the Cosmos Hub Mainnet launch. Mintscan will support both the Mainnet and Gaia Testnets.

Mintscan (is) for exchanges and everyday users to conveniently view transaction receipts, navigate through individual addresses, monitor network conditions, and browse validator lists.

As one of the few Validators for the Cosmos Network, we believe that it is our duty to not only operate and maintain a secure validator infrastructure for the stability of the network, but also provide essential tools for Cosmonauts to explore the Cosmos universe.

In our last blog post, we promised to release a decentralized mobile wallet for Cosmos very soon — we’re happy to announce that it’s finally here.

Cosmostation Wallet, The First Mobile Wallet for The Cosmos Hub

Wallet development is one of our strongest suits. In the past, we have developed a decentralized web wallet, EOStart(decentralized EOS mobile wallet), and Ringo Wallet(decentralized multi-currency mobile wallet) both on Android and iOS.

Cosmostation Wallet is a fully decentralized mobile wallet. It’s Android native, and it’s packed with most of the features you want as Atom holder. (Don’t worry iPhone users. iOS version will be out very soon as well. And when we say soon, we mean it.)

Before I get into details about the features provided in Cosmostation Wallet, let me explain why we made the decisions we made in developing this wallet.

Fork-In-The-Road

While developing Cosmostation Wallet, we’ve identified three possible design choices a Cosmos wallet provider could make(there could obviously be more).

For those of you who are new to Cosmos, you will first have to understand what a Light Client Daemon(LCD) is—also referred to as Gaia-lite or Cosmos SDK Light Client.

A lite client allows clients, such as mobile phones, to receive proofs of the state of the blockchain from any full node. lite clients do not have to trust any full node, since they are able to verify any proof they receive and hence full nodes cannot lie about the state of the network.

A lite client can provide the same security as a full node with the minimal requirements on bandwidth, computing and storage resource. As well, it can also provide modular functionality according to users’ configuration. These fantastic features allow developers to build fully secure, efficient and usable mobile apps, websites or any other applications without deploying or maintaining any full blockchain nodes.

Refer to the Cosmos SDK documentation below for more detail:
https://cosmos.network/docs/clients/lite/#introduction

#1 Installing a Local LCD (Voyager)

One of the choices a wallet provider could make is installing a local LCD on your device. If you have previously used Voyager, a desktop wallet client developed by the Cosmos team, you have already experienced what a local LCD could do.

As you can see in the image above, provided in a blog post by the Interchain Foundation back in 2018, the Cosmos Voyager and a LCD together form a Light Node. When you install Voyager on your laptop or desktop, you are automatically installing a lite client on your device.

With Voyager, you are communicating with a full node through a lite client installed on your local device. The Cosmos team developed the LCD to build Voyager, as this is a secure method to develop a decentralized wallet.

However, we found that installing a LCD on a local device was more suitable on a desktop or a laptop than a mobile device. There could definitely be ways to smoothly install a LCD on a mobile device, but taking this route did not align with the experiences we’ve had in developing other decentralized mobile wallets in the past.

#2 Communicating Through a Remote LCD

Another choice a wallet provider could possibly make is to run a LCD on its own instead of guiding you to install one on your local device. This means that you are communicating with a lite client that is:

  1. Installed on an external server (NOT on your local device)
  2. Operated by a 3rd party (NOT controlled by you)

This is not a recommended setup for a wallet user as you must not trust any other entity but yourself when using a blockchain wallet. For this reason, it could be considered dangerous to generate your mnemonics and transactions inside of a LCD installed in an external server.

Swagger UI API, Account Creation

As you can see in the Swagger UI API above, you are required to enter your seed phrase, name, and password in order to create an account in Gaia-lite. There are some intrinsic risks involved in entering your account information in a LCD running on an external server:

  • This means that your account information is encrypted and stored in an external LCD(you are not exposed to this risk when using a local LCD like Voyager, but you cannot guarantee the security of your account when using a LCD that is ran externally and not controlled by you).
  • This method involves using http or https transfer protocols, which could possibly expose you to hackers wanting to packet capture your data.

#3 Offline Local Signing

The third option, which is the route we chose to take in developing our wallet, is to enable offline local signing. For an easier understanding of what offline local signing is, you can think of how MyEtherWallet operates.

MEW is a decentralized web wallet that enables you to generate digital signatures and broadcast transactions without exposing your keys online. A digitally signed transaction cannot be recovered to its original state without your private key.

A lot of people have been asking how we’ve implemented this for the Cosmos Hub. In order to enable offline signing on Cosmos, you will first have to have a full understanding of the topics below:

  1. Understanding of Hierarchical Deterministic Wallet (HD wallet)
  2. Understanding of Tendermint Keys(there are over 5 different types)
  3. Understanding of different message types in Cosmos SDK
  4. How to build a new transaction
  5. How to broadcast a transaction to a full node(using RPC)

Enabling local signing for the Cosmos Hub requires you to combine and convert all of the components above into a language specific to the application you wish to develop(Android and iOS in our case) — our developers have done thorough research on the key generation architecture Tendermint uses in order to implement this.

Developing decentralized wallets is one of our strongest suits. Cosmostation Wallet is a completely decentralized mobile wallet developed for users to conveniently and securely interact with the Cosmos Hub without the risk of possibly exposing your account information to external entities. With local signing, your account information never leaves your device. All transactions are signed locally on your mobile device and never passed to or stored in our servers.

We are currently discussing opening our source code on Github sometime after Mainnet launch(no set date yet). In the meantime, you can take a look at the source code for some of our other products. Both EOStart and Ringo wallet are decentralized mobile wallets with local signing enabled.

Ringo — Crypto Finance in The Palm of Your Hand
https://github.com/wannabit-dev/ringo-wallet

EOStart — Decentralized EOS Wallet
https://github.com/wannabit-dev/eostart

The Section You’ve Been Waiting For — Features!

Now that we’ve covered our decision making process in developing this wallet, let us get back to explaining what features we’ve implemented in Cosmostation Wallet Beta(more to come in upcoming updates).

Hierarchical Deterministic Wallet (HD Wallet)

Easily generate multiple HD wallets from a single seed phrase.

Observer Mode

Observe your address without entering its mnemonics.

Real-Time Monitoring

Check your balance, staking status, reward accumulation in real time.

Local Signing

Decentralized wallet — sign transactions locally and broadcast your transactions.

Simple Send

1:1 token withdrawal

Delegation to Validators

Browse through validator list with detailed information to delegate your Atoms and start earning staking rewards. View Validator operation status, voting status, and your delegation transaction in detail.

Claiming Rewards

View real-time reward accumulation and withdraw rewards from Validators

Proposal

View governance proposals (Voting will be updated soon)

Device Support

Android OS 5.0 (Lollipop) or higher / Tablet not supported

Security

Cosmostation Wallet is a completely decentralized mobile wallet in the palm of your hand. With local signing, your mnemonics or private key never leave your device. All transactions are signed locally on your mobile device and never passed to or stored in our servers.

Mnemonics

The mnemonics you generated and entered in the application is kept securely on your local device with the most up-to-date Android security features. Sensitive information such as your mnemonics is never exposed outside of your local device.

Encryption

One-way encryption and bidirectional encryption implemented. All critical features require user PIN to continue.

  • You must remember to take caution when using clipboard. We recommend clearing your clipboard every once in a while.

Roadmap

We’ve released Cosmostation Wallet as a Beta version. More functions and fixes will be updated soon.

Implementing More In-Depth Functions of The Cosmos Hub

  • Multi messaging — ex) n:1 transactions, 1:n transactions, n:n transactions
  • Customizing claim reward address
  • Claiming all staking rewards from all Validators with just one click
  • Voting for governance proposals
  • Calculating accurate estimated gas consumption
  • Redelegation

Strengthening App Features

  • TX / Staking push alarm
  • Wallet user guide
  • Fingerprint authentication
  • App lock feature
  • Real-time price monitoring and push alarm
  • Improving user experience(UX) design

Expansion to Tendermint Based Blockchains

  • Adding support for IRIS Mainnet
  • Adding major blockchains that run on the Tendermint engine

iOS Application

  • iOS native mobile application currently under development

Open Source

  • Opening our source code to the public on Github
  • Sometime after Mainnet launch — no set date at the moment

About Cosmostation

Welcome, Cosmonaut. FUEL UP on Atom at Cosmostation!

Cosmostation is a Cosmos Validator based in Seoul, South Korea. We are a team of 10 developers, engineers, and dreamers united with one objective — to provide a universe full of useful tools and solutions for Tendermint-based projects.

Unlike most blockchains, which require you to use an opinionated scripting language or environment, Tendermint makes no assumptions about the application, giving developers the utmost freedom to express their business logic using the tools right for them.

We make no assumptions about the power and potential of Tendermint-based networks can bring to the blockchain ecosystem, and we are ready to stay on the grind to do everything we can to contribute to the community.

Cosmostation’s operation philosophy is geared by and for the community. You’ve put your trust on us, and so should we. Along with high security, development of projects within the Cosmos ecosystem, and our promise to delegators, Cosmostation will constantly update and research better ways to fairly reward and protect our delegators to expand the Cosmos universe.

FUEL UP your wallet at Cosmostation to explore the Cosmos network.

Please visit the links below to begin this journey with Cosmostation!

E-mail: business@cosmostation.io
Official Website: https://www.cosmostation.io/
Mobile Wallet: Android — Google Play Store
Block Explorer:
https://www.mintscan.io/
Medium:
https://medium.com/cosmostation/
Twitter: https://twitter.com/CosmostationVD
Telegram: https://t.me/cosmostation
Kakaotalk: https://open.kakao.com/o/g6KKSe5

--

--