Now that CClient v1.0.0-beta is released, IOTA can implement a hardware wallet based on it. I will, in this blogpost, briefly explain the architecture of the IOTA Wallet on ESP32 and I will demonstrate the wallet application.

Introduction

The CClient library is meant to apply the Tangle into IoT ecosystems. It is able to communicate with small devices. The ESP32 is a good candidate because it has built-in wireless connectivity.

But what’s the ESP32?

It is a 32bit SoC (System on Chip) based on the Xtensa LX6

It is able to operate at 160 or 240 MHz with the memory size of 512KB

It provides two development frameworks: arduino-esp32 and esp-idf. Even if both of them are good, I prefer the esp-idf as my development framework since it’s native to the ESP32.

The IOTA ESP32 Wallet

The wallet architecture consists of three parts:

Hardware: the Xtensa LX6 processes and peripherals

FreeRTOS: real-time system, network, and HAL support

Wallet application: IOTA CClient library, SNTP client, and Console service.

The system time will be reset on reboot every time, so we need to get the correct timestamp via SNTP client. The console service allows you to interact with IRI node through the terminal.

IOTA ESP32 Wallet Block Diagram

Demonstration

You can follow the README.md to create your IOTA wallet using ESP32 microcontroller.

This video demonstrates how to get account data and send 1i to an address :