EIP-779: "Hardfork Meta: DAO Fork"


Metadata
Status: FinalMetaCreated: 2017-11-26
Authors
Casey Detrio (@cdetrio)
Requires

Abstract


This documents the changes included in the hard fork named "DAO Fork". Unlike other hard forks, the DAO Fork did not change the protocol; all EVM opcodes, transaction format, block structure, and so on remained the same. Rather, the DAO Fork was an "irregular state change" that transferred ether balances from a list of accounts ("child DAO" contracts) into a specified account (the "WithdrawDAO" contract).

Specification


  • Codename: DAO Fork
  • Activation:
    • Block == 1,920,000 on Mainnet

See references [1] and [2] for the original, full specification. It is summarized here for convenience.

At block 1880000, the following accounts are encoded into a list L:

  • The DAO (0xbb9bc244d798123fde783fcc1c72d3bb8c189413)
  • its extraBalance (0x807640a13483f8ac783c557fcdf27be11ea4ac7a)
  • all children of the DAO creator (0x4a574510c7014e4ae985403536074abe582adfc8)
  • and the extraBalance of each child
Reference list L

At the beginning of block 1920000, all ether throughout all accounts in L will be transferred to a contract deployed at 0xbf4ed7b27f1d666546e30d74d50d173d20bca754. The contract was created from the following Solidity code (compiler version v0.3.5-2016-07-01-48238c9):


This contract is deployed on Mainnet in block 1883496 in transaction hash 0xfeae1ff3cf9b6927d607744e3883ea105fb16042d4639857d9cfce3eba644286. The deployment code of the contract is:


This deployment results in the runtime bytecode:


Blocks with block numbers in the range [1_920_000, 1_920_009] MUST have 0x64616f2d686172642d666f726b (hex encoded ASCII string dao-hard-fork) in the extraData field of the block.

References


  1. https://blog.slock.it/hard-fork-specification-24b889e70703
  2. https://blog.ethereum.org/2016/07/15/to-fork-or-not-to-fork/

Copyright


Copyright and related rights waived via CC0.