From d2b00ce914076891c064fbbf280f363329c0f4cb Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 2 Jul 2024 11:23:13 +0800 Subject: [PATCH] chore(protocol): check in data for the first token grant exercise (#17707) --- .../deployments/mainnet-contract-logs-L1.md | 2 +- packages/protocol/foundry.toml | 1 + .../protocol/script/tokenunlock/Vest.s.sol | 58 +-- .../script/tokenunlock/exercise1.data.json | 362 ++++++++++++++++++ 4 files changed, 395 insertions(+), 28 deletions(-) create mode 100644 packages/protocol/script/tokenunlock/exercise1.data.json diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md index 96ee07119f..1f96a1bf15 100644 --- a/packages/protocol/deployments/mainnet-contract-logs-L1.md +++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md @@ -328,7 +328,7 @@ ### token_unlock -- impl: `0x035AFfC82612de31E9Db2259B9482D0Dd53B7819.` +- impl: `0x035AFfC82612de31E9Db2259B9482D0Dd53B7819` - logs: - deployed @commit`bca493f` @tx`0x0a4a63715257b766ca06e7e87ee25088d557c460e50120208b31666c83fc68bc` diff --git a/packages/protocol/foundry.toml b/packages/protocol/foundry.toml index 9e3b3b0465..002ba60cfc 100644 --- a/packages/protocol/foundry.toml +++ b/packages/protocol/foundry.toml @@ -29,6 +29,7 @@ fs_permissions = [ { access = "read", path = "./out" }, { access = "read-write", path = "./deployments" }, { access = "read", path = "./test" }, + { access = "read", path = "./script/" }, { access = "read", path = "./genesis" }, ] diff --git a/packages/protocol/script/tokenunlock/Vest.s.sol b/packages/protocol/script/tokenunlock/Vest.s.sol index 4dd6d26730..c58feaaacd 100644 --- a/packages/protocol/script/tokenunlock/Vest.s.sol +++ b/packages/protocol/script/tokenunlock/Vest.s.sol @@ -11,8 +11,8 @@ contract VestTokenUnlock is Script { using stdJson for string; struct VestingItem { - address recipient; address proxy; + address recipient; uint256 vestAmount; } @@ -20,40 +20,44 @@ contract VestTokenUnlock is Script { ERC20 private tko = ERC20(0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800); function run() external { - vm.startBroadcast(); - string memory path = "/script/tokenunlock/Vest.data.json"; VestingItem[] memory items = abi.decode( vm.parseJson(vm.readFile(string.concat(vm.projectRoot(), path))), (VestingItem[]) ); + uint256 total; for (uint256 i; i < items.length; i++) { - if (items[i].vestAmount != 0) { - // This is needed due to some memory read operation! It seems forge/foundry - // parseJson works in a way that we need to read into local variables from struct, - // as it acts like a stack-like buffer read. - address proxy = items[i].proxy; - address recipient = items[i].recipient; - uint128 vestAmount = uint128(items[i].vestAmount); - console2.log("proxy. :", proxy); - console2.log("grantee:", recipient); - console2.log("vested :", vestAmount); - - require(TokenUnlock(proxy).owner() == msg.sender, "msg.sender not owner"); - require( - TokenUnlock(proxy).recipient() == items[i].recipient, "inconsistent recipient" - ); - - vestAmount = uint128(items[i].vestAmount * 1e18); - require(tko.balanceOf(msg.sender) >= vestAmount, "insufficient TKO balance"); - - tko.approve(proxy, vestAmount); - TokenUnlock(proxy).vest(vestAmount); - - console2.log("Vested!\n"); - } + address proxy = items[i].proxy; + address recipient = items[i].recipient; + uint256 vestAmount = uint256(items[i].vestAmount); + + console2.log("proxy:", proxy); + console2.log("recipient:", recipient); + console2.log("vestAmount:", vestAmount); + console2.log(""); + + TokenUnlock target = TokenUnlock(proxy); + + require(target.recipient() == recipient, "recipient mismatch"); + require(target.owner() == 0x9CBeE534B5D8a6280e01a14844Ee8aF350399C7F, "owner mismatch"); + + total += SafeCastUpgradeable.toUint128(items[i].vestAmount * 1e18); } + console2.log("total:", total / 1e18); + require(tko.balanceOf(msg.sender) >= total, "insufficient TKO balance"); + + vm.startBroadcast(); + for (uint256 i; i < items.length; i++) { + // This is needed due to some memory read operation! It seems forge/foundry + // parseJson works in a way that we need to read into local variables from struct, + // as it acts like a stack-like buffer read. + address proxy = items[i].recipient; + uint128 vestAmount = uint128(items[i].vestAmount * 1e18); + + tko.approve(proxy, vestAmount); + TokenUnlock(proxy).vest(vestAmount); + } vm.stopBroadcast(); } } diff --git a/packages/protocol/script/tokenunlock/exercise1.data.json b/packages/protocol/script/tokenunlock/exercise1.data.json new file mode 100644 index 0000000000..1f28f5ea5a --- /dev/null +++ b/packages/protocol/script/tokenunlock/exercise1.data.json @@ -0,0 +1,362 @@ +[ + { + "proxy": "0xe8373f13fb890a135965f4cd9766d60a7f5d81bc", + "recipient": "0x02E725B7e99091Bd4cCBf15228384e160eCdf78f", + "vestAmount": 1267615 + }, + { + "proxy": "0x4d4f7e608cd77ef04ce8b19e383445e69b5b47df", + "recipient": "0x034c33c7A7FC791F9cc3A1C6A739a6958885Cae3", + "vestAmount": 1543210 + }, + { + "proxy": "0x4c3a28c3bdaa5c789d1cce6a0ccbdaec2378c78f", + "recipient": "0x0C11eF582C87A45A7DE131367bba9B416DC90FfA", + "vestAmount": 2234567 + }, + { + "proxy": "0xA997C0850D7086b07E65d46B499Af91Cd24E72f2", + "recipient": "0x0D48D06DC186D5d5aab4705E9f358adFE6fFe2eD", + "vestAmount": 6666142 + }, + { + "proxy": "0x4984884eb4ca609fCd6a5aF880D47986BBd9F00e", + "recipient": "0x0f2f3F49964a0FA960dee19A749D7B44a3869865", + "vestAmount": 4945850 + }, + { + "proxy": "0x830194aEf3B5BD35077395ef788C3A8c0a5b88dc", + "recipient": "0x1109BFA2dae2281457639Dee11d86c3629cc4E7C", + "vestAmount": 953644 + }, + { + "proxy": "0x4570F9414a92AFd73CAA5bc1AEFb5DeB3a2ff31f", + "recipient": "0x1B499d378C5ca187F0295228b2077a188F6C49b0", + "vestAmount": 171043 + }, + { + "proxy": "0x9af4fca3378e94904c56263869DFAAC344Df69AE", + "recipient": "0x268d2E2bBE32B4Aeb84dECE49A8b88132e33A6c5", + "vestAmount": 1386432 + }, + { + "proxy": "0x4060aC8b1c346307a5e15ac78c2f45cb16e702A7", + "recipient": "0x2C80010717A818ae170643D4dAa556aCB994804C", + "vestAmount": 5335098 + }, + { + "proxy": "0xF1C162704CCcd51496E50c68B5cF5faE8f03251C", + "recipient": "0x3002c9B8B4cce5Bc5A5025D0403C6b187D35Fb85", + "vestAmount": 76753 + }, + { + "proxy": "0x61e8d5186633A0Df3569E5C40D13f607A70556b5", + "recipient": "0x31C3281eBC1046725e08dAbAb9a09356b895B991", + "vestAmount": 26006 + }, + { + "proxy": "0xB31Af0e8E21BE453c053F9D8d371CaaD83beE3fD", + "recipient": "0x31F8Cf2fFFC843D1e534875c02be57f424279c2d", + "vestAmount": 917576 + }, + { + "proxy": "0x856c55b5BC6838A134ce98F00dF2111330583f56", + "recipient": "0x34198aaD335426bd66d40842F4A13096d58d3B56", + "vestAmount": 99778 + }, + { + "proxy": "0xB0b3BAF6Ed01994eE8E3F2A3CEe0770A2ab27281", + "recipient": "0x36A7e5FC77Dd43896Fe2cF9E3FED985CAd8aF034", + "vestAmount": 1047274 + }, + { + "proxy": "0x0858B67aB18083d86F4020CC21f5cbdc1C68ED3e", + "recipient": "0x396AD8cD527d5C98255865e520b52aCC3B2e84Ac", + "vestAmount": 538093 + }, + { + "proxy": "0xC296544D2005b7f07e45F5Eb91765BF58F73FE00", + "recipient": "0x3F72FE6675dBf3428289019F1A28Da2D13de708e", + "vestAmount": 2701842 + }, + { + "proxy": "0x4077Ac1dc1B7DF8E941c1F2414363E375d94Aa73", + "recipient": "0x3fe67b9b757411b5C1db6E25A0B742902210F126", + "vestAmount": 2210123 + }, + { + "proxy": "0xE69F975488e789E40C84488de11516dc3EE604e6", + "recipient": "0x42cAD9922973B0aF9849562A1a7ADeBf6dc64517", + "vestAmount": 293578 + }, + { + "proxy": "0x61BCf27361e45a394612c2f761586bfdfE2a07E3", + "recipient": "0x42e7da399D2b2Acc2C238Dbd63072B28e7019A69", + "vestAmount": 106724 + }, + { + "proxy": "0x2d040D592085D4707595fcAfffd335b4df131d81", + "recipient": "0x44aa8FBfDD5315660565085888ceaA8B43127C8B", + "vestAmount": 2876543 + }, + { + "proxy": "0x26e58007D473AAc2f3a41DFBd1f5298266Fc3801", + "recipient": "0x49864Bb823F1e7bb8028F6E7A76e22190d55c184", + "vestAmount": 765113 + }, + { + "proxy": "0x8Ac9A867b1f87287860E2e7a8aBf6dE27ddE75eA", + "recipient": "0x4cad91EA77267D0f5290cA5Bd2685bE6399a1ccd", + "vestAmount": 3028273 + }, + { + "proxy": "0x41f2Ace12c2361ef6677dCbc8F469ECdb9bcfAb1", + "recipient": "0x4d00862721636071cb187c5e99dc51602947122c", + "vestAmount": 229874 + }, + { + "proxy": "0x14f02931B2290bE66AAcE3134AB5bfEc80cf67b4", + "recipient": "0x4f068DbC35Be594E28BbFb85976402dbE41e0011", + "vestAmount": 335403 + }, + { + "proxy": "0x979e17ff19e6EA3391bb7657F0f73D292Eaf9C03", + "recipient": "0x53c725A86547272C55A8fdb52DeBE2e9B19B01C0", + "vestAmount": 56839 + }, + { + "proxy": "0x6370D429554C7e25E6e82f3aFf7d61A950D245dD", + "recipient": "0x5b01475cfCb320737806E3330f206021386CB88a", + "vestAmount": 65150 + }, + { + "proxy": "0xd3F954f8888142c86f43eB3795659A387EDB7656", + "recipient": "0x5e84d2C5105e9966CF08e6D7f413730dFF3Bb862", + "vestAmount": 1453272 + }, + { + "proxy": "0x55df502EefF4E49845648207a3a8C7B46f8C2a26", + "recipient": "0x600324dfd716C08892A000A146d790A1Ca519913", + "vestAmount": 1987654 + }, + { + "proxy": "0x92692fBbB3663811B6DDdebFe747E9A142d4061d", + "recipient": "0x61bA99B686DE575d6faEB8B90202Dd27A061F1C9", + "vestAmount": 57375 + }, + { + "proxy": "0xE4d809e41BF1A5264CD690FdB23BDEbAb8bCbdAA", + "recipient": "0x62400E5c7239D4cFA285E460cc290dc55F130bb7", + "vestAmount": 85526 + }, + { + "proxy": "0x7ae5d5964ae38e5958bb47C777f618458503fA89", + "recipient": "0x6574a47d7c4bb89e144754432e929284c1b9b9ce", + "vestAmount": 69077 + }, + { + "proxy": "0xef9a873452cFE3e039512D0b71d84D1e21F5D61d", + "recipient": "0x674EDb847199a0B87b8d33ADE8636939d68f64cc", + "vestAmount": 38376 + }, + { + "proxy": "0xa96d402D43E419B86bC0EEa596322dEE7363Ce95", + "recipient": "0x69ad4c99fA216f26a797D3Dab0CC619DF8F3BA97", + "vestAmount": 352294 + }, + { + "proxy": "0x002de81024DE91903BdFdC331c2c8dc74Ec89473", + "recipient": "0x69E6Ec47A242B4f68AB3cd4B84737D2a570A90cf", + "vestAmount": 179632 + }, + { + "proxy": "0x42dE671f715138aE364B661fbA6755cB0daA5767", + "recipient": "0x6B6072CE402F22fDcFbA1705383D8e280717Cb87", + "vestAmount": 2273557 + }, + { + "proxy": "0x34f1ac3F8389A607994E9f3D4B11e35e965C3d16", + "recipient": "0x6cf7EaE611201Be43a12ceE4a4098ED0Fd61B04A", + "vestAmount": 293578 + }, + { + "proxy": "0xA0DD28a91c9247e6d292dfe8eD08e65b09301A1d", + "recipient": "0x6d4ee35D70AD6331000E370F079aD7df52E75005", + "vestAmount": 268634 + }, + { + "proxy": "0x7C846ff2df23189c6499d5A15c300C2E646E16dc", + "recipient": "0x6d76bef8d6ea81ea4cee5cae1bb4cc4452a078a4", + "vestAmount": 100814 + }, + { + "proxy": "0xBD5f35779a810d53feff393Ac148b755a7F578Ea", + "recipient": "0x7153C8ff9F93E50EEB7af9092ADA3d5fBf36d2b9", + "vestAmount": 1789432 + }, + { + "proxy": "0x4B816E63cf18CAA6496EEc851243a9F7AF85F94A", + "recipient": "0x7154a02BA6eEaB9300D056e25f3EEA3481680f87", + "vestAmount": 57564 + }, + { + "proxy": "0x0dfE829D9c4aEE47d575D2d8360cFA5470ee649C", + "recipient": "0x7177844d5322a31775a30A23545f56bAcd96b4c5", + "vestAmount": 2987654 + }, + { + "proxy": "0x0B9cc0d4f8F24E184Acd63AD41049b74E37B1336", + "recipient": "0x71e18C339795799fE56AaF3d5c9BD4dc93bE2842", + "vestAmount": 55498 + }, + { + "proxy": "0x73d773a39f1fBcDea9a507F18920C232109AD937", + "recipient": "0x72AD836ce0E262c3BD26F4ACc9F3D4Ece016467B", + "vestAmount": 952320 + }, + { + "proxy": "0x3E9B482b91BF5C8e633cCf8DdF6f502353E41401", + "recipient": "0x79B9EA7391614996D8FA6685a6f7b0cD42d20005", + "vestAmount": 1934928 + }, + { + "proxy": "0x1323833A0E7cffA19E5Ffe9627d5408e10D585C7", + "recipient": "0x81abBCCCF44B3102C0cD8159C1AB8B295849Df23", + "vestAmount": 537289 + }, + { + "proxy": "0xb89Af25B6e4Dd2dE0c7fc3cf4830bC2160C05DBe", + "recipient": "0x8271Ad10f05cE0e6386345C626F562531E993980", + "vestAmount": 2456789 + }, + { + "proxy": "0x7e00954241463fdEF08772403a24cc49746DC2C4", + "recipient": "0x84111cC3680c6E49F523931D91a66fE096e0e3F9", + "vestAmount": 338862 + }, + { + "proxy": "0xba1c1B16250345b2287A95B89714271960fE1436", + "recipient": "0x8Aca37F5E1CD1b04062D7e223E6ca12f83252010", + "vestAmount": 1315846 + }, + { + "proxy": "0x4D0C031173b97354c9A4481b3b992B853762F207", + "recipient": "0x90D6f6b7C3884989d8bC7C3A3b48c99E15064D19", + "vestAmount": 4719305 + }, + { + "proxy": "0xc1fC85dD478A151d841D7f0b5D0123c506EfF4D2", + "recipient": "0x93b7d75157B4642C13C8d597211d6eBEC4DdCA9a", + "vestAmount": 1294962 + }, + { + "proxy": "0xb4a1629794cb81733fC2e6686F5efdc158AC10dF", + "recipient": "0x97A8386BA97aAd10a721e81Db40C7a15DE9AB38d", + "vestAmount": 390097 + }, + { + "proxy": "0x558F2AFe2b503A80211A403978306D4803e0572D", + "recipient": "0x9aC84504eC5a11272e0AFf0250Dc3a0fDe38077B", + "vestAmount": 1044237 + }, + { + "proxy": "0x06Dc1A8DF03A37407461a5556FF616CcE74cCa52", + "recipient": "0x9c7A1909d8d85E3B127e722F6285AE82d42F50Fe", + "vestAmount": 2878901 + }, + { + "proxy": "0xafd91993D759e054d83C727C997915F711346b5f", + "recipient": "0xA5947589a26a6fF0940199dC6E9c1D5fBDEFEF82", + "vestAmount": 2046201 + }, + { + "proxy": "0xae262EAa17023Eb96Ca2e8dd7ac5F2Ffc2cdB39c", + "recipient": "0xAfad04eee0d3A2cc731173BD9Ab6c9C8ff7a2abe", + "vestAmount": 2360444 + }, + { + "proxy": "0xfcBaB371E7f8E78481E5aFd142904d26ef9Bb16D", + "recipient": "0xB33c01Ee9a0F9bBCa09aABef9475736Aadf87607", + "vestAmount": 3456789 + }, + { + "proxy": "0xf540Eb805E0F09F062fd2D8d4b5dc050698804C5", + "recipient": "0xbc003292cdd3E96614B21a262623b2C7670588E6", + "vestAmount": 2123456 + }, + { + "proxy": "0x9e69720b63F6A8A594E95979c765204C49f4B55e", + "recipient": "0xBe8683952A47717c1677b0eF2fCd780437d8358A", + "vestAmount": 115129 + }, + { + "proxy": "0x48C77361a550639c0232f75D258C5D0cAE0f786a", + "recipient": "0xc371426148b3Fb1FBE74eff7077C71403bEd3EbA", + "vestAmount": 1876543 + }, + { + "proxy": "0x000211eCC56999E716A414A2F7A5e70546B6bAAf", + "recipient": "0xCA3B8F422e22DCE4bAac134adb959BcdfC7E158f", + "vestAmount": 57564 + }, + { + "proxy": "0xB4764CdE7DD138e34Dc3f5D504df8CCabB6702D7", + "recipient": "0xCdd8f9696a8AD5036b3f2E818Efde8C53d69FC66", + "vestAmount": 2654321 + }, + { + "proxy": "0x0446f327325b74674D2FEdcaD7E4C96429061E19", + "recipient": "0xCE1614f1239dDE0c3D79386e89B6717A5a683bEB", + "vestAmount": 6541233 + }, + { + "proxy": "0xbb2D2930dc45541B882a6adaF7cf8b65Fa57991C", + "recipient": "0xe64f8aae6f57773eeb73d722fac8a59c620c6ed8", + "vestAmount": 171254 + }, + { + "proxy": "0xd662E7261235A031629eDa276ac3D752e762b8C1", + "recipient": "0xe7c66e440EdC9E3fb6c022224f6F5f5E0B294DEb", + "vestAmount": 1234567 + }, + { + "proxy": "0xb856E58D783b61b3EbD1f529AD2dA01560D0F1E2", + "recipient": "0xe870eFf00F9f2535b44e019f630bdF86990165de", + "vestAmount": 2345679 + }, + { + "proxy": "0x15ab53180D3996b35Ec0D7E274D2C7174e0Fb71A", + "recipient": "0xEafC539906f78dFab80F0f9934cbD44b85E0F009", + "vestAmount": 69077 + }, + { + "proxy": "0x492032F457b2Ccc7fde39c7325fda94ca590a09f", + "recipient": "0xee28eda7f55d67f691b188bb951ecde41560bab4", + "vestAmount": 293578 + }, + { + "proxy": "0x1eA405a8dbE04e6A2338473Bf2379b44391730fc", + "recipient": "0xeFD98C15B79031FE813aF21c707D344a68c8036c", + "vestAmount": 187391 + }, + { + "proxy": "0x98ef6BA6423Aaa9abD0780D21DCe4cE6872a0867", + "recipient": "0xF3c7A8AF7a807460b83f08ba96399C747707dAF8", + "vestAmount": 2134003 + }, + { + "proxy": "0xC144FCf7750426dFbad46EB7a14d5424584Ce4Fb", + "recipient": "0xf7E737Ec08e7152c32380f4FB2896B821D0542A6", + "vestAmount": 38376 + }, + { + "proxy": "0xC0F2516DC3174D9C1a5F02BEB6f9FE16e88ea2Fe", + "recipient": "0xF92b27de9ddfc9f3f8a0535fbdF2129fFcbc433b", + "vestAmount": 587157 + }, + { + "proxy": "0x67c52cda25B36fFf71A61819693BF8A4909aE436", + "recipient": "0xFa6f278dd30DDD4486cB384E236B0E17dC6D3bE6", + "vestAmount": 84722 + } +]