主页EIPs
EIPsEIP-779
EIP-779

Hardfork Meta: DAO Fork

FinalMeta
创建时间: 2017-11-26
关联 EIP: EIP-606
Casey Detrio (@cdetrio)
原文链接编辑
1 分钟了解
欢迎补充好内容
去提交
相关视频
欢迎补充好内容
去提交
正文

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
0xd4fe7bc31cedb7bfb8a345f31e668033056b2728,
0xb3fb0e5aba0e20e5c49d252dfd30e102b171a425,
0x2c19c7f9ae8b751e37aeb2d93a699722395ae18f,
0xecd135fa4f61a655311e86238c92adcd779555d2,
0x1975bd06d486162d5dc297798dfc41edd5d160a7,
0xa3acf3a1e16b1d7c315e23510fdd7847b48234f6,
0x319f70bab6845585f412ec7724b744fec6095c85,
0x06706dd3f2c9abf0a21ddcc6941d9b86f0596936,
0x5c8536898fbb74fc7445814902fd08422eac56d0,
0x6966ab0d485353095148a2155858910e0965b6f9,
0x779543a0491a837ca36ce8c635d6154e3c4911a6,
0x2a5ed960395e2a49b1c758cef4aa15213cfd874c,
0x5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5,
0x9c50426be05db97f5d64fc54bf89eff947f0a321,
0x200450f06520bdd6c527622a273333384d870efb,
0xbe8539bfe837b67d1282b2b1d61c3f723966f049,
0x6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb,
0xf1385fb24aad0cd7432824085e42aff90886fef5,
0xd1ac8b1ef1b69ff51d1d401a476e7e612414f091,
0x8163e7fb499e90f8544ea62bbf80d21cd26d9efd,
0x51e0ddd9998364a2eb38588679f0d2c42653e4a6,
0x627a0a960c079c21c34f7612d5d230e01b4ad4c7,
0xf0b1aa0eb660754448a7937c022e30aa692fe0c5,
0x24c4d950dfd4dd1902bbed3508144a54542bba94,
0x9f27daea7aca0aa0446220b98d028715e3bc803d,
0xa5dc5acd6a7968a4554d89d65e59b7fd3bff0f90,
0xd9aef3a1e38a39c16b31d1ace71bca8ef58d315b,
0x63ed5a272de2f6d968408b4acb9024f4cc208ebf,
0x6f6704e5a10332af6672e50b3d9754dc460dfa4d,
0x77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6,
0x492ea3bb0f3315521c31f273e565b868fc090f17,
0x0ff30d6de14a8224aa97b78aea5388d1c51c1f00,
0x9ea779f907f0b315b364b0cfc39a0fde5b02a416,
0xceaeb481747ca6c540a000c1f3641f8cef161fa7,
0xcc34673c6c40e791051898567a1222daf90be287,
0x579a80d909f346fbfb1189493f521d7f48d52238,
0xe308bd1ac5fda103967359b2712dd89deffb7973,
0x4cb31628079fb14e4bc3cd5e30c2f7489b00960c,
0xac1ecab32727358dba8962a0f3b261731aad9723,
0x4fd6ace747f06ece9c49699c7cabc62d02211f75,
0x440c59b325d2997a134c2c7c60a8c61611212bad,
0x4486a3d68fac6967006d7a517b889fd3f98c102b,
0x9c15b54878ba618f494b38f0ae7443db6af648ba,
0x27b137a85656544b1ccb5a0f2e561a5703c6a68f,
0x21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241,
0x23b75c2f6791eef49c69684db4c6c1f93bf49a50,
0x1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b,
0xb9637156d330c0d605a791f1c31ba5890582fe1c,
0x6131c42fa982e56929107413a9d526fd99405560,
0x1591fc0f688c81fbeb17f5426a162a7024d430c2,
0x542a9515200d14b68e934e9830d91645a980dd7a,
0xc4bbd073882dd2add2424cf47d35213405b01324,
0x782495b7b3355efb2833d56ecb34dc22ad7dfcc4,
0x58b95c9a9d5d26825e70a82b6adb139d3fd829eb,
0x3ba4d81db016dc2890c81f3acec2454bff5aada5,
0xb52042c8ca3f8aa246fa79c3feaa3d959347c0ab,
0xe4ae1efdfc53b73893af49113d8694a057b9c0d1,
0x3c02a7bc0391e86d91b7d144e61c2c01a25a79c5,
0x0737a6b837f97f46ebade41b9bc3e1c509c85c53,
0x97f43a37f595ab5dd318fb46e7a155eae057317a,
0x52c5317c848ba20c7504cb2c8052abd1fde29d03,
0x4863226780fe7c0356454236d3b1c8792785748d,
0x5d2b2e6fcbe3b11d26b525e085ff818dae332479,
0x5f9f3392e9f62f63b8eac0beb55541fc8627f42c,
0x057b56736d32b86616a10f619859c6cd6f59092a,
0x9aa008f65de0b923a2a4f02012ad034a5e2e2192,
0x304a554a310c7e546dfe434669c62820b7d83490,
0x914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79,
0x4deb0033bb26bc534b197e61d19e0733e5679784,
0x07f5c1e1bc2c93e0402f23341973a0e043f7bf8a,
0x35a051a0010aba705c9008d7a7eff6fb88f6ea7b,
0x4fa802324e929786dbda3b8820dc7834e9134a2a,
0x9da397b9e80755301a3b32173283a91c0ef6c87e,
0x8d9edb3054ce5c5774a420ac37ebae0ac02343c6,
0x0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9,
0x5dc28b15dffed94048d73806ce4b7a4612a1d48f,
0xbcf899e6c7d9d5a215ab1e3444c86806fa854c76,
0x12e626b0eebfe86a56d633b9864e389b45dcb260,
0xa2f1ccba9395d7fcb155bba8bc92db9bafaeade7,
0xec8e57756626fdc07c63ad2eafbd28d08e7b0ca5,
0xd164b088bd9108b60d0ca3751da4bceb207b0782,
0x6231b6d0d5e77fe001c2a460bd9584fee60d409b,
0x1cba23d343a983e9b5cfd19496b9a9701ada385f,
0xa82f360a8d3455c5c41366975bde739c37bfeb8a,
0x9fcd2deaff372a39cc679d5c5e4de7bafb0b1339,
0x005f5cee7a43331d5a3d3eec71305925a62f34b6,
0x0e0da70933f4c7849fc0d203f5d1d43b9ae4532d,
0xd131637d5275fd1a68a3200f4ad25c71a2a9522e,
0xbc07118b9ac290e4622f5e77a0853539789effbe,
0x47e7aa56d6bdf3f36be34619660de61275420af8,
0xacd87e28b0c9d1254e868b81cba4cc20d9a32225,
0xadf80daec7ba8dcf15392f1ac611fff65d94f880,
0x5524c55fb03cf21f549444ccbecb664d0acad706,
0x40b803a9abce16f50f36a77ba41180eb90023925,
0xfe24cdd8648121a43a7c86d289be4dd2951ed49f,
0x17802f43a0137c506ba92291391a8a8f207f487d,
0x253488078a4edf4d6f42f113d1e62836a942cf1a,
0x86af3e9626fce1957c82e88cbf04ddf3a2ed7915,
0xb136707642a4ea12fb4bae820f03d2562ebff487,
0xdbe9b615a3ae8709af8b93336ce9b477e4ac0940,
0xf14c14075d6c4ed84b86798af0956deef67365b5,
0xca544e5c4687d109611d0f8f928b53a25af72448,
0xaeeb8ff27288bdabc0fa5ebb731b6f409507516c,
0xcbb9d3703e651b0d496cdefb8b92c25aeb2171f7,
0x6d87578288b6cb5549d5076a207456a1f6a63dc0,
0xb2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e,
0xaccc230e8a6e5be9160b8cdf2864dd2a001c28b6,
0x2b3455ec7fedf16e646268bf88846bd7a2319bb2,
0x4613f3bca5c44ea06337a9e439fbc6d42e501d0a,
0xd343b217de44030afaa275f54d31a9317c7f441e,
0x84ef4b2357079cd7a7c69fd7a37cd0609a679106,
0xda2fef9e4a3230988ff17df2165440f37e8b1708,
0xf4c64518ea10f995918a454158c6b61407ea345c,
0x7602b46df5390e432ef1c307d4f2c9ff6d65cc97,
0xbb9bc244d798123fde783fcc1c72d3bb8c189413,
0x807640a13483f8ac783c557fcdf27be11ea4ac7a

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):

