ethereum.forks.dao_fork.dao
The Dao Fork was an irregular state change that moved all Ether from a large collection of accounts (The DAO and all its children) to a recovery contract.
The recovery contract was previously created using normal contract deployment.
DAO_ACCOUNTS
The list of accounts from which ether is transferred. See apply_dao
.
At mainnet block 1,880,000 the following accounts were encoded into this list:
The DAO (
0xbb9bc244d798123fde783fcc1c72d3bb8c189413
),its
extraBalance
(0x807640a13483f8ac783c557fcdf27be11ea4ac7a
),all children of the DAO creator (
0x4a574510c7014e4ae985403536074abe582adfc8
), andthe
extraBalance
of each child.
11 | DAO_ACCOUNTS = [ |
---|---|
12 | hex_to_address(address) |
13 | for address in [ |
14 | "0xd4fe7bc31cedb7bfb8a345f31e668033056b2728", |
15 | "0xb3fb0e5aba0e20e5c49d252dfd30e102b171a425", |
16 | "0x2c19c7f9ae8b751e37aeb2d93a699722395ae18f", |
17 | "0xecd135fa4f61a655311e86238c92adcd779555d2", |
18 | "0x1975bd06d486162d5dc297798dfc41edd5d160a7", |
19 | "0xa3acf3a1e16b1d7c315e23510fdd7847b48234f6", |
20 | "0x319f70bab6845585f412ec7724b744fec6095c85", |
21 | "0x06706dd3f2c9abf0a21ddcc6941d9b86f0596936", |
22 | "0x5c8536898fbb74fc7445814902fd08422eac56d0", |
23 | "0x6966ab0d485353095148a2155858910e0965b6f9", |
24 | "0x779543a0491a837ca36ce8c635d6154e3c4911a6", |
25 | "0x2a5ed960395e2a49b1c758cef4aa15213cfd874c", |
26 | "0x5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5", |
27 | "0x9c50426be05db97f5d64fc54bf89eff947f0a321", |
28 | "0x200450f06520bdd6c527622a273333384d870efb", |
29 | "0xbe8539bfe837b67d1282b2b1d61c3f723966f049", |
30 | "0x6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb", |
31 | "0xf1385fb24aad0cd7432824085e42aff90886fef5", |
32 | "0xd1ac8b1ef1b69ff51d1d401a476e7e612414f091", |
33 | "0x8163e7fb499e90f8544ea62bbf80d21cd26d9efd", |
34 | "0x51e0ddd9998364a2eb38588679f0d2c42653e4a6", |
35 | "0x627a0a960c079c21c34f7612d5d230e01b4ad4c7", |
36 | "0xf0b1aa0eb660754448a7937c022e30aa692fe0c5", |
37 | "0x24c4d950dfd4dd1902bbed3508144a54542bba94", |
38 | "0x9f27daea7aca0aa0446220b98d028715e3bc803d", |
39 | "0xa5dc5acd6a7968a4554d89d65e59b7fd3bff0f90", |
40 | "0xd9aef3a1e38a39c16b31d1ace71bca8ef58d315b", |
41 | "0x63ed5a272de2f6d968408b4acb9024f4cc208ebf", |
42 | "0x6f6704e5a10332af6672e50b3d9754dc460dfa4d", |
43 | "0x77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6", |
44 | "0x492ea3bb0f3315521c31f273e565b868fc090f17", |
45 | "0x0ff30d6de14a8224aa97b78aea5388d1c51c1f00", |
46 | "0x9ea779f907f0b315b364b0cfc39a0fde5b02a416", |
47 | "0xceaeb481747ca6c540a000c1f3641f8cef161fa7", |
48 | "0xcc34673c6c40e791051898567a1222daf90be287", |
49 | "0x579a80d909f346fbfb1189493f521d7f48d52238", |
50 | "0xe308bd1ac5fda103967359b2712dd89deffb7973", |
51 | "0x4cb31628079fb14e4bc3cd5e30c2f7489b00960c", |
52 | "0xac1ecab32727358dba8962a0f3b261731aad9723", |
53 | "0x4fd6ace747f06ece9c49699c7cabc62d02211f75", |
54 | "0x440c59b325d2997a134c2c7c60a8c61611212bad", |
55 | "0x4486a3d68fac6967006d7a517b889fd3f98c102b", |
56 | "0x9c15b54878ba618f494b38f0ae7443db6af648ba", |
57 | "0x27b137a85656544b1ccb5a0f2e561a5703c6a68f", |
58 | "0x21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241", |
59 | "0x23b75c2f6791eef49c69684db4c6c1f93bf49a50", |
60 | "0x1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b", |
61 | "0xb9637156d330c0d605a791f1c31ba5890582fe1c", |
62 | "0x6131c42fa982e56929107413a9d526fd99405560", |
63 | "0x1591fc0f688c81fbeb17f5426a162a7024d430c2", |
64 | "0x542a9515200d14b68e934e9830d91645a980dd7a", |
65 | "0xc4bbd073882dd2add2424cf47d35213405b01324", |
66 | "0x782495b7b3355efb2833d56ecb34dc22ad7dfcc4", |
67 | "0x58b95c9a9d5d26825e70a82b6adb139d3fd829eb", |
68 | "0x3ba4d81db016dc2890c81f3acec2454bff5aada5", |
69 | "0xb52042c8ca3f8aa246fa79c3feaa3d959347c0ab", |
70 | "0xe4ae1efdfc53b73893af49113d8694a057b9c0d1", |
71 | "0x3c02a7bc0391e86d91b7d144e61c2c01a25a79c5", |
72 | "0x0737a6b837f97f46ebade41b9bc3e1c509c85c53", |
73 | "0x97f43a37f595ab5dd318fb46e7a155eae057317a", |
74 | "0x52c5317c848ba20c7504cb2c8052abd1fde29d03", |
75 | "0x4863226780fe7c0356454236d3b1c8792785748d", |
76 | "0x5d2b2e6fcbe3b11d26b525e085ff818dae332479", |
77 | "0x5f9f3392e9f62f63b8eac0beb55541fc8627f42c", |
78 | "0x057b56736d32b86616a10f619859c6cd6f59092a", |
79 | "0x9aa008f65de0b923a2a4f02012ad034a5e2e2192", |
80 | "0x304a554a310c7e546dfe434669c62820b7d83490", |
81 | "0x914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79", |
82 | "0x4deb0033bb26bc534b197e61d19e0733e5679784", |
83 | "0x07f5c1e1bc2c93e0402f23341973a0e043f7bf8a", |
84 | "0x35a051a0010aba705c9008d7a7eff6fb88f6ea7b", |
85 | "0x4fa802324e929786dbda3b8820dc7834e9134a2a", |
86 | "0x9da397b9e80755301a3b32173283a91c0ef6c87e", |
87 | "0x8d9edb3054ce5c5774a420ac37ebae0ac02343c6", |
88 | "0x0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9", |
89 | "0x5dc28b15dffed94048d73806ce4b7a4612a1d48f", |
90 | "0xbcf899e6c7d9d5a215ab1e3444c86806fa854c76", |
91 | "0x12e626b0eebfe86a56d633b9864e389b45dcb260", |
92 | "0xa2f1ccba9395d7fcb155bba8bc92db9bafaeade7", |
93 | "0xec8e57756626fdc07c63ad2eafbd28d08e7b0ca5", |
94 | "0xd164b088bd9108b60d0ca3751da4bceb207b0782", |
95 | "0x6231b6d0d5e77fe001c2a460bd9584fee60d409b", |
96 | "0x1cba23d343a983e9b5cfd19496b9a9701ada385f", |
97 | "0xa82f360a8d3455c5c41366975bde739c37bfeb8a", |
98 | "0x9fcd2deaff372a39cc679d5c5e4de7bafb0b1339", |
99 | "0x005f5cee7a43331d5a3d3eec71305925a62f34b6", |
100 | "0x0e0da70933f4c7849fc0d203f5d1d43b9ae4532d", |
101 | "0xd131637d5275fd1a68a3200f4ad25c71a2a9522e", |
102 | "0xbc07118b9ac290e4622f5e77a0853539789effbe", |
103 | "0x47e7aa56d6bdf3f36be34619660de61275420af8", |
104 | "0xacd87e28b0c9d1254e868b81cba4cc20d9a32225", |
105 | "0xadf80daec7ba8dcf15392f1ac611fff65d94f880", |
106 | "0x5524c55fb03cf21f549444ccbecb664d0acad706", |
107 | "0x40b803a9abce16f50f36a77ba41180eb90023925", |
108 | "0xfe24cdd8648121a43a7c86d289be4dd2951ed49f", |
109 | "0x17802f43a0137c506ba92291391a8a8f207f487d", |
110 | "0x253488078a4edf4d6f42f113d1e62836a942cf1a", |
111 | "0x86af3e9626fce1957c82e88cbf04ddf3a2ed7915", |
112 | "0xb136707642a4ea12fb4bae820f03d2562ebff487", |
113 | "0xdbe9b615a3ae8709af8b93336ce9b477e4ac0940", |
114 | "0xf14c14075d6c4ed84b86798af0956deef67365b5", |
115 | "0xca544e5c4687d109611d0f8f928b53a25af72448", |
116 | "0xaeeb8ff27288bdabc0fa5ebb731b6f409507516c", |
117 | "0xcbb9d3703e651b0d496cdefb8b92c25aeb2171f7", |
118 | "0x6d87578288b6cb5549d5076a207456a1f6a63dc0", |
119 | "0xb2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e", |
120 | "0xaccc230e8a6e5be9160b8cdf2864dd2a001c28b6", |
121 | "0x2b3455ec7fedf16e646268bf88846bd7a2319bb2", |
122 | "0x4613f3bca5c44ea06337a9e439fbc6d42e501d0a", |
123 | "0xd343b217de44030afaa275f54d31a9317c7f441e", |
124 | "0x84ef4b2357079cd7a7c69fd7a37cd0609a679106", |
125 | "0xda2fef9e4a3230988ff17df2165440f37e8b1708", |
126 | "0xf4c64518ea10f995918a454158c6b61407ea345c", |
127 | "0x7602b46df5390e432ef1c307d4f2c9ff6d65cc97", |
128 | "0xbb9bc244d798123fde783fcc1c72d3bb8c189413", |
129 | "0x807640a13483f8ac783c557fcdf27be11ea4ac7a", |
130 | ] |
131 | ] |
DAO_RECOVERY
At the beginning of block 1,920,000, all ether throughout all accounts in
DAO_ACCOUNTS
is transferred to the contract deployed at this address.
The contract was created from the following Solidity code (compiler version
v0.3.5-2016-07-01-48238c9
) and deployed on mainnet in block
1,883,496:
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()
);
}
}
Deployment Code
60 60 60 40 52 73 da 4a 46 26 d3 e1 6e 09 4d e3
22 5a 75 1a ab 71 28 e9 65 26 60 00 60 00 61 01
00 0a 81 54 81 73 ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff 02 19 16 90 83 02
17 90 55 50 61 04 62 80 61 00 51 60 00 39 60 00
f3 60 60 60 40 52 60 00 35 7c 01 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 90 04 80 63 2e 6e 50 4a 14
61 00 5a 57 80 63 3c cf d6 0b 14 61 00 69 57 80
63 ee dc f5 0a 14 61 00 78 57 80 63 fd f9 7c b2
14 61 00 b1 57 61 00 58 56 5b 00 5b 61 00 67 60
04 80 50 50 61 00 ea 56 5b 00 5b 61 00 76 60 04
80 50 50 61 02 77 56 5b 00 5b 61 00 85 60 04 80
50 50 61 04 24 56 5b 60 40 51 80 82 73 ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff 16 81 52 60 20 01 91 50 50 60 40 51 80 91 03
90 f3 5b 61 00 be 60 04 80 50 50 61 04 3c 56 5b
60 40 51 80 82 73 ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff 16 81 52 60 20 01
91 50 50 60 40 51 80 91 03 90 f3 5b 60 00 60 00
90 54 90 61 01 00 0a 90 04 73 ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff 16 73
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff 16 60 00 73 bb 9b c2 44 d7 98 12 3f
de 78 3f cc 1c 72 d3 bb 8c 18 94 13 73 ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff 16 63 18 16 0d dd 60 40 51 81 7c 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 02 81 52 60 04 01 80
90 50 60 20 60 40 51 80 83 03 81 60 00 87 61 61
da 5a 03 f1 15 61 00 02 57 50 50 50 60 40 51 80
51 90 60 20 01 50 73 bb 9b c2 44 d7 98 12 3f de
78 3f cc 1c 72 d3 bb 8c 18 94 13 73 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
16 63 70 a0 82 31 30 60 40 51 82 7c 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 02 81 52 60 04 01 80
82 73 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff 16 81 52 60 20 01 91 50 50 60
20 60 40 51 80 83 03 81 60 00 87 61 61 da 5a 03
f1 15 61 00 02 57 50 50 50 60 40 51 80 51 90 60
20 01 50 30 73 ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff 16 31 01 03 60 40 51
80 90 50 60 00 60 40 51 80 83 03 81 85 88 88 f1
93 50 50 50 50 50 5b 56 5b 60 00 73 bb 9b c2 44
d7 98 12 3f de 78 3f cc 1c 72 d3 bb 8c 18 94 13
73 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff 16 63 70 a0 82 31 33 60 40 51 82
7c 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 81
52 60 04 01 80 82 73 ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 16 81 52 60 20
01 91 50 50 60 20 60 40 51 80 83 03 81 60 00 87
61 61 da 5a 03 f1 15 61 00 02 57 50 50 50 60 40
51 80 51 90 60 20 01 50 90 50 73 bb 9b c2 44 d7
98 12 3f de 78 3f cc 1c 72 d3 bb 8c 18 94 13 73
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff 16 63 23 b8 72 dd 33 30 84 60 40 51
84 7c 01 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
81 52 60 04 01 80 84 73 ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff 16 81 52 60
20 01 83 73 ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff 16 81 52 60 20 01 82 81
52 60 20 01 93 50 50 50 50 60 20 60 40 51 80 83
03 81 60 00 87 61 61 da 5a 03 f1 15 61 00 02 57
50 50 50 60 40 51 80 51 90 60 20 01 50 15 80 61
04 16 57 50 33 73 ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff 16 60 00 82 60 40
51 80 90 50 60 00 60 40 51 80 83 03 81 85 88 88
f1 93 50 50 50 50 15 5b 15 61 04 20 57 61 00 02
56 5b 5b 50 56 5b 73 bb 9b c2 44 d7 98 12 3f de
78 3f cc 1c 72 d3 bb 8c 18 94 13 81 56 5b 60 00
60 00 90 54 90 61 01 00 0a 90 04 73 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
16 81 56
Runtime Code
60 60 60 40 52 60 00 35 7c 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 90 04 80 63 2e 6e 50 4a 14 61
00 5a 57 80 63 3c cf d6 0b 14 61 00 69 57 80 63
ee dc f5 0a 14 61 00 78 57 80 63 fd f9 7c b2 14
61 00 b1 57 61 00 58 56 5b 00 5b 61 00 67 60 04
80 50 50 61 00 ea 56 5b 00 5b 61 00 76 60 04 80
50 50 61 02 77 56 5b 00 5b 61 00 85 60 04 80 50
50 61 04 24 56 5b 60 40 51 80 82 73 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
16 81 52 60 20 01 91 50 50 60 40 51 80 91 03 90
f3 5b 61 00 be 60 04 80 50 50 61 04 3c 56 5b 60
40 51 80 82 73 ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff 16 81 52 60 20 01 91
50 50 60 40 51 80 91 03 90 f3 5b 60 00 60 00 90
54 90 61 01 00 0a 90 04 73 ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff 16 73 ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 16 60 00 73 bb 9b c2 44 d7 98 12 3f de
78 3f cc 1c 72 d3 bb 8c 18 94 13 73 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
16 63 18 16 0d dd 60 40 51 81 7c 01 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 02 81 52 60 04 01 80 90
50 60 20 60 40 51 80 83 03 81 60 00 87 61 61 da
5a 03 f1 15 61 00 02 57 50 50 50 60 40 51 80 51
90 60 20 01 50 73 bb 9b c2 44 d7 98 12 3f de 78
3f cc 1c 72 d3 bb 8c 18 94 13 73 ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 16
63 70 a0 82 31 30 60 40 51 82 7c 01 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 02 81 52 60 04 01 80 82
73 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff 16 81 52 60 20 01 91 50 50 60 20
60 40 51 80 83 03 81 60 00 87 61 61 da 5a 03 f1
15 61 00 02 57 50 50 50 60 40 51 80 51 90 60 20
01 50 30 73 ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff 16 31 01 03 60 40 51 80
90 50 60 00 60 40 51 80 83 03 81 85 88 88 f1 93
50 50 50 50 50 5b 56 5b 60 00 73 bb 9b c2 44 d7
98 12 3f de 78 3f cc 1c 72 d3 bb 8c 18 94 13 73
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff 16 63 70 a0 82 31 33 60 40 51 82 7c
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 02 81 52
60 04 01 80 82 73 ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff 16 81 52 60 20 01
91 50 50 60 20 60 40 51 80 83 03 81 60 00 87 61
61 da 5a 03 f1 15 61 00 02 57 50 50 50 60 40 51
80 51 90 60 20 01 50 90 50 73 bb 9b c2 44 d7 98
12 3f de 78 3f cc 1c 72 d3 bb 8c 18 94 13 73 ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 16 63 23 b8 72 dd 33 30 84 60 40 51 84
7c 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 81
52 60 04 01 80 84 73 ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 16 81 52 60 20
01 83 73 ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff 16 81 52 60 20 01 82 81 52
60 20 01 93 50 50 50 50 60 20 60 40 51 80 83 03
81 60 00 87 61 61 da 5a 03 f1 15 61 00 02 57 50
50 50 60 40 51 80 51 90 60 20 01 50 15 80 61 04
16 57 50 33 73 ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff 16 60 00 82 60 40 51
80 90 50 60 00 60 40 51 80 83 03 81 85 88 88 f1
93 50 50 50 50 15 5b 15 61 04 20 57 61 00 02 56
5b 5b 50 56 5b 73 bb 9b c2 44 d7 98 12 3f de 78
3f cc 1c 72 d3 bb 8c 18 94 13 81 56 5b 60 00 60
00 90 54 90 61 01 00 0a 90 04 73 ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 16
81 56
146 | DAO_RECOVERY = hex_to_address("0xbf4ed7b27f1d666546e30d74d50d173d20bca754") |
---|
apply_dao
Apply the dao fork to the state.
Moves all ether from DAO_ACCOUNTS
to DAO_RECOVERY
.
def apply_dao(state: State) -> None:
347 | """ |
---|---|
348 | Apply the dao fork to the state. |
349 |
|
350 | Moves all ether from [`DAO_ACCOUNTS`] to [`DAO_RECOVERY`]. |
351 |
|
352 | [`DAO_ACCOUNTS`]: ref:ethereum.forks.dao_fork.dao.DAO_ACCOUNTS |
353 | [`DAO_RECOVERY`]: ref:ethereum.forks.dao_fork.dao.DAO_RECOVERY |
354 | """ |
355 | for address in DAO_ACCOUNTS: |
356 | balance = get_account(state, address).balance |
357 | move_ether(state, address, DAO_RECOVERY, balance) |