The Weavechain: Temporal Immutable Storage and Consensus

24 Mar 2017 / Dotrego

The Weavechain: Temporal Immutable Storage and Consensus

What if you need to store data, with the security and consensus of a blockchain, but on a device that does not have the necessary storage requirements? Right now, many mobile phones don’t have enough space to store a blockchain, let alone multiple blockchains. The wallets on these devices thus have to be light versions of what can be run on a computer with more harddisk space.

For the Internet of Coins project this problem has been put on a priority list. The team wants to be able to store immutable data, but they know this cannot be done in the form of an ever growing blockchain when it is to be stored on a device with limited storage space. For this reason they have come op with a new kind of immutable storage that is temporal.

Enter the weavechain. A weavechain is the decentralized storage system for Internet of Coins containing a collection of interwoven block streams that can store different types of data. It is a priority-based data retention system which stores cryptographically secured blocks on a decentralized network of computers.

Like a blockchain, a weavechain can function as a public ledger of transactions that have been executed on a decentralized network. The first working example of a blockchain is Bitcoin, however, its constantly growing chain size has been perceived by some as a problem that grows more urgent over time.

Blocks can be added to the weavechain in parallel, instead of sequentially. Additionally, data can be disposed of when no longer needed, making it a prunable data store.

As a data storage construct the weavechain decentrally stores information for a period of time in temporal blockchains called strands. The main data collection of a weavechain consists of a high entropy genesis block with successive exodus blocks containing cryptographically hashed time data and consensus information.

Exodus blocks verify eachother back to the Genesis block, and can function as checkpoints or genesis blocks of new strands. They use very little storage space, as they contain no more data than the bare necessities to indicate block time and the final state of consensus for that block. The purpose of an exodus block is that it can be used to checkpoint other blocks that are part of their own individual chains.

The chains containing the exodus checkpoints are called strands. These can contain any kind of data, from multi-source balanced data to cross-blockchain transfer information, and their properties can differ from one strand to the other. Strands enable trustless data sharing with consensus, while at the same time this data can be discarded when no longer necessary.

As ‘completed’ blocks are added to a weavechain block strand, data is retained based on the capacity of the machine the weavechain is running on. Certain strands that have lower priority may be dropped to conserve storage space. When needed, this data can be pulled from machines that have more storage space for all priority strands.

Every strand records blocks in a linear, chronological order. At its end every strand has a predefined drop zone, where data is either reintroduced into the weavechain based on its state of immutability, or dropped to conserve storage space. In this way a weavechain can hold a large amount of data that is verified through consensus, while the actual growth of storage requirements is strictly limited.

The Internet of Coins weavechain can solve the problem of immutability and consensus on devices where storage space is a more tight. As a ‘forgetful’ blockchain, it can further decentralise the cryptocurrency ecosystem and let every device help along, even when resources are limited.