// Deployed on mainnet at 0xbf4ed7b27f1d666546e30d74d50d173d20bca754 contract DAO { function balanceOf(address addr) returns (uint); function transferFrom(address from, address to, uint balance) returns (bool); uint public totalSupply; } contract WithdrawDAO { DAO constant public mainDAO = DAO(0xbb9bc244d798123fde783fcc1c72d3bb8c189413); address public trustee = 0xda4a4626d3e16e094de3225a751aab7128e96526; function withdraw(){ uint balance = mainDAO.balanceOf(msg.sender); if (!mainDAO.transferFrom(msg.sender, this, balance) || !msg.sender.send(balance)) throw; } function trusteeWithdraw() { trustee.send((this.balance + mainDAO.balanceOf(this)) - mainDAO.totalSupply()); } }

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

0x606060405273da4a4626d3e16e094de3225a751aab7128e96526600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550610462806100516000396000f360606040526000357c0100000000000000000000000000000000000000000000000000000000900480632e6e504a1461005a5780633ccfd60b14610069578063eedcf50a14610078578063fdf97cb2146100b157610058565b005b61006760048050506100ea565b005b6100766004805050610277565b005b6100856004805050610424565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100be600480505061043c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166318160ddd604051817c01000000000000000000000000000000000000000000000000000000000281526004018090506020604051808303816000876161da5a03f115610002575050506040518051906020015073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166370a0823130604051827c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303816000876161da5a03f11561000257505050604051805190602001503073ffffffffffffffffffffffffffffffffffffffff16310103604051809050600060405180830381858888f19350505050505b565b600073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166370a0823133604051827c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303816000876161da5a03f1156100025750505060405180519060200150905073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166323b872dd333084604051847c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506020604051808303816000876161da5a03f1156100025750505060405180519060200150158061041657503373ffffffffffffffffffffffffffffffffffffffff16600082604051809050600060405180830381858888f19350505050155b1561042057610002565b5b50565b73bb9bc244d798123fde783fcc1c72d3bb8c18941381565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156

