Witness Statement for @reggaemuffin – Proposing Hardfork Adoption Requirements

image.png

Let's all be real, hard fork 20 did not go as well as we all would have liked. And witnesses have their share of the responsibility for this. As I already said on the utopian radio show I think all us witnesses should publicly state our expectations, requirements, and obligations for future hard forks.

This way the community can vote on what they want to see, Steemit inc. can prepare and ensure new forks are meeting these requirements, and the community developers can actually themselves develop forks that can be adopted. We all need to actually use the decentralized decision features that this wondrous blockchain has, and have discourse over it. I think this will be a great step to improving Steem as an ecosystem.

So without further ado I would like to state the first draft of my public witness statement:

My Hard Fork Adoption Requirements

  • A code freeze with a tagged release
    • meaning once testing started no new code changes.
    • If a new change happens, testing may have to be restarted completely to account for it
  • A testnet that mirrors the main net
    • where all consensus witnesses run a server on the old version and migrate to the new version to properly simulate a fork
    • where users interact and try to break things
    • where enough tools work so that everyone can connect just like they would to the main net
    • where DApps can be used on in a beta stage
    • that has all the blocks from mainnet from at least the last 7 days applied in normal time and then undergoes a fork (so the process will take 7 days per fork)
    • where we simulate the hard fork at least three times after the code freeze and before the real hard fork date
  • Documentation on the changes and what code parts to look at
    • with developer discussions on the changes that explain magic numbers and thought processes that went into the code
      • for example how the RC parameters came to be
  • If possible only one major change per fork and rather more forks.
    • Give witnesses the possibility to do a full code audit of the changes. This means it has to be a manageable amount of changes.
    • If something changes the way the Steem blockchain works in fundamental ways, it should be it's own fork.
      • For example instead of the current HF 20:
        • Fork 20: SBD print rate changes
        • Fork 21: Voting Mana introduction
        • Fork 22: Resource Credit system
        • Fork 23: Discounted accounts
    • This will motivate everyone to ensure the existence of better tools and systems supporting frequent hard forks and change the whole process into a routine.
    • Even though exchanges will also have to participate in more forks, having a routine could also benefit them feeling save while upgrading.

As a witness I pledge to do these things for each new fork:

  • Evaluate the fork to my requirements and do a public statement at the start of the code freeze, if I accept it to go into testing.
  • Test the fork and at the earliest possible moment publicly state, if I will adopt it and why.
  • Document my process of testing to keep everyone informed.
  • Do a code audit of all changes to the best of my abilities.
  • Run a testnet node, backup, and seed and contribute to testing.
  • Develop my own publicly stated testing protocol that I will follow, and document all results.
  • Always have one node on the old version, should problems arise, and be prepared to roll back changes.
  • Always be available for any questions users may have about the network.

If I become a top 20 consensus witness, I additionally pledge to:

  • Follow with the changes on github as they evolve and review/participate in the process.
  • Implement community requested changes into patches/forks.
  • Always do a full code audit with public results of new changes.
  • Run a staging version of all my apps on the testnet.

So far I am witness rank #34 which is quite high but still no place to have my opinion heard. So I hope that this post can spark a discussion, and other witnesses do similar statements. We should not forget that the top 20 consensus witnesses are the ones making most of the decision, and they are under the most amount of pressure. But they also earn the most amount of rewards, so I would welcome them having public statements on what their stance is.

Update to @therealwolf: I will pitch to all the witnesses, so that they make their own list of requirements and pledges. My list is just a suggestion, please don't take it as the only way to do it. And I think in the near future I will try to have my witness votes reflect if someone has a pledge or not.

As always, feedback is highly appreciated and I will post updates to this as discussion evolves.


image.png


image.png

H2
H3
H4
3 columns
2 columns
1 column
129 Comments