Chronicled used its own API

Permanode Chronicle

At its core, IOTA is a protocol for permissionless and trustworthy transmission in the Internet of Things, which enables a smooth exchange of data and values ​​(IOTA tokens) between machines and people. This means that everyone can save data on the Tangle and make it verifiable for third parties free of charge. In the IoT, with its small, resource-poor devices, the amounts of data to be stored (transactions) that are routed through the Tangle via nodes are a major problem, because the Tangle can quickly fill the database with IOTA nodes with limited storage space. To combat this problem, the nodes have a feature called "Local Snapshots" that enables them to delete old transactions and keep their local copy of the Tangle small.

However, for many business use cases, the data in transactions must be stored for long periods of time. For example, in some cases financial information must be retained for 10 years and identity information must be retained for at least the life of the identity (in some cases, your identity must persist beyond your lifetime). For example, consider the case of a transaction that contains a Decentralized Identity (DID) document. A user shares this DID with a government to request a driver's license, however, if the government searches for the DID in the Tangle, it may no longer be available and the request could be denied.

In order to enable these business use cases without burdening the nodes, the IOTA Foundation has developed a Permanode called Chronicle, with Chronicle everyone can save all transactions outside the Tangle in a separate distributed database and make them available as long as they are needed.


is the official permanent solution of the IOTA Foundation, it enables all transactions that reach a node to be stored in a distributed database that is secure and well-scaled. Chronicle is used to store the unlimited flow of data on the Tangle and make it queryable. In other words, a permanence allows unlimited storage of the entire history of the Tangle and makes this data easily accessible.

Chronicle is a framework for building permanent services that receive transactions from an IOTA network and store them in a Scylla cluster. Originally written in Elixir, it has now been fully ported to Rust to support interoperability with other IOTA projects, such as Bee, and to create a more secure programming environment.

Chronicle uses Scylla as its standard storage solution because it offers the following key features:

  • Fault Tolerance: Users can set a replication strategy to determine how data should be replicated to avoid a single point of failure.
  • Data Consistency: Users can set a level of consistency to determine whether a read or write operation is successful.
  • Fast and efficient data queries: Scylla uses LSM-based storage with high write throughput
  • Lifetime: Users can define the lifetime of their data
  • Low operating costs: Licenses (including free and corporate licenses) and operating costs are very affordable compared to other solutions

Chronicle also offers tools for building permanent solutions on an efficient runtime environment based on tokio. With Chronicle, you can:

  • Store IOTA transactions in real time using one or more Scylla clusters
  • Search for all stored transactions using an HTTP API
  • Extend your own application with your own crates and configurations

To do this, Chronicle includes the following crates that you can use as tools for building your own permanode and expanding functionality:

  • API: API app that gives you access to the database
  • Broker: ZMQ broker app for subscribing to new and confirmed transactions on an IOTA node
  • Common: Runtime code that takes over the loading and exiting of apps
  • CQL: Code to decode and encode Cassandra Query Language (CQL) commands to interact with a Scylla node
  • Storage: Storage app for connecting to a Scylla-Node, for saving and searching for transactions on the Scylla-Node.
  • Dashboard:This component is an application for managing and monitoring components such as adding or removing Scylla nodes without downtime or connecting to new IOTA nodes in the Chronicle Broker.

Query as a service

Basic economics dictates that an economic incentive is necessary to devote any amount of resources to storing other people's data. Therefore, the IF created a way to get community members or companies to use Tangle data "Query as a service" Offering that is what makes Chronicle unique right now. With a little extra development, all node owners could make money charging IOTA tokens to access historical Tangle data. By querying a quorum from internal and external nodes, the absolute truthfulness of the data could be guaranteed.

The functionality can be further expanded through multiplex networks by setting up microservices for second layer solutions that can communicate with public and private data sets under different guidelines.


Selective Permanode

A pure permanode that dullly stores all transactions will no longer work in a few years due to the constantly growing number of transactions, the required storage space would be exorbitantly high and would cost the operator a lot of money. The aim of a Selective Permanode is to only save the data that is relevant for the operator himself. For larger companies this would be an enormous incentive to participate in the network with their own Selective Permanodes and at the same time to save their own relevant transactions for a self-determined period of time. In August 2019, the well-known community member Olaf van Wijk received financial support from the Ecosystem Development Fund. This money is used to support his research on a “Selective Permanode”, for this purpose Olaf founded the startup “Aion”, here is the last status report.



Take part

Chronicle is an open source project and we encourage everyone to help bring it closer to production readiness:

  • Participate in the X-Teams
  • Chat with developers and other users on the Timeline discussion channel on Discord
  • Learn with the documentation
  • Contribute to GitHub



Last edited on 03/25/2021