Replies: 5 comments 5 replies
-
In components using versioning I think we can add: operations, endorsements and async messages. Maybe we should think about the storage format also. In the case of this kind of RFC is accepted : #3056 At TS, I don't think node that have updated should still process :
It's complicated to know if a version is a "bad" or not. What could be possible is that when a version is propagated by When looking at some resources you pointed out, especially : https://github.com/bitcoin/bitcoin/pull/1526/files it feels like they are just making some conditions around the code and don't have a complex framework or something like that. |
Beta Was this translation helpful? Give feedback.
-
One question I had attending Damirs lessons, was regarding things like tweaking configs such as the interval times between periods. The context I have in mind, is that bitcoin is locked into the very conservative 10min. To app apply that context to massa, a 16s interval for massa decision is appropriate for today, but will that prove to be conservative in the future, and will we want/be able to propagate changes to such things to the network? |
Beta Was this translation helpful? Give feedback.
-
Meta issue for Versioning: #3438 |
Beta Was this translation helpful? Give feedback.
-
After last week discussion, @Leo-Besancon and @sydhds will investigate the part that we previously called (Versioning info & trigger). As bitcoin did with BIP-0034 & BIP-0009, we are going to share the work similarly:
|
Beta Was this translation helpful? Give feedback.
-
To better understand what you wrote, I did the exercise on my side as well. NOTE: this IS NOT meant to be implemented, it is just my personal notes so we can discuss Versioning
|
Beta Was this translation helpful? Give feedback.
-
Intro
After mainnet, we will need to have a way to update some parts of the code without shutting down the whole network.
A really obvious example, would be if we decide to change the Virtual machine for Smart contract execution:
Components using versioning
Edit from sydhds (05/01/2022):
General overview
For this overview, we start with:
Here is an expected timeline:
TODO: add a schema here?
General overview: edge cases
'Bad future' version
Receiving block like
Some nodes do not update to [mainet_2]
What if a majority of users do not switch
That's decentralization and that might mean that the update is not good / has no incentive. This can lead to a fork.
What if a node with [mainet_2] produces block [b_2][][block_data] before [TS]
Node should be ban from the network
Bitcoin and versioning
Specs (aka BIP)
Pay to Script Hash - BIP-0016
BIP-030
Block v2, Height in Coinbase - BIP-0034
TODO: clarify what is nVersion
Version bits with timeout and delay - BIP-009
Version bits with lock-in by height - BIP-008
BIP-009 notes:
Components
Note: From bitcoin.it/wiki (so info might not be up-to-date)
Etherum and versioning
EDIT from Aurelien (05/01/2022):
I found some interesting resources on Ethereum by digging their EIP process. A good article from a developer community organizer.
I dug into the EIP that cause fork or not. For the lights changes they are basically just adding new features with control flow (for example
if
).For update that can cause forks they are using a block number to make the change or not.
An example is the Constantinople Update in 2018. They define a new block height in the code that will switch to new version and they have
if
all across the code to get the correct values depending on the current version.They don't remove code from update that are passed long time ago. For example :
They still have this two
if
condition the two are valid now and so this kind of code could be refactored. Maybe they keep it if they want to replay the chain from start with update made as the right block heights.In case they want to postpone a version they just revert the block height defined.
Specs
Next steps
Discussions
We propose to make this discussion a Meta discussion and links to several new discussion:
Code
In the meantime, we also think that the following dummy versioning implementation/test could be made:
Beta Was this translation helpful? Give feedback.
All reactions