Skip to main content

Read-only wallets

TL;DR

  • Read-only is a mode of using a wallet started into a wallet application.
  • In read-only mode, a wallet application can do all the wallet interactions except signing its blockchain transactions.
  • If a wallet is in read-only mode, it means that its wallet application is not storing the wallet's private key, and is rather using the wallet's public key to perform all possible interactions.
  • On Hathor, to use a wallet in read-only mode, one needs to start it from its extended public key rather than the seed phrase (as usual).

Introduction

This article talks about read-only wallets. We will cover:

  • what read-only wallets is;
  • how it works;
  • what problem it solves;
  • how to use it on Hathor;
  • what its capabilities are on Hathor; and
  • how to implement it in a wallet composite system.

Glossary

These terms are used throughout this article:

  • Wallet is an abstract entity in blockchain technology that enables users to transact — i.e., to read, write, and manage their blockchain transactions. In practical terms, a wallet acts as a decentralized account on the ledger.

  • Wallet application is an application that implements wallets for one or multiple blockchains.

  • Headless wallet is a wallet application whose interface is an API.

  • Hathor headless wallet is the official headless wallet of Hathor, intended to integrate external systems with Hathor Network.

What is read-only wallets?

Read-only is a mode of using a wallet loaded into a wallet application with which users can perform only reading operations on the blockchain. A wallet application can start a wallet in one of two usage modes:

  • default mode;
  • read-only mode.

A wallet is started in default mode from its private key. With access to the private key, the wallet application can sign the blockchain transactions of the wallet, and consequently write to the blockchain.

On the other hand, a wallet is started in read-only mode from its public key. With access to the public key, the wallet application can only read the blockchain transactions of the wallet. Without access to the private key, it is not capable of signing the wallet's blockchain transactions, and consequently cannot write to the blockchain.

How does it work?

The following diagram depicts how the read-only wallet mode works on a wallet application:

Read-only wallet mode

Credits: icons created by James Kopina, Jaime Serra, and Made x Made from the Noun Project.

As we see in the diagram, the usage mode is specific to each wallet. Thus, a wallet application may support (if implemented) the simultaneous loading of multiple wallets, each in a distinct usage mode.

Obviously, it would not make sense using a wallet solely in read-only mode. If this were the case, there would be no way for such a wallet to write to the blockchain, and consequently nothing to read about it either. Thus, while using read-only wallets, users will still need to securely store their private keys and use them to sign transactions.

Therefore, read-only wallets are used in composite wallet systems, in which one component of the wallet system loads a wallet in read-only mode whereas the other takes care of securing the private key and generating transaction signatures. To see how such wallet composite system works, see Functioning of read-only wallets for integrated systems.

note

A wallet system comprises all software and hardware components one uses to handle its wallets on a blockchain. In the simplest case, such wallet system is just a single instance of a wallet application operated by the user. A composite wallet system is a wallet system composed of more than one autonomous component.

A wallet application perform multiple interactions between the user and their wallet. It reads the blockchain and presents the balance of funds associated with the wallet. It creates, signs, and submits transactions from this wallet to the blockchain. Of all these interactions, the only one that cannot be done without the wallet's private key is signing transactions. Indeed, what ultimately defines the inability to write to the blockchain in read-only mode is the inabilty to sign transactions.

Therefore, with the exception of signing transactions, from the public key, a wallet application can support all other interactions with a read-only wallet. This includes not only reading the wallet's blockchain transactions but also creating unsigned transactions, and submitting already signed transactions. Hence, a user can use a wallet in read-only mode in a wallet application to do almost everything, and will need to send an unsigned transaction to another component of their composite wallet system, where their private key is securely stored, to generate the transaction signature.

What problems does it solve?

Users may implement read-only wallets in their wallet systems in order to increase their security, usability, or flexibility — or a combination of these alternatives.

Increasing the protection of private keys is the main reason to use read-only wallets. Storing private keys and signing transactions are critical functions of a wallet system. In this scenario, users can see benefits in segregating these critical functions to an environment different from their main one, or even outsourcing such responsibility to a third-party service provider.

With this in mind, one can understand the typical use case of a composite wallet system. User performs all the interactions on their wallet application using their wallet in read-only mode, with the obvious exception of signing transactions. To generate the signature, they use an external service, that might be managed by themselves or a third party (custodial agent), where their private key is protected. The service returns the transaction signature. They then append the signature to the transaction and submits the signed transaction to the blockchain network.

How to use it on Hathor?

On Hathor, a wallet is started in default mode through the seed phrase that defines it, whereas a wallet is started in read-only mode through its extended public key.

At the moment, from our three official wallet applications — desktop, mobile, and headless —, read-only wallets feature is supported only in Hathor headless wallet v0.19.2 or later.

Regarding third-party wallets integrated with Hathor Network, they may add support to this feature using Hathor wallet library v0.40.0 or later.

Capabilities on Hathor

As already explained, without accessing the wallet's private key, a wallet application can perform all possible wallet interactions except signing its blockchain transactions. Nevertheless, it is required that the wallet application implements such interactions in read-only mode — i.e., using the extended private key.

At the moment, Hathor headless wallet in read-only mode does not support the creation of the following types of transactions for single-signature wallets: create custom token, mint token, and melt token.

Implementation of read-only wallets in composite wallet systems

Now, to implement read-only wallets in a wallet system, one needs to operate two different environments. In the default environment of the user's system, one shall run an instance of the wallet application, with the user's wallets in read-only mode.

And in an environment properly implemented to protect the wallet's private keys, one shall run the secure module of its wallet system. Such secure module may be implemented as a hardware wallet, a KMS (key management system), or a mix of these alternatives.

The described wallet composite system is similar with the scenario of a person using a desktop wallet application to create transactions along a hardware wallet device to sign the transactions. To know more about such implementation, see Functioning of read-only wallets for integrated systems.

Key takeaways

In this article, we explained that:

  • Read-only wallet is a mode of using a wallet started into a wallet application.
  • To use a wallet in read-only mode on Hathor, one just needs to start it from the extended public key rather than the seed phrase (as usual, for the default mode).
  • In the read-only mode, the wallet application does not store the wallet's private key and, consequently, cannot sign transactions.
  • Users may use a read-only wallet to interact with Hathor blockchain to strengthen the protection of its private keys.
  • Once using their wallets in read-only mode, a user will need another component in its wallet system to store its private keys and sign its transactions.

What's next?