When Ethereum was conceived, the vision was to have a distributed P2P network of independent nodes and access to dApps using these nodes, all without any centralized services.

In reality, the current situation for most applications looks more like the illustration below rather than the original ideal of complete decentralization. The development and use of dApps are already underway, for several reasons, most dApps rely on remote servers to connect to the blockchain. It’s a kind of paradox: We connect to the decentralized world using centralized access.

One of slock.it’s missions is to enable IoT devices to connect to the blockchain to give these devices the ability to pay or receive payment for services, or to realize truly secure access management. Many of these IoT devices are based on microcontrollers, which are, unfortunately, severely limited in terms of computing power, memory, storage, and connectivity. The same also applies to mobile applications on smartphones or web applications.

So, to connect IoT devices to the blockchain securely and sustainably, we need to enable microcontrollers to run blockchain clients. These devices must be able to read data from the blockchain, write data into the blockchain, or interact with smart contracts.

How can this be done? It’s not possible to run a full node on such a device, and even a light client is, at best, only feasible on a high-performance IoT (like a Raspberry Pi or better).

The solution is to use minimal verification clients, which were introduced in the Incubed protocol by slock.it. Such a client combines the security of a light client with the advantages of a remote client at least for the most common IoT solutions, as well as mobile and web applications.

With Incubed, it’s possible to connect devices in a fully decentralized way, without a central instance, and with (almost) full security.

An Incubed client is a stateless client that can verify whatever requested information belongs to a given block and confirm that this block is, in fact, a valid block of the blockchain. The client can do this all by itself, without the need to trust any external source.

How does Incubed work? To learn about the details, check out what we wrote in an earlier blog post or presentation. You can also access the Incubed documentation or our GitHub repository for more information.

Typescript Vs. C

The TypeScript Incubed client provides a library to integrate the client directly into a mobile app or a web application. It’s possible to use the Incubed client directly or simply as an HTTP-provider for Web3.js.

This makes it possible to convert existing applications into truly decentralized applications based on the Incubed protocol easily, quickly, and without remarkable effort.

Nevertheless, this won’t work as a solution for IoT devices with very limited resources. To address this, we are also publishing our C implementation with this release, which makes it possible to integrate the Incubed client into any program, including the firmware of microcontrollers. Depending on the edition — each differs in the functional scope and thus the resource requirements — the client can verify transactions, access the state, and account information, or interact with smart contracts.

The Incubed EVM is the most resource-efficient implementation currently available. This makes the Incubed client fully capable of running on a microcontroller.

This native implementation of the Incubed client requires minimal resources. The nano edition (which only verifies transactions) requires the lowest amount of resources, only about 150KB. But even the full version (including EVM), which can enable all interactions with the blockchain, needs only about 450KB, depending on the firmware.

Operating an Incubed Node

The Incubed protocol is based on an open network. Anyone can operate an Incubed node to support the decentralized network and help develop a stable ecosystem.

Practically any full node (e.g., Geth, Parity, Nethermind, and all other implementations that adopted EIP-1186) can become an active Incubed node by adding the Incubed interface software and registering in the Incubed registry.

Anyone can register and run an Incubed node.

The documentation explains how to do this.

Of course, there is also a Docker image available, which is already configured and ready to run.

Stable Release

With the current release, the Incubed protocol goes live on the Ethereum main net and various Ethereum test networks. IPFS is supported, too. As the Incubed protocol is platform-agnostic, other blockchains like Bitcoin are in development or an experimental phase.

The TypeScript-Incubed client, the Incubed node, and the Incubed registry are published with the release version. The C-client, as well as the binding to Java, and the WASM-client are available as a beta version. A command-line application to interact directly from the console with the blockchain, without the need to install and synchronize a local client, is part of the package, too.

All software is offered under a dual license — AGPL for open-source software applications and a commercial license for all other applications.

An important feature of the Incubed protocol, the incentive layer, will first be available in the upcoming Stable II (productive) release. This will make it possible to compensate Incubed nodes for the delivery of verifiable (and thus secure) data.

The software components dealing with security and holding or managing values were audited by Consensys Diligence. The report is published (see https://diligence.consensys.net/audits/2019/09/slock.it-incubed3/).

Roadmap

The next big milestone, which we are working on now, will be the release of the above-mentioned incentive layer. We will also publish the C version of the Incubed client as a productive release version. With this version, bindings to other programming languages like Python, Go, and others will be available. The TypeScript version will be replaced by a much more resource-efficient WASM version without any dependencies to other libraries.

Longer-term development milestones include the integration of further blockchain technologies, level 2 technologies, and other verifiable data services into the protocol.

Get in Touch

The source code is available within our GitHub repository, and you can also check out the release packages. Also, we invite you to chat with us at our newly opened Gitter channel about your ideas, requirements, and experiences with Incubed.