Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Substrate Point: Forkless upgrades just change the default #966

Open
JoshOrndorff opened this issue Feb 2, 2024 · 3 comments
Open

Substrate Point: Forkless upgrades just change the default #966

JoshOrndorff opened this issue Feb 2, 2024 · 3 comments

Comments

@JoshOrndorff
Copy link
Contributor

I think there is a chance in the Substrate module @kianenigma to really drive home some points that are set up in Game Theory and also in Blockchain. cc @jonasW3F @coax1d

In Game Theory they talk about the default effect. In blockchain we talk about upgrading networks by forking and how the default is to not change the rules at all. If you want to change anything, you can opt in to the change by updating your node.

In Substrate of course you present forkless runtime upgrades which is one of the killer features of Substrate. I think the point to drive home is that Substrate's forkless upgrade feature simply changes the default.

When using Substrate, the default is to follow the onchain governance whereas pre-substrate, the default is to keep the old rules. Even in Substrate you can still have consensus level forks. And if governance decides something you dislike, you still have the ability to "fork off" and keep the old rules. To take such a non-default position, write some new code and update your node. Same as before.

WDYT?

@kianenigma
Copy link
Member

how the default is to not change the rules at all

I think all you said is true, but if you look at substrate at the meta-blockchain level, the default is still to keep not change the rule, but "rule" here means "do as the WASM blob wishes".

@JoshOrndorff
Copy link
Contributor Author

Ah yeah! I exactly agree with you. That's also a great point to make. At the meta-protocol level the rules don't change we just keep executing the wasm as always.

So another also useful and also correct way to frame it is that Substrate provides a mechanism to upgrade the state machine from within the state machine without a consensus fork. If you are dissatisfied with the outcomes of this in-runtime game, you can still perform a regular old consensus fork and change the meta protocol rules from "just follow the wasm" to "follow this other wasm that is the same as the old one and possibly censor upgrade transactions if necessary".

@jonasW3F
Copy link
Contributor

jonasW3F commented Feb 5, 2024

I actually like the perspective that @JoshOrndorff is proposing. I think we can agree that the idea behind it is correct, we just need a precise description. I'll try and correct me if I am mistaken in any of the fine nuances here.

All blockchains (including Polkadot) commonly "follow the consensus rules". But and in contrast to (most?) other blockchains, we form consensus not on static rules but on flexible ones. Concretely, we automatically follow everything that is legitimated by governance and then automatically adopted by all nodes. So, the rule is the same "follow consensus", but it leads to effectively other outcomes. In Polkadot's case, we obtain forkless upgrades while other blockchains are left with hard forks. What is important here is that Polkadot integrates a collective decision-making system into its consensus, something that not many other blockchains have.

Ultimately, if we touch the "default effect" in this topic, we should also highlight the social layer. Since Polkadot does this from the very beginning, its governance process (now OpenGov) is considered legitimate by pretty much every participant, creating a social norm where following changes (again, legitimated by governance) are the default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants