ethereumproject / ECIPs

The Ethereum Classic Improvement Proposal
55 stars 40 forks source link

ECIP-?: Generalized Version Bits Voting for Consensus Hard Fork #61

Closed sorpaas closed 7 years ago

sorpaas commented 7 years ago
    ECIP: ?
    Title: Generalized Version Bits Voting for Consensus Hard Fork
    Author: Wei Tang <hi@that.world>
    Discussions-To: hi@that.world
    Status: Draft
    Type: Informational
    Created: 2017-06-28

(This is still a work-in-progress. TLDR, it tries to bring the best practices about how Bitcoin deals with consensus hard fork (BIP-9 and BIP-135) into Ethereum Classic. Rather than hard-code a block number as we currently do, each block mined emits support of the new consensus hard-fork. Only when a large enough portion of the network support it, the hard-fork is "locked-in" and will be activated.)

Motivation

Lack of an appropriate voting method can results in network forking. The DAO hard fork was such an example. Currently the way Ethereum used to gather opinions was through CarbonVote. It indeed has the advantage that it brings the opinions of Ethereum holders rather than miners. However, it is not enforceable and we all know the disastrous result it brought during the DAO hard fork period. We don't want that to happen again.

Miner community and proof of work. It is common knowledge that Ethereum Classic will probably stay in proof of work, rather than, like Ethereum, switch to a proof of stake algorithm. Opinions from miners are as important for us as it is for Bitcoin, as those are the people that actually runs the network. If ever we go to proof of work and proof of stake hybrid, as some new blocks will be mined by stake holders based on how many stakes they own, this ECIP would automatically include opinions of both miners and ETC holders.

Best practices from Bitcoin. BIP-9, which uses version bits mined in each blocks to vote for consensus hard fork has be successfully conducted for several Bitcoin hard forks.

Potentially faster adoption of new consensus hard fork. When dealing with emergency consensus hard fork for preventing network attacks, the developer would not need to artificially insert a "hard fork block number" (which must leave enough time for everyone else to upgrade their clients, and then wait for that block). But rather, as soon as a large enough portion of the network clients have been upgraded, the new consensus hard fork would be active.

Ethereum Classic will become a stable protocol soon. When we finished dealing with the monetary policy and finally the difficulty bomb, ETC's protocol would become a rather stable one. This means most of the new consensus hard fork would be new features of the network, rather than fixing existing bugs. In that case, voting would be important to keep the whole network healthy.

Implementation

Ethereum protocol has the extra data field for every block mined. This is currently being filled by the client version. We can use this field to implement the exact same thing as defined in BIP-135 for new consensus hard fork activation.

sorpaas commented 7 years ago

This was replaced by ECIP-1022 (#62).