About hard forks

The term hard fork describes a radical change in the blockchain: a change from one protocol to another, for example. In most blockchains, a hard fork indicates block changes or a change to their interpretation.

Traditionally, when conducting a hard fork, the current protocol would stop operating, new rules and changes would be implemented, and the chain would restart. It is important to note that a hard-forked chain will be different from the previous version and that the history of the pre-forked blockchain will no longer be available.

The Cardano blockchain hard forked from a Byron federated model to a Shelley decentralized one. However, this hard fork was unique. Instead of implementing radical changes, we ensured a smooth transition to a new protocol while saving the history of the previous blocks. This means that the chain did not change radically, instead, it contains Byron blocks, and after a transition period, adds Shelley blocks. There was no fundamental restart point that erased the history of previous activities.

What is a hard fork combinator?

A combinator is a technical term used to indicate the combination of certain processes or things. In the case of Cardano, a hard fork combinator combines protocols, thereby enabling the Byron-to-Shelley transition without system interruption or restart. It ensures that Byron and Shelley ledgers appear as one ledger. Shifting from Ouroboros BFT to Ouroboros Praos does not require all nodes to update simultaneously. Instead, nodes can update gradually, in fact, some can run Byron blocks, while others can run Shelley blocks.

The hard fork combinator is designed to enable the combination of several protocols, without having to make significant adjustments. The current Cardano chain combines Byron and Shelley blocks, and after future transitions, it will also combine Goguen, Basho, and Voltaire blocks - all as a single property. This combinator facilitates the transition from Shelley to Goguen and beyond by simplifying the previous Byron-to-Shelley evolution.

Moving from Byron Ouroboros Classic to Shelley Ouroboros Praos

Cardano Byron mainnet ran on the Ouroboros Classic consensus protocol. Cardano Shelley mainnet, which is the current development era, transitions to a decentralized network running on the new Ouroboros Praos consensus protocol, which allows for more extended capabilities while also supporting the staking process with monetary rewards for ada holders and stake pool owners.

To enable orderly transitions in Cardano without any diversions in the system, it was necessary to update the code to support the new protocol’s conditions. Doing so in a single update might have caused a range of complexities, so Cardano decided to take a two-stage approach, using the Ouroboros Byzantine Fault Tolerance (BFT) protocol as an intermediary.

The shift from Ouroboros Classic to BFT (which happened on February 20, 2020) is the only traditional hard fork within the Cardano blockchain. This forking event restarted the Byron mainnet to run the BFT protocol and enable a smoother transition to Ouroboros Praos without any further chain interruptions. The BFT protocol was carefully designed so that blockchain history would remain unchanged, and the blockchain would appear as a single entity.

Token locking: Shelley protocol upgrade

Token locking is a new feature being added to the Shelley protocol to enable various kinds of smart contract use cases, including creating and transacting with multi-asset tokens, as well as establishing support for the Voltaire voting mechanism.

Token locking is the process of ‘reserving’ a certain amount of assets and committing not to dispose of them for a specified period of time. This feature is enabled in the Allegra (token locking) upgrade and will allow recording of that a specific token is being used for a certain purpose during the Mary (multi-asset support) upgrade. The token can represent an item that is accounted for by the blockchain ledger, including ada, but soon will include other custom token types.

Token locking: use cases

Support for token locking is crucial to enable complex deal settlement and funds accounting.

It can be used in the following scenarios:

  • Contractual agreement - when someone enters into a contractual agreement, to sell a property, for instance, it is important to promise that this property will not be sold to anyone else – only to the person who actually pays the money. In this case, the token can represent the property and the ‘promise’ – the actual token locking. If the property is sold to a different third party, then the contract becomes void.
  • Vote registry - within the Voltaire voting mechanism, token locking will enable users to lock a certain amount of their tokens to represent their voting rights. Ada holders who participate in the voting process will be required to ‘lock’ their tokens. This will represent their voting rights, according to the stake that they hold, and eliminate the risks associated with scenarios such as double-counting votes, allocating more votes than possible, contradictory votes, or vote duplication.
  • Multi-asset tokens - Cardano will soon provide support for multi-asset tokens, where the ledger will support the creation and use of multiple custom token types, besides ada. Token locking will allow ada tokens to be ‘locked’, for example, to create another custom asset of equivalent value.

Mary: multi-asset support

Mary is the Shelley protocol upgrade implemented in March 2021. It introduced native token and multi-asset support on Cardano. Mary allows users to create uniquely defined (custom) tokens and carry out transactions with them directly on the Cardano blockchain.

With the Mary upgrade, the ledger’s accounting infrastructure processes not only ada transactions but also transactions that simultaneously carry several asset types. Native support grants distinct advantages for developers as there is no need to create smart contracts to handle custom token creation or transactions. Instead, the accounting ledger tracks the ownership and transfer of assets, removing extra complexity and potential for manual errors, while ensuring significant cost efficiency.

Developers, businesses, and applications can create general purpose (fungible) or specialized (non-fungible) tokens to achieve commercial or business objectives. These might include the creation of custom payment tokens or rewards for decentralized applications; stablecoins pegged to other currencies; or unique assets that represent intellectual property. All these assets can then be traded, exchanged, or used as payment for products or services.

Further reading:

Alonzo: smart contract support

Alonzo is the protocol upgrade implemented in September 2021, as part of the Goguen development theme. It builds on top of transaction metadata, token locking, and native asset functionality to enable smart contract development.

This upgrade introduces a versatile platform opening up opportunities for businesses and developers, by allowing the creation of smart contracts and decentralized applications (DApps) for decentralized finance (DeFi).

Such capability is enabled by adding the necessary tools and the infrastructure using the Plutus Platform. Applying a rigorous approach based on formal methods and verification, Alonzo extends the basic multi-signature scripting language (multisig) used in Cardano Shelley. Multisig is being upgraded to the Plutus Core language for more powerful and secure scripting options. For this, Alonzo implements the extended unspent transaction output (EUTXO) accounting model.

Further reading:

Vasil: Plutus 2.0 and the debut of pipelining

Vasil is the protocol upgrade which will be implemented in June 2022. Named after the late Bulgarian mathematician and prominent Cardano community member Vasil Dabov, the Vasil upgrade introduces five key mechanisms to improve the blockchain's performance: CIP-31 (Reference Inputs), CIP-32 (Inline Datums), CIP-33 (Reference Scripts ), CIP-40 (Collateral Outputs), and diffusion pipelining.

These improvements boost Cardano's usability and scalability by increasing the block size limit to fit more transactions per block. Developers will have a better experience while building on Cardano as Vasil will greatly reduce the complexity of creating and deploying DApps on Cardano.

Plutus scripts are also a main focus of the Vasil upgrade. These scripts will live persistently on-chain so they can be referenced when needed which will improve efficiency, as there will no longer be a need to include the script in the transaction attempting to spend its outputs.