Link to the proposal: Proposal | Address 0x1FAd009aD35689B5a9B91486148F2F32AFE31e23 | Etherscan
The attacker posted a new proposal to restore the state of Governance. I think that there is a good chance he’s going to execute it.
I’ll be live updating this post. Essentially he gave himself in the malicious proposal 102 * 10,000 TORN as lockedBalance
-s. Below, it seems like, but I need to confirm this, that he’s resetting these back to 0. Note that some of those below, most likely somewhere under 50%, should already be 0, but he’s also probably not willing to check out each specific and just nuking all slots. I’ll have to compute the slots and compare them with the ones that were set on Etherscan.
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.17;
interface IERC20 {
function transfer(address recipient, uint256 amount) external returns (bool);
}
contract Proposal {
uint256[59] private _pad;
mapping(address => uint256) private _balances;
function executeProposal() external {
IERC20(0x77777FeDdddFfC19Ff86DB637967013e6C6A116C).transfer(
0x2F50508a8a3D323B91336FA3eA6ae50E55f32185,
483000 ether
);
_balances[0x1C406ABB1c6a3Bb12447f933b5D4293701b6e9f2] = 0;
_balances[0xb4d47EE99E132e441Ae3467EB7D70F06d61b10C9] = 0;
_balances[0x57400EB021F940B258F925c57cD39F240B7366F2] = 0;
_balances[0xbD23c3ed3DB8a2D07C52F7C6700fDf0888f4f730] = 0;
_balances[0x548Fd6e5239e9Ce96F3B63F9EEeAd8C461609dc5] = 0;
_balances[0x6dD8C3C6ADD0F403167bF8d2E527A544464744Bb] = 0;
_balances[0xC883Fa52D656eBF2b665f2B0C9DC69018dB19760] = 0;
_balances[0x1Eb70Cb3c28BE53b287C4E4770F28a3829a57242] = 0;
_balances[0xcd280F16CE0b25f85f7520a312EB6B9D76a941D4] = 0;
_balances[0xeFDAad217f73355Afe99bC3Ff60BA9Fa6f4Bf51D] = 0;
_balances[0x130A2AAE6C3B2a8B0403cA6b9F4e28f3Eb59b021] = 0;
_balances[0xf06A447EB8ebb3Afe4849fC9Ac14eA7f5FBe480a] = 0;
_balances[0xE3339Ee951522E9C8CC28534179aBF26eF6fC390] = 0;
_balances[0xCDcFE3Fa83e771d3CeF8AcB0Cf494B00A625Baa0] = 0;
_balances[0x427F31Efe23C994738F79B81054351a35E020300] = 0;
_balances[0x7b54c6424602d38c586A73237350d74d3bB1f9e3] = 0;
_balances[0x86ab338d8f95AB08869004Fa438a0608F896cc85] = 0;
_balances[0xe447c398F643122bAF82d2a28f0AD743Bf03810a] = 0;
_balances[0x2026e53c38c2a6d344B20774CCE003B9c82d8db4] = 0;
_balances[0xe2e057027215506ba37aC14b1b3F35447BCE9E00] = 0;
_balances[0x750379A427c2e905dfb93b57Ff32Cc900B982D58] = 0;
_balances[0xf3aBB7F9DfEC6fA5696674e434c1291BA99D5365] = 0;
_balances[0xbDf1b3b48BC47bb400Ed3a774dde6A8a8C087B08] = 0;
_balances[0xbB7AaF0FC95099b624f33d421A02aF2aA9dEB30b] = 0;
_balances[0xD772cA075b0832981F907d78120BB1d2dDeA9c53] = 0;
_balances[0xB8BC190B76066d6C36aeA266dD35997b371Bf059] = 0;
_balances[0xd77B507176504c75e6CDcF2F18E9d5efB674C898] = 0;
_balances[0x59783a2693E00c2e717cdF8F6AABc30F22a2EE25] = 0;
_balances[0x2099A879c81d842CB41faE11F64C430980A2489C] = 0;
_balances[0xe54e212b1678DD92AbA5C19c571012fD9591f79b] = 0;
_balances[0xe8746D4Ee2E21b1952f2a299A58e26217b5C83B8] = 0;
_balances[0xf8DD45c936A23BEC510C3F43340E96624DC64E2a] = 0;
_balances[0xEcC13e5879a24878D391728D21908c06c49a0f35] = 0;
_balances[0x333fA2ea687d00235C9D30Dd8d0A1Ad9be320223] = 0;
_balances[0x39bC22EB04601d10D882b3e0Ff7BC48939468111] = 0;
_balances[0x656c14885D5A4d9617A5338e638E9e09F8742F89] = 0;
_balances[0xE8c82D0EDA5d845eb020b93F28B4192A485ae46F] = 0;
_balances[0x25bC8ce97Ff49A6e4e0FF19576fdCF4930a86470] = 0;
_balances[0xe2FAD4491D606c8dc2CCE6533BA06286B55E9e59] = 0;
_balances[0x211Ecb06CCB94F64a199b8c0Ab50da677F0814A1] = 0;
_balances[0x86f9EF2d46D977dd5756A145697b21A45cd482aA] = 0;
_balances[0xb2149729d926CadF5Fd4F441D2916f32EE1117BD] = 0;
_balances[0xFcA3B56D3fcDDd26A07B4da219D23c821464E413] = 0;
_balances[0xf938f086deB7BF8E21e87B7F5ca695736FB72662] = 0;
_balances[0x2aD04ec2618b937B94FAf84DE1b791ea24c421CB] = 0;
_balances[0xddefD8c3a56B6c94aD7C99515426f35EABd6B1eb] = 0;
_balances[0xF2Faef2A542883655d17a7E1A1F45995FFd96EbD] = 0;
_balances[0x1f91DFE1824F686eaE52dC427725b77491BdF1fe] = 0;
_balances[0xcE3E4F2E58536c62aB884CDf6ede3d540B3Bada4] = 0;
_balances[0xD587e79Af0c5739E7CE2fbC61d9BD2E93905903D] = 0;
_balances[0xd526Bf6eeD41e08f553E8C81405346cA57e5681F] = 0;
_balances[0xB04B6457468B638F634DE5E29b5e3695219bdD07] = 0;
_balances[0x2DC89Da10a6fECd06D1cf4cD2e300892bFb330Ad] = 0;
_balances[0x7D98dFAD3299c1b0A64C4491E79479E25161618E] = 0;
_balances[0x8bc8f686fb9ba1b31bc700ddf1244905F490bebE] = 0;
_balances[0xF6B1FB511ced4Db14c6fB811c160703EE7222a9D] = 0;
_balances[0x18Bb987538429C88364a0F06762446F5f676CD82] = 0;
_balances[0x5A92902142cE0A9b64A63b59E8c45222Da403ADc] = 0;
_balances[0x2a748636E9a02619B4BB517C00b01Bd554100faB] = 0;
_balances[0x732D52E0f3c42e3FC865b0c3D56ad74bbccF012c] = 0;
_balances[0xBaE4F977BAf53c1f4353A94467116227a36E195f] = 0;
_balances[0x01760D5BA7507B35C24dbE0CD33eD20C6Ebc98F2] = 0;
_balances[0xfc91b2f505d759DdB8765B2Cc87510E5aCDdbAAf] = 0;
_balances[0x90009a669F2e2282C6264fFa371dB25e6E5266a0] = 0;
_balances[0x1783D6610a6b8E2fF172eAA09c02F347a03679eF] = 0;
_balances[0x53DCF5fF9804f50B395c1105785e22ae854D8F6E] = 0;
_balances[0x7d01a7eD2f35e2232388686274b28812B1c8AF89] = 0;
_balances[0x81cF4BcF79E85a6827D59013B91aD077c6ce58Fe] = 0;
_balances[0xaa715EBcF8432cf5821f4Aa5E9d1481FA2Ca13B5] = 0;
_balances[0x9ae18da8Bfb74456DcbBD23eE2F56C35A7231339] = 0;
_balances[0xBaB434Bd4DFaA4CefA56B0B7C964facaB74caD13] = 0;
_balances[0x6c4204b3f40dfF763307d8cd681d02e37B55fE08] = 0;
_balances[0x4134644AdcC12841De3FC895509d82e099b7f0DF] = 0;
_balances[0xCa79e6797953954e0817052293FE3A8710F3583d] = 0;
_balances[0x8A6DE36E0CcEfb692355E523583b99017aadc62F] = 0;
_balances[0xA867B662A05e6ADba6209BEe4EB8e01764f1F27d] = 0;
_balances[0x5003997c5e8b0438fef1e6Bb2ff79D73ed68C717] = 0;
_balances[0x335a4d0c4AaC5A5ffD644B3b4FA443679eFa88F9] = 0;
_balances[0x6F07a83384852f22c11D132b91D8c907790911f8] = 0;
_balances[0x32B5694222A2191142b09d6aB17c3b3f57d4e679] = 0;
_balances[0xb99f6AACf00EBFBA50519B1A37B1Ff88E0ae3f9c] = 0;
_balances[0x480ACEBA484e7bBB6a57c8c5F035271C5c21014E] = 0;
_balances[0x314F40B5D640876D8c53381c66B36B55D68195cC] = 0;
_balances[0xcBeC349Eb9ac6656393b001EfF786CDE912c50AB] = 0;
_balances[0xBFf9cb6B8BdA67485e17dD67B450A6A49e76F4bF] = 0;
_balances[0xfd85628806878216d93B623B2e647D1f88Cea027] = 0;
_balances[0x5b929a832690185A150e7648f9b6476487577bd4] = 0;
_balances[0x28bbAdF5C8CeA27636a9cA11436030337c416400] = 0;
_balances[0x9170b1c95DAaDe6fd70E640f1F6FB2911Db62468] = 0;
_balances[0xC73e7c6333683F25B951941759D4b6038eC51DAE] = 0;
_balances[0xd99b4C7372cC245965Bf24A1762d76228201A4b0] = 0;
_balances[0x67227DDE7BD55B8C2313822b2EaDB46Eda73A4bB] = 0;
_balances[0xd4D9F6f64A5bAF9D263217EB7f5AE1444A956469] = 0;
_balances[0xCe85fD8b7D965e807f04F51440585Fc610B061a2] = 0;
_balances[0xd70b6B4De4afa7B0205bB93E46A994C5815fb0B4] = 0;
_balances[0xb06F844f02695F6cfA0152B12BcfA757B31eB154] = 0;
_balances[0x1973653486856a0420Fd92a7c5264c3d4D0319B6] = 0;
_balances[0xA05F1956dC591b815c66e489bf2313F1Ed39dBe9] = 0;
_balances[0xBC78138A49e5BADDBE7a125659A7b4F661D2770A] = 0;
_balances[0x68458586990E0d48c034E49b783B08444730d44f] = 0;
_balances[0xbfFefE62Ca8e0BE1734D267767Ad5923c23bBB05] = 0;
}
}
Note that the padding is used to correctly calculate the storage addresses which should be zeroed out. I’ve checked out the storage layout for the contracts. It checks out:
┌──────────────────────────┬──────────────────────┬──────────────┬────────┬─────────────────────────────────────────────────────┬─────┬───────────────────────────────────────────────────┬───────────────┐
│ contract │ state_variable │ storage_slot │ offset │ type │ idx │ artifact │ numberOfBytes │
├──────────────────────────┼──────────────────────┼──────────────┼────────┼─────────────────────────────────────────────────────┼─────┼───────────────────────────────────────────────────┼───────────────┤
│ Governance │ lockedBalance │ 59 │ 0 │ t_mapping(t_address,t_uint256) │ 3 │ /build-info/d751a0e0942b20f5315c6db7ff6bbb58.json │ 32 │
│ GovernanceGasUpgrade │ lockedBalance │ 59 │ 0 │ t_mapping(t_address,t_uint256) │ 3 │ /build-info/d751a0e0942b20f5315c6db7ff6bbb58.json │ 32 │
│ GovernanceStakingUpgrade │ lockedBalance │ 59 │ 0 │ t_mapping(t_address,t_uint256) │ 3 │ /build-info/d751a0e0942b20f5315c6db7ff6bbb58.json │ 32 │
│ GovernanceVaultUpgrade │ lockedBalance │ 59 │ 0 │ t_mapping(t_address,t_uint256) │ 3 │ /build-info/d751a0e0942b20f5315c6db7ff6bbb58.json │ 32 │