Skip to content

Hardforks

Sia has hardforked a number of times over the years. They are listed here in chronological order.

October 2015 - Tax hardfork

The file contract tax was originally implemented by multiplying by a floating point value. This was found to produce inconsistent results across platforms, so it was changed to an integer multiplication followed by an integer division.

This hardfork also changed the validation of storage proofs to no longer pad the final leaf in a contract with zeroes.

April 2017 - Storage Proof hardfork

This corrected storage proof validation once again, handling edge cases relating to empty contracts and contracts whose size is a perfect multiple of the leaf size.

July 2017 - Dev Address hardfork

This regrettable piece of code overwrote the address of the Sia developers' siafund wallet, restoring access to it after the original was accidentally lost.

December 2017 - Oak hardfork

Sia, like Bitcoin and many other blockchains, originally adjusted its difficulty every two weeks. This hardfork implemented a continuous difficulty adjustment algorithm, "Oak," with the goal of smoothing out large swings in difficulty. Unfortunately, the implementation was buggy, causing the difficulty to first drop precipitously, then rise to the point where block emission was 3x the target of 10 minutes. A second hardfork was therefore deployed one month later, fixing the bug.

November 2018 - ASIC hardfork

After significant controversy and community discussion, the Bitmain A3 and other non-Obelisk ASICs were crippled by the activation of this hardfork, which imposed a new rule on block nonces. To compensate for the ensuing drop in network hashrate, two parameters governing the Oak difficulty adjustment algorithm were also tweaked.

February 2021 - Foundation hardfork

Taking place five months after the community approved the Sia Foundation proposal, this hardfork creates a new 131.4 MS output every 4380 blocks, controlled by the Sia Foundation address, as well as a one-time initial output worth 1.5768 GS. The address can be changed by signing a specially-crafted piece of Arbitrary Data, either with the primary address or a secondary "failsafe" address (which can also be changed). In practice, both addresses are controlled by multisig, and the failsafe address has a timelock that prevents it from being used immediately.

June 2025 - v2 hardfork

Years of planning, implementation, and testing culminated in the v2 hardfork, the largest change to Sia's consensus in its history. The primary motivation for this undertaking was to migrate to the Utreexo blockchain architecture, in which UTXOs are accumulated in a compact cryptographic data structure rather than stored in a large database. Since this necessitated a drastic overhaul of existing consensus code, many other aspects of Sia were modernized as part of the v2 hardfork:

  • File contracts were simplified, and renewals were reified.
  • Spend Policies, a DSL based on Miniscript, replaced the less-flexible "Unlock Conditions."
  • Attestations were added.
  • The Siafund tax was changed from 3.9% to 4%.
  • Blocks gained Height and Commitment fields
  • The State is now small, explicit, and processed by pure functions.
  • ...And many other minor improvements.

The hardfork took place in two phases. After the "allow height," both v1 and v2 blocks were allowed, and all nodes were required to maintain a full copy of the Element Tree (that is: all of the elements, not merely the roots of Merkle trees). After the "require height," only v2 blocks were allowed, and the tree could be deleted, enabling truly lightweight nodes.