Sia is a storage blockchain with the primary aim to bring back data ownership to the individual and prevent data censorship by any actors. Unlike IPFS-based file storage and Arweave where entire files are replicated between nodes, Sia splits up files that are uploaded, encrypts the data fragments, and replicates those fragments across its network.
In the Sia network, file storage users are referred to as “renters”, because they essentially rent storage space on the network. The “node” is your specific installation of Sia, and a “host” is a storage space provider on the Sia network that earns Siacoin for providing their storage.
Sia, similar to Filecoin, works with contracts between renters and hosts that determine how much data is stored for how long and at which price. These storage contracts that define the terms of arrangement between renters and hosts are stored on Sia’s native blockchain, the Sia. The data to be saved (defined in the contract) is then stored on hosts’ machines. When a contract is formed, the host commits to submitting proofs that the files agreed upon in the contract are indeed stored on their machine.
Sia uses both incentivization and slashing to ensure files are stored for the duration of a contract: regularly submitting file storage proofs is rewarded with Siacoins and missing to submit a proof is penalized.
Architecturally speaking, Sia can be considered a hard fork of the Bitcoin network protocol, with adjustments made to transactions specifically to enable storage: the Bitcoin Script transaction language was entirely removed and replaced only with timelock-enabled M-of-N multi-signature transactions. The functionality of this transaction type is also extended in Sia with contracts, proofs, and contract updates. All this together enables the previously mentioned storage contract functionality in what is essentially a Proof-of-Work storage blockchain.
The Sia Blockchain has two tokens:
Siacoin: the native utility token of the Sia blockchain used for storage contracts
Siafunds: a revenue-sharing token on the network that gives holders Siacoins for every completed contract on the network
Storage Technology & Consensus Mechanism
The primary driver behind Sia’s storage mechanism is the storage contract. The storage contract specifies all aspects of the agreement between the renter and the host. Furthermore, the storage contract includes a Merkle tree hash that is created by generating 30 constant sized segments from the file which are then hashed into a Merkle tree using the Threefish algorithm and each file segment is hashed using a different encryption key. This enables the verification of storage proofs and ensures the files are not tampered with. Each piece is then replicated on several different hosts, enabling privacy and increased censorship-resistance: no single host can reconstruct the file with their piece alone, and taking down a single piece does not corrupt the file. In fact, Sia uses Reed-Solomon erasure coding to generate the 30-piece segments, which ensures redundancy: only 10 of the 30 segments are required to fully recover a file, meaning even if a majority of the segments are lost, the files can still be recovered. Furthermore, if a host does go offline, the file is automatically replicated to a new host.
Apart from what files should be saved for how long at which price and the file’s Merkle tree hash, the storage contract also specifies:
Challenge frequency: specifies frequency of periodic valid proof submissions by host
Payout parameters: reward rules for valid proofs, invalid or missing proof, and the maximum number of proofs that can be missed
When a challenge is to be submitted, there is a timeframe during which the host can submit the valid proof to the network called a challenge window. If a valid proof is submitted, the host is rewarded a certain amount of the funds pre-paid into the contract. This is Sia’s “Proof of Storage” algorithm. If a host does not submit the proof, those funds are instead sent to a “missed proof” address, which is essentially a burn address. If too many proofs are missed, the contract “unsuccessfully terminates” and the remaining coins in the storage contract are sent to the missed proof address. The contract also unsuccessfully terminates if the funds in the storage contract are exhausted before the end of the contract duration – more on this in the storage process & pricing mechanism section.
If a storage contract is successfully concluded, meaning the contract was sufficiently funded and the host successfully submitted periodical proofs over the duration of the contract, then the contract is successfully terminated, and remaining coins sent to the host.
No matter if a proof is validly submitted or missed, or the contract successfully or unsuccessfully concludes, every action or lack thereof creates an output ID similar to a UTXO in Bitcoin. And just like Bitcoin, every transaction input must be a prior transaction output, meaning Sia can be considered a UTXO-based blockchain.
The storage proofs, which are to be submitted periodically by the host to the network, are created based on a randomly selected portion of the originally stored file and a list of hashes from the file’s Merkle tree. These are then validated against the Merkle tree hash previously submitted when the storage contract was locked to prove that the host is indeed storing the file, and no alterations were made to the file.
Sia ensures hosts are incentivized to stay online and to complete contracts instead of intentionally dropping ongoing contracts for more lucrative contracts through putting up collateral up-front and through a host scoring mechanism. If a host goes offline or doesn’t keep persistently keep renter data, they lose their collateral, and their host score is impacted. The host score is comprised of:
Competitive pricing: lower prices for storage and bandwidth score higher
Collateral: equilibrium scores higher (impacts storage pricing: low collateral means host has nothing to lose, high collateral leads to storage price increases for renters)
Available storage space: more remaining storage scores higher
Host age: older scores higher
Interaction weight: being open to storage orders scores higher
Version adjustment: newer version of the Sia client scores higher
Furthermore, later in the lifecycle of the Sia project a Proof of Burn mechanic was introduced to prevent Sybil attacks. A Sybil attack is when an attacker creates a large number of identities in an identity system to become the majority in order to dictate what the system deems is true. In Sia this could mean creating a majority of new hosts to dictate which transactions should be included in a block. Hosts are expected to burn around 0.5-2.5% of their revenue to prove they are legitimate nodes on the network. This makes creating new identities extremely expensive and further instructs the aforementioned reputation system.
Finally, Sia relies on a Proof of Work consensus algorithm (specifically the Blake2b algorithm) to mine new blocks on the blockchain. While Proof of Storage creates transactions that validate storage proofs and are broadcast to the network, the Proof of Work algorithm bundles these transactions into blocks and adds them to the blockchain. As a result, the hashed Merkle tree of each transaction becomes publicly visible on the blockchain, meaning any host that holds a file segment can validate it against the public ledger storage contract entry.
Sia is also capable of allowing edits to uploaded files, however the precise mechanism thereof is beyond the scope of this research.
Storage Process & Pricing Mechanism
On the Sia network, an automatic storage marketplace is used to find a host to store data. The cost for storage, quoted and settled in Sia’s native Siacoin token, is determined by supply and demand by hosts and renters: “If hosts find they can lower prices and win more data to store as a result, they’ll do it. If renters are willing to pay more to store on high-quality hosts, those hosts might raise their prices.” (https://docs.sia.tech/)
On Sia, you do not specify the duration of which you want to store your files. Instead, storage contracts are always three months long, and are automatically extended when one month remains, assuming the contract isn’t cancelled by the renter (e.g., due to insufficient funds) or the files’ health drops below minimum redundancy (hosts stop hosting the file).
The mechanism used to store files longer than three months is by setting an allowance that automatically refills over time from your wallet balance. This allowance is used to pay for storage contract extensions. Any funds that were filled into the allowance, but not allocated to storage contracts through transactions, are returned to the renter. The allowance refill mechanism is separate to the contract renewal mechanism and starts about halfway into a contract period.
However, users must regularly open the Sia application to ensure the allowance is replenished – this is not executed autonomously through smart contracts but is a process that the Sia software executes when it is manually launched on a renter’s machine. As a result of these mechanics, the renter only needs to set the target price and the expected total storage size to be used. The renter is then automatically connected to suitable hosts, which have all storage and bandwidth related costs set as part of their storage contract pricing setup.
The formula for storage allowance calculation is:
TargetPrice is the storage price per TB per month denoted in Siacoins
StorageSize refers to the expected total used storage size in TB
ContractDuration refers to the 3-month contract cycles in Sia
As users transmit, store, and retrieve data, they pay three different fees to the hosts from their allowance:
Contract formation fees: transaction fee for creating a storage contract on the blockchain
Storage fees: cost of renting storage space
Bandwidth fees: bandwidth used for uploading or downloading data and for repair-related bandwidth
The replication of a split file across multiple hosts is called “health” and renters must regularly open the Sia client to refresh the health of their files. If a file’s health is 100% it means that all pieces of the file are available on the Sia network. This manual action is a result of Sia’s encryption approach: because nobody but the renter can construct the full file with each segment’s encryption key, only the renter can verify with the network whether the file’s replication status is healthy.
Sia recommends opening the client at least once a month and have the client run over night to ensure housekeeping items such as allowance refill, storage contract extensions and file replication can run in the background.
Skynet & Skylink
Skynet (https://siasky.net/) is Sia’s implementation of a content delivery network, and closely resembles CIDs in IPFS or Arweave permaweb links: uploading data to Skynet generates a unique identifier, known as a Skylink. Just like with IPFS CIDs, a Skylink is a cryptographic hash generated from the file contents, and thus closely resemble CIDs in look:
Skynet uses “Portals” to let users access files through Skylinks. These closely resemble gateways in IPFS in that they provide an access point to the data on the Sia network without having to download the Sia client. Similar to IPNS, Skynet also has their own decentralized domain name service called Handshake Names, which all Portals support.
In the previous section we mention that on the Sia network a client must open their client at least once a month to ensure that housekeeping operations are completed. On Skynet, these housekeeping actions are automatically completed by Portals, and they also pay all host-related fees a renter would cover if they were to directly rent space on Sia. Finally, on Skynet Portals can decide their own pinning policies, which determine how long a file will be available on the network.
Since the network and underlying data is secured through the Sia blockchain, and pricing mechanics of storing on the Sia blockchain controlled through the automatic storage marketplace, Skynet adds another financial layer on top. According to Skynet docs, Portals operate a freemium model where basic access to the network and saving small files is subsidized by Portals, however, to unlock faster network speeds more storage space, users must pay a premium. Unfortunately, we were not able to test this feature as sign-ups for Skynet were closed as of time of writing.
There is no maximum supply of Siacoins and the supply of Siacoins is perpetually inflating at a rate of 30,000 Siacoins per block. Initially the blocks emitted were (300,000 – blockheight) blocks, however after 270,000 blocks the block reward is locked at a minimum issuance of 30,000 per block. As of time of writing, the Sia blockchain has reached over 366,000 blocks with a total circulation of 47.4 billion Siacoins. The Sia blockchain has no pre-minted blocks, meaning that when the chain was launched circulation of Sia was 0.
Apart from the block reward schedule above, Sia introduced a hardfork in its 6th year of operation to include a block subsidy and minted additional Siacoins, to fund the Sia Foundation, a non-profit entity meant to support, develop and promote the Sia network. The block subsidy is 30,000 SC per block paid out every 4,380 blocks (roughly a month at an average block time of 10 minutes) which equates to an annual subsidy of around 1.57 billion SC (roughly $8 million USD at token value at time of writing). The initial Sia Foundation subsidy was also approximately 1.57 billion SC, but was created all at once instead of being created overtime with block rewards.
The amount of coins burned in Sia, even after the Proof of Burn mechanism was activated (which appears to have been activated in early 2020 given the sudden increases in burn; no official sources were found on the activation date), is far below the coin inflation at only roughly 500k SC burned per year vs roughly 3.14 billion SC minted annually (1.57 billion block rewards and 1.57 billion Sia Foundation subsidy).
Sia has a second cryptocurrency which are called Siafunds (SF). In total 10,000 SF were created and were entirely pre-mined. Siafunds allow for holders to share 3.9% of the revenue from successful storage contracts and were created for the purpose to ensure long-term funding for the development of the project. According to the Sia wiki, Nebulous holds 8576 SF, with the remainder being in public circulation as a result of a crowdfunding campaign to fund early development of the project.
All references were accessed between May 5th and 31st, 2022.