This deployment results in the runtime bytecode:

0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900480632e6e504a1461005a5780633ccfd60b14610069578063eedcf50a14610078578063fdf97cb2146100b157610058565b005b61006760048050506100ea565b005b6100766004805050610277565b005b6100856004805050610424565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100be600480505061043c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166318160ddd604051817c01000000000000000000000000000000000000000000000000000000000281526004018090506020604051808303816000876161da5a03f115610002575050506040518051906020015073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166370a0823130604051827c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303816000876161da5a03f11561000257505050604051805190602001503073ffffffffffffffffffffffffffffffffffffffff16310103604051809050600060405180830381858888f19350505050505b565b600073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166370a0823133604051827c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303816000876161da5a03f1156100025750505060405180519060200150905073bb9bc244d798123fde783fcc1c72d3bb8c18941373ffffffffffffffffffffffffffffffffffffffff166323b872dd333084604051847c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506020604051808303816000876161da5a03f1156100025750505060405180519060200150158061041657503373ffffffffffffffffffffffffffffffffffffffff16600082604051809050600060405180830381858888f19350505050155b1561042057610002565b5b50565b73bb9bc244d798123fde783fcc1c72d3bb8c18941381565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156

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 and related rights waived via CC0.

扩展阅读
欢迎补充好内容
去提交
相关项目
欢迎补充好内容
去提交

不想错过最新的 EIP 动态?

订阅 EIPs Fun 周刊以跟进相关更新,建⽴你与 EIP 之间的连接 ,更好地建设以太坊。

详情
支持以太坊贡献者,推动生态建设
资源
GitHub
支持社区