This article was first published on Sia Blog - Medium
(Skyrocket Part 3)
This post is part three in a miniseries about optimizing a cryptographic protocol for decentralized data storage. It is not necessary to read the first two parts about the SiaMux or Ephemeral Accounts, however they do provide useful context for some of the techniques discussed in this post. We will be discussing the design and implementation of the Merklized Data Machine (MDM), which enables us to perform verifiable updates to data that is being stored on an untrusted remote host.
We are going to start by overviewing how data is stored on hosts and how Sia previously communicated with hosts to upload more data, modify it, or download it in the past.
File contracts are what make Sia a reliable store of data. A file contract is an agreement between a renter and host for a set duration of time. After that period, the host is required to prove that it held onto any data uploaded to it for the duration of the file contract.
The file contracts serve two main purposes. The first one is acting as payment channels which can be used for high-frequency micro transactions to hosts. We estimate that at the time of writing around 10 million of such transactions happen on the network per day.
Secondly, they allow us to apply a financial penalty to hosts which lose stored data. To be able to penalize a host, we need to be able to prove to the network that a host isn’t in possession of some data that it’s supposed to have. To do so, the file contract contains a commitment to the stored data in form of a Merkle Root which refers to the root element of a Merkle Tree.
A Merkle Tree is a form of cryptographic accumulator which allows a ...
To keep reading, please go to the original article at:
Sia Blog - Medium