Integrate ioID in the Device Firmware

A fully decentralized approach

This tutorial demonstrates a fully decentralized approach to managing the lifecycle of device identity and ownership in DePINs using ioID. This method aligns perfectly with the principles of a true Web3 project, enabling device owners to independently initiate and complete the registration process without relying on centralized cloud services.

The document offers a practical, hands-on guide featuring an ESP32 board, with instructions that can be easily adapted to a variety of other “machines,” including Linux-based boards, smartphones, and desktop computers.

Integrate ioID SDK in your device

In this step, we will use the popular ESP32 board as our DePIN device and create a simple firmware that enables the device to be registered on-chain by the device owner. This demonstrates the integration of ioID-SDK with minimal setup, making it a practical and efficient way to securely connect your DePIN devices to your Dapp on the IoTeX blockchain.

circle-info

Below is a flowchart illustrating the basic flow common to most use cases. The process ensures proper device registration at boot and, during normal operation, the device utilizes its DID key to sign messages securely.

Prerequisite

Before proceeding, ensure you have an ESP32 toolchain correctly configuredarrow-up-right on your system. This is essential for building the code and deploying it to your ESP32 board. A VS Code extensionarrow-up-right is also available.

Get the ioID-SDK example

Clone ioID-SDK and enter the ESP32 examples folder:

Clone the tutorial:

Build the demo

Testing the Firmware

In this demo, the firmware is designed to accept HTTPS connections from a client and respond to a request to sign an ioID registration message that the client will utilize to call the ioID registration contract (ref. ioID Registry Contractarrow-up-right).

circle-check

To test the device:

1. Find the Device’s IP Address:

Check the terminal output to find the IP address assigned to the device.

2. Open a Browser:

Use a Chrome-based browser and navigate to the following URL:

Replace YOUR_DEVICE_IP with the actual IP address of the device.

3. Handle Security Warning:

Accept the browser’s security warning. (The demo firmware does not provide a valid HTTPS certificate; however, in a production environment, you should use a valid certificate.)

4. Verify the Response:

The firmware should return some DID (Decentralized Identifier) information in response to the request:

Register the device on IoTeX

The device is now ready to be registered. While any DePIN project can provide their own client to perform the actual registration, here are some tools that work with the device communication protocol implemented in this demo:

  1. The IoTeX Hub Portal: https://hub.iotex.io/my-devices

circle-exclamation
  1. An example command line tool community-developed using NodeJS: https://github.com/simonerom/ioid-registration-jsarrow-up-right

A closer look at the device code