Update Research Overview
4 stars based on
In blockchain explorer software update Update Mechanism research, we have managed to propose an update system that is capable of blockchain explorer software update painless and almost seamless software updates as well as providing stakeholders with an option to vote blockchain explorer software update hard forks backwards-incompatible protocol updates without the necessity to introduce any non-protocol-level tools. For CSL, we decided to add some support for protocol updates at the protocol layer itself.
It introduces some blockchain explorer software update to blockchain processing, but has several important benefits:. Here we blockchain explorer software update ways to update the application securely.
Protocol updates are a separate issue which is covered in the blockchain explorer software update section of this document. For an update to be applied, its proposal needs be approved blockchain explorer software update. Update blockchain explorer software update can be approved if at least one of two agreements is reached:. This approach seems to fit naturally into the CSL model, as in a PoS cryptocurrency every stakeholder is responsible for maintaining the system proportionally to the relative size of their stake, and the blockchain is maintained via consensus blockchain explorer software update stakeholders.
Software updates are a part of this maintenance process too, so the stakeholders should agree on whether to consider this update trusted. The fact that stakeholders are responsible for system updates does not restrict blockchain explorer software update to a system where every single update requires a signature from the majority of stake. We can introduce the concept of an implicit agreement.
An update has to have at least minimal bound updateProposalThd in configuration. It is not enough for stakeholders to sign the update — they should vote either for or against it. IOHK will maintain a single official client.
But there is also room for third-party alternative clients maintained by the community. As long as this update has enough blockchain explorer software update from stakeholders, the network considers it trusted, and it is updated via the same mechanisms as the official client. In process of time, we plan to maintain a Bittorrent-based or Bittorrent-like solution to distribute updates.
In general, P2P update distribution is a crucial business requirement due to legal concerns. It is to be decided which Bittorrent-like solution particular we will use. Application updates are prepared with bsdiff and applied either directly or via an installer. A soft fork proposes modifying blockchain consensus rules so that the new version blocks are still compatible with old version clients.
BIP provides excellent criteria to distinguish between these two fork types:. By contrast, hard forks require all users to upgrade. In theory, a hard fork may lead to a situation when a network splits into two parts, each maintaining a separate chain: This means some blocks from the first part are considered invalid by the blockchain explorer software update part, and vice versa.
We define protocol version as a tuple Maj, Min, Alt:. The protocol version is to be announced in the application update, and is to be put later into each block created by updated software. A minor version change notifies the network that the blockchain explorer software update application update modifies the protocol managed by a soft fork.
Alt version is a marker of new features. It allows independent developers to introduce multiple changes to the protocol simultaneously. For example, if one vendor decides to introduce feature X via a soft fork, and another proposes feature Y also via a soft forktheir software will be issuing blocks with versions a. Ywhich can coexist in the blockchain. However, only one will eventually be adopted. Obviously, imposing rule 2 as it is may cause the network to be split into two parts: A simple resolution rule could go like this: It may seem unclear why we would like to make some block version invalid at some moment.
The key insight here is that a new feature is actually a restriction on what we had had previously. For example, currently we have plain old transactions which may contain either PublicKey-based addresses or Script-based ones.
Then at some point we decide to include a third address type no matter what its purpose is. Which strategy do we need for verifying a block with a transaction blockchain explorer software update an address of unknown type? Obviously the only option is not verifying this address. Then imagine blockchain explorer software update proposing a transaction to this address, possibly doing that with an intention to secure funds from being spent until some conditions are met — and then watching blockchain explorer software update being spent in some other transaction in a block with version 1.
This is the point. We cannot make use of a restriction without waiting for the network to start assuming the old version to be deprecated since blockchain explorer software update can only start rejecting blocks when their version is deprecated. We also cannot bluntly accept all blocks with a version that blockchain explorer software update higher than the one currently adopted, since in our implementation every block has a special field which is used for storing auxiliary information.
An attacker can claim she uses a higher version of the protocol and generate a block whose attributes are polluted with meaningless keys. If we accept it, it will bloat the blockchain. After block version is adopted, another block version can become competing and some nodes may create blocks with this new version.
Hard forks are resolved using modified proof of burn. As it is not implemented yet, we omit this section from this document and blockchain explorer software update publish it as a separate document. Please enable scripts for all features of this site to work. Cardano Settlement Layer Documentation. Update Research Overview In the Update Mechanism research, we have managed to propose an update system that is capable of producing painless and almost seamless software updates as well as providing stakeholders with an option to vote for hard forks backwards-incompatible protocol updates without the necessity to introduce any non-protocol-level tools.
We propose to use stake for voting for soft and hard forks. It introduces some overhead to blockchain processing, but has several important benefits: For each client implementing the protocol, its latest version from blockchain is known. There is no central entity responsible for maintaining or blockchain explorer software update updates, any such update is proposed under implicit or explicit agreement of the majority of stake and then distributed in a decentralized way.
We do not rely upon clients updating the software on their PCs in time; this is done automatically, and updates are announced directly via the blockchain. If any security flaws are detected in some version of the CSL protocol or in some particular implementation, there would be a mechanism to distribute an update rapidly and still under agreement of the majority of stake.
Sign and Announce Here we consider ways to update the application securely. Update proposal can be approved if at least one of two agreements is reached: Implicit Agreement The fact that stakeholders are responsible for system updates does not restrict us to a system where every single update requires a signature from the majority of stake.
Protocol Update First, we need to distinguish hard and soft protocol updates. BIP provides excellent criteria to distinguish between these two fork types: A soft fork introduces new rules, or restrictions, on blocks. That way, everything that was previously invalid remains invalid, while some blocks that would have been previously considered valid become invalid.
A hard fork is a fork that makes previously invalid blocks valid. We define protocol version as a tuple Maj, Min, Alt: Major version 2 bytes: Minor version 2 bytes: Changes should be backward-compatible in a sense that a block generated by the new version shall be somehow accepted by old version. A particular block may contain addresses of unknown type. For each case like this, a concise workaround should be found in order not to affect stability and correctness of the system. Alt version 1 byte: A major version change triggers a hard fork in the future.
Soft Fork Updates There is a thin line between what we can do within a soft fork and what we cannot: An old version of the client should always find recent blocks valid. Some blocks issued by an old version of the client may be considered invalid by a newer version.
This is the motivation for the logic described below. In our implementation, a block version can exist in the following states: Adoptedwhen the soft fork resolution rule see below for a confirmed block version is triggered. Confirmedwhen there is an update proposal that contains a confirmed version of the software and this block version. For instance, there blockchain explorer software update be versions 2.
In this case the versions blockchain explorer software update are competing are 2. The older versions 1. There is no special name for this state. The soft fork resolution rule works as follows: Formally, we do the following. First, recall that by design, our system does not allow rollbacks of blockchain deeper than a certain fixed global threshold kwhich allows to define stable stake for each stakeholder as their stake k blockchain explorer software update ago.
For each block with version X that is currently competingwe take all created stable blocks with version Xtake set of all leaders of these blocks and accumulate their stakes. So, gathering everything up: Once the update is confirmed, the protocol version say 0. Behavior of nodes that have been updated i. Before the soft fork is resolved i. Treat and validate blocks of version 0. Once the soft fork is resolved, issue and validate blocks per version 0.
Behavior of nodes that have not been updated i. Before the soft fork is resolved, issue and validate blocks per version blockchain explorer software update. Among other things, a block is not accepted if it contains unknown attributes.