There are currently different scenarios examined which include soft or hardforking the ethereum blockchain to mitigate the DAO attack.
What plans are there exactly and what are the difference between the hard and the soft fork?
There are currently different scenarios examined which include soft or hardforking the ethereum blockchain to mitigate the DAO attack.
What plans are there exactly and what are the difference between the hard and the soft fork?
Suppose a soft fork with Rule R. We have two miners groups: the group G1 (with the rule R) and group G2 (without the rule R).
Suppose that The Hacker sends a transaction contrary to the Rule R. This transaction is refused by the group G1 and accepted by the group G2. If a miner of G2 wins the PoW, it creates a new Block B. This block is ignored by the miner of G1 and they will choose an other block B'. If G1 is bigger than G2, the longer chain will the one with B' blocks. Otherwise, there are two chains and the miners must choose one way because he can not work for the two chains...
A hard fork is different because it changed the blockchain with something invalid in the protocol. It is similar to create a new blockchain with a new init point. We could create a hard fork in which we rollback all the DAOs transactions done by the hacker or move all DAO tokens in a new contract. This action needs a full consensus with Foundation, Miners, Exchange places ...
Studying the go-ethereum github, the current proposition is to propose a flag --illegal-code-hashes
to specify transactions using a smart contract to ignore. The parity github, the proposition is --help-rescue-dao
and --dont-help-rescue-dao
. By default, your choice is to help. These are the soft fork propositions.
A soft fork means that a state/block that used to to be valid is not valid any more in the new version. In this case a state that would result in spending ETH from any contract with the code of theDAO would be considered invalid. A hard fork makes a state valid that was not valid before.
The big advantage of a soft fork is that only miners need to update their software. Although eventually everyone should - if everyone waits for enough confirmations they will only accept states that are valid under the new rules.
In a hard fork however everyone (consumers, exchanges, ...) need to update their software. Otherwise they are in danger of losing their ETH and other assets on Ethereum. For this reason the period between agreement on the fork and execution of the fork should be much bigger than it can be in a soft fork.
Quoted from the FAQ.
A fork is just like a change (upgrade) in the rules of the blockchain on which the coin operates. This upgrade (fork) splits the blockchain in two different branches with their different versions (after updation).
Now, There are only two types of forks which can upgrade this blockchain technology.
LET'S COME TO THEM
1. Soft Fork : When anyone (anycoin) release an update on the blockchain, they can either release the update in such a way that the new version of software is completely backward compatible with the old version i.e. the old version would be able to interact with the new version (the people who have the older version and not upgraded yet can interact with the people having new version). The new version has some kind of extra features that are only available in the new version, if the fork is soft fork then those new feature shouldnot prohibit this backward compatibility.
Suppose I have not upgraded and i am using the blockchain with it's older version (fork) but you have upgraded and using the latest version of blockchain then in this case, i am able to communicate with you and also with the person who havenot upgraded yet. And you will also be able to communicate both persons.
but but i will not be able to use some extra features of the blockchain which are added after the updation so if i want to use those features then i need to update to the latest blockchain.
2. Hard Fork : It is an upgrade that is not compatible with the old version of software so if the block size in the blockchain is increased, that would be a hard fork because the new version of software that works with increased block size wouldnot be able to communicate with the old version of the software and vice-versa.
Those two different versions would be running on two completely different blockchains, these blockchains would look identically to point where the hard fork happens so they would agree on everything. Actually , they become two separate coins (blockchains) so if you are using old version sofware and people who have upgraded to the new version cannot communicate or send coins from old to new version so the new version becomes most relevant and majority of people switch to the new version. This fork splits the blockchain.
Blockchain developers usually tell everyone that from in about a week or a month or sometime we're going to have a hard fork, you can already now download new version however it will function exactly as the old one until that point and from that point in the future is going to function as the new version and that is to give time to people to upgrade and then the hard fork really happens. If the people dont upgrade, they will be on the old blockchain that is completely separated from the new blockchain.