diff --git a/backend/app/constants.py b/backend/app/constants.py index f335993b1a..da1981b590 100644 --- a/backend/app/constants.py +++ b/backend/app/constants.py @@ -513,146 +513,146 @@ "0xbc6d82d8d6632938394905bb0217ad9c673015d1", "0xe1555c6ee61366a3f90135dc704acd25c3247aca", "0x2f51e78ff8aec6a941c4ceeeb26b4a1f03737c50", - "0x0B924785D2bBBc8834cbd5Fc63D10543ff799D4D", - "0xA50064D462e17f7091eE62BaebeB18BFEBE21507", - "0x6eAd98AC60771343A361cf7558E8493b32fC8304", - "0x433485B5951f250cEFDCbf197Cb0F60fdBE55513", - "0x6DD6934452eB4E6D87B9c874AE0EF83ec3bd5803", - "0x29e1a61fccd40408f489336993E798d14D57d77f", + "0x0b924785d2bbbc8834cbd5fc63d10543ff799d4d", + "0xa50064d462e17f7091ee62baebeb18bfebe21507", + "0x6ead98ac60771343a361cf7558e8493b32fc8304", + "0x433485b5951f250cefdcbf197cb0f60fdbe55513", + "0x6dd6934452eb4e6d87b9c874ae0ef83ec3bd5803", + "0x29e1a61fccd40408f489336993e798d14d57d77f", "0xfa7448891b9a58a7f71cc2aee436690ae1bfdb68", "0x29185eb8cfd22aa719529217bfbade61677e0ad2", - "0x73bEA65145F19702DA07d8908E994A193b5855A1", - "0x140D3f60AC840571a3e08e218B823094d4715564", - "0x82Cb2305388C853eCfe9eA83a1604Acf58466659", - "0xB13A55D8512AeC4Bf7b15067d733c4C3C68F2439", + "0x73bea65145f19702da07d8908e994a193b5855a1", + "0x140d3f60ac840571a3e08e218b823094d4715564", + "0x82cb2305388c853ecfe9ea83a1604acf58466659", + "0xb13a55d8512aec4bf7b15067d733c4c3c68f2439", "0x2842decf9baeb5ec76988d1261325329848522ae", "0x5fe4326d06d901886d9a11e6a7134f5c9707f0ad", "0xa8f0048a0d1a04663ca5010d0beac5bcaeea0eef", "0x6d465d2081b799770d0ce7e755d8db1665903ffb", "0x837667c7c5cb49609ed5bfa5d3b2f1bbae81d8ba", - "0x77fb4fa1ABA92576942aD34BC47834059b84e693", - "0xF31263051C09BCC2853DaC78185E1e5C59f4Ee56", + "0x77fb4fa1aba92576942ad34bc47834059b84e693", + "0xf31263051c09bcc2853dac78185e1e5c59f4ee56", "0x3fad8bcd2aea732d02a203c156b19205253f2a06", - "0x09b43A8FDADDDADE8e75c18A20a6FC0DBe4A1F68", - "0x7e475A846aF78e49Aa56f05706530bc5EBe58Ea8", - "0x84e1056eD1B76fB03b43e924EF98833dBA394b2B", - "0xd0cCFeEF904cCE8e0C70014dB37e5133a6A8AA1c", - "0x5c7291e18c3ecF30E14CCf1DCD646c0CA3309113", - "0x2DbFD11c5073095670e0eec58E8D2313FaC9e494", - "0xFd37f4625CA5816157D55a5b3F7Dd8DD5F8a0C2F", - "0x2D4ac9c27ffFCd87D7fA2619F537C7Eb0db96fb7", - "0x9E6cdAfF95f4Bb1A21Ce2f81F7655E2aaC53840a", + "0x09b43a8fdadddade8e75c18a20a6fc0dbe4a1f68", + "0x7e475a846af78e49aa56f05706530bc5ebe58ea8", + "0x84e1056ed1b76fb03b43e924ef98833dba394b2b", + "0xd0ccfeef904cce8e0c70014db37e5133a6a8aa1c", + "0x5c7291e18c3ecf30e14ccf1dcd646c0ca3309113", + "0x2dbfd11c5073095670e0eec58e8d2313fac9e494", + "0xfd37f4625ca5816157d55a5b3f7dd8dd5f8a0c2f", + "0x2d4ac9c27fffcd87d7fa2619f537c7eb0db96fb7", + "0x9e6cdaff95f4bb1a21ce2f81f7655e2aac53840a", "0x9dcba70b2dfe5807e2a847e065ebb666791f8b8a", "0xff6d6a7718a234a84f740480dbb07f6c09cf1cd5", - "0x69DC230B06A15796e3f42bAF706e0e55d4D5eAA1", - "0x535b3FC92C40823B5b28DF471491F6b5dD5fc4e8", - "0x2d122fEF1613e82C0C90f443b59E54468e16525C", - "0x5FF677061159e4D0Ae380607c2572e7a0E4f0d75", - "0x865528d9897D990cFFCA5Fd1c90f0Cab919C9794", - "0x6bd6109FB3Bf59F67c86caB3bC09adB8B77485B7", - "0x6C05Ecd97C3a2B1e15F832093Aa15EFB7e9924fb", - "0x867ADFEbEe5dc35C8353cd1475a9ba92F819c10B", - "0x9F4fBbBcBE8b8e90449DEC9032bD5cCE65Bb52e5", - "0xF449Ae59575B9f2d276a532dA9e835ECD1d33a42", - "0x1b13d62DE363E964CE8a9981F58dD293c005E2b4", - "0x2C053707F844bDD9167D20a385641f5D55b42A70", - "0x6BA54cf6b626F1108A2f6c16767f8397060022C0", - "0xE02E99B7C9094a04c5571C07320b9fCF85a5e4C4", - "0xE040fbFf9D04Bd20a0c76fe44B046D170348e2e8", - "0xDEDA35DfaF6e2b26d6Fb9c92037BD86f9ED3Bf21", - "0x72578e136E72A18A832be6762230a820f514d180", - "0x591a406cfA71bb26935ED8A644D108f0cC3D94b4", - "0x3A37Cc1096865987546D237f42E18737aCDeB2c8", - "0xbecb225eD2f25c5973F5B2C8455Aef2491177EE5", - "0x899EB407E36965D58F300E1435e262281909f7bE", - "0xB19cA68EeFD8378E34329d5F31b855F808820890", - "0x26CC56986A3F0F278536194b868BA88Be1C8E8CA", - "0xd67b7c3Ba9304AC3f80654B8bb95895A9D0a8eBd", - "0x0d72724bF16877bD814B8EC52b2B65A4A385D7fE", - "0xD700B177296cdbbF3D404147Fe3dac3900370a0A", - "0x13f823967682151BEE6e571aDF8363dc41274d0D", - "0x038a4e7c11193eBdF6FE574bD9eCf6989c8bEafe", - "0x5Fdce124662B8FA60f2a6852939CCc997f9d8e60", - "0x6E72DD10375C221D1Be5a71beE11cf1C7105eC7c", - "0xf1B915f886EfE71E1574DA2c0c3fcd79fAE5035b", - "0xCB0424775Ce3f6d1CD15D5622085cC7E7E47ff76", - "0xe1896D5E7547D63e79861d53A3DaCb066769Dfb1", - "0xa8e5d871De077D625CfAEA1a5D163389FA091e1b", - "0x93082bFEA9424363861AB35110Ab65b8a5dFE9dF", - "0x7A129F1b0550e6dc115DdA6428003Adf9BC7Bf90", - "0x7A122100F101E8819b23f237d62a3bB7480a6aD0", - "0x2fE31177bBbf34f9B80bE48B4dc56b1eB88192AD", - "0x707E2302149294584f570d53C666d3008d39d24e", - "0xDC1fc1361EfC9EFEF65Ff81FF3AcaDd421A577E1", - "0xa85De57d5F22560E7C98012bfB8604aF20F35933", - "0xB76Bc3aD9c150CC6F83984d02AB8e42225E4D0C2", - "0x98f1BdA2d45ffacA73fCF2154E9E007871e14934", - "0x90D3c980149CCBD039292CEEE75B3186DA05c998", - "0xAFE2b51592b89095A4cFb18da2B5914b528f4c01", - "0xB335D18843137b21DB0C9EBc23e7ED9F0D33f14D", - "0x38a02b64Ccd5b157062CD2Bad9eCd7F85D0b8480", - "0x61c4a9107de33e75ED6FE29550Ae2cc29cEd2264", - "0x20E903Db0A973f6D400e227d7fb7708d45fd5577", - "0x25A411f95aD3b558a783f6730e7C7d8E297b0fEE", - "0x1c0AcCc24e1549125b5b3c14D999D3a496Afbdb1", - "0x282d656A9d95c64522F6Bc1a42EE759DE81e8dc0", - "0x57aF2c4249761f4B266dbd80fE44061fAf4780C3", - "0x2387C1D431AFC94600B1D7262AD90EB61A25A6E8", + "0x69dc230b06a15796e3f42baf706e0e55d4d5eaa1", + "0x535b3fc92c40823b5b28df471491f6b5dd5fc4e8", + "0x2d122fef1613e82c0c90f443b59e54468e16525c", + "0x5ff677061159e4d0ae380607c2572e7a0e4f0d75", + "0x865528d9897d990cffca5fd1c90f0cab919c9794", + "0x6bd6109fb3bf59f67c86cab3bc09adb8b77485b7", + "0x6c05ecd97c3a2b1e15f832093aa15efb7e9924fb", + "0x867adfebee5dc35c8353cd1475a9ba92f819c10b", + "0x9f4fbbbcbe8b8e90449dec9032bd5cce65bb52e5", + "0xf449ae59575b9f2d276a532da9e835ecd1d33a42", + "0x1b13d62de363e964ce8a9981f58dd293c005e2b4", + "0x2c053707f844bdd9167d20a385641f5d55b42a70", + "0x6ba54cf6b626f1108a2f6c16767f8397060022c0", + "0xe02e99b7c9094a04c5571c07320b9fcf85a5e4c4", + "0xe040fbff9d04bd20a0c76fe44b046d170348e2e8", + "0xdeda35dfaf6e2b26d6fb9c92037bd86f9ed3bf21", + "0x72578e136e72a18a832be6762230a820f514d180", + "0x591a406cfa71bb26935ed8a644d108f0cc3d94b4", + "0x3a37cc1096865987546d237f42e18737acdeb2c8", + "0xbecb225ed2f25c5973f5b2c8455aef2491177ee5", + "0x899eb407e36965d58f300e1435e262281909f7be", + "0xb19ca68eefd8378e34329d5f31b855f808820890", + "0x26cc56986a3f0f278536194b868ba88be1c8e8ca", + "0xd67b7c3ba9304ac3f80654b8bb95895a9d0a8ebd", + "0x0d72724bf16877bd814b8ec52b2b65a4a385d7fe", + "0xd700b177296cdbbf3d404147fe3dac3900370a0a", + "0x13f823967682151bee6e571adf8363dc41274d0d", + "0x038a4e7c11193ebdf6fe574bd9ecf6989c8beafe", + "0x5fdce124662b8fa60f2a6852939ccc997f9d8e60", + "0x6e72dd10375c221d1be5a71bee11cf1c7105ec7c", + "0xf1b915f886efe71e1574da2c0c3fcd79fae5035b", + "0xcb0424775ce3f6d1cd15d5622085cc7e7e47ff76", + "0xe1896d5e7547d63e79861d53a3dacb066769dfb1", + "0xa8e5d871de077d625cfaea1a5d163389fa091e1b", + "0x93082bfea9424363861ab35110ab65b8a5dfe9df", + "0x7a129f1b0550e6dc115dda6428003adf9bc7bf90", + "0x7a122100f101e8819b23f237d62a3bb7480a6ad0", + "0x2fe31177bbbf34f9b80be48b4dc56b1eb88192ad", + "0x707e2302149294584f570d53c666d3008d39d24e", + "0xdc1fc1361efc9efef65ff81ff3acadd421a577e1", + "0xa85de57d5f22560e7c98012bfb8604af20f35933", + "0xb76bc3ad9c150cc6f83984d02ab8e42225e4d0c2", + "0x98f1bda2d45ffaca73fcf2154e9e007871e14934", + "0x90d3c980149ccbd039292ceee75b3186da05c998", + "0xafe2b51592b89095a4cfb18da2b5914b528f4c01", + "0xb335d18843137b21db0c9ebc23e7ed9f0d33f14d", + "0x38a02b64ccd5b157062cd2bad9ecd7f85d0b8480", + "0x61c4a9107de33e75ed6fe29550ae2cc29ced2264", + "0x20e903db0a973f6d400e227d7fb7708d45fd5577", + "0x25a411f95ad3b558a783f6730e7c7d8e297b0fee", + "0x1c0accc24e1549125b5b3c14d999d3a496afbdb1", + "0x282d656a9d95c64522f6bc1a42ee759de81e8dc0", + "0x57af2c4249761f4b266dbd80fe44061faf4780c3", + "0x2387c1d431afc94600b1d7262ad90eb61a25a6e8", "0xb9479331df573d6bca8b924f48e8cacb84664ce7", - "0xF04aEBaa5c9e6ab7f2Ae303f76504E00e7ed43cF", + "0xf04aebaa5c9e6ab7f2ae303f76504e00e7ed43cf", "0x2937d75b326bae98fd823f3e5e4ea01fe9de37e3", - "0x0276DeCe5594A6dB72E044C85488519a18f9E462", - "0x6710287cee1A9d1a00251fdC9A12795EC7a86189", - "0x9AE8912ea6562957043c8d048641Aa9B450c397f", - "0x300da191248a500b2174aeD992d6697BF97F9139", - "0x2d240C5d58A8445E99dADF3Fd41A492dFeAF7E4C", - "0x42E0793E4F029557D4C16a05Ae0D989A173eC6aA", - "0x18b54C6c9960BD16b1f7568Ae9F39143C2d3390c", - "0x3BfB159C76833Bc019E7c93708f26f318aD61504", - "0x2a87C1345024ab463ACC26417124C433b3069fdD", - "0xd8b41B798A7CE8d30cbC87F007eCb95E1D3C876C", - "0xA831D11C0c280B118C5f44B192A327cf64D9eE91", - "0xa13ac077544Dfd51193f8b15641A0C7a3E0286b7", - "0x93E4297ea2b1368274eF91aaBB900dEbFD915D7e", - "0x0BF61023640B5fFa269EBaBa895cc3662793A4c9", - "0x3e6c23CdAa52B1B6621dBb30c367d16ace21F760", - "0xe5adabBD71225E8074E30ff6cE2a66c9319C071b", - "0xd11256d99f8833beE0B99203DDcfe4cd6c823d8D", - "0x7f96a6269B00c56cdC319721be80bf8C290324a5", - "0xD1Da06878d2817A358498C384418417A752Dfa68", - "0x072001B736B049934eb1e66bcBBc281d010Fe7b6", - "0x8d4C0ebB98b259f40f783924A78c1b1affde200e", - "0xEe549CC0a0Ab1AEEa4bB326A1DE9fD1684dD83b6", - "0x4D5B28d08e8c00e041053b0dc584e00e6997Daa3", - "0x72337D25034d5a27fC10DcE0C893FD29C1301D5b", - "0x65C20b3E50Fc7575FDEa5a76F99a2c4140155531", - "0x58F7ff14700A754a652B3E6F5Edcb51e617C4e86", - "0xf40ccA17034fa8A698bC5fA7E7a5Caf0B298452f", - "0xbe4Cf8E9d23Cd50cDc3D56e6d6Fcb75BFbBD2F67", - "0xAcD59e854adf632d2322404198624F757C868C97", - "0x9CED5f42F2f8fEC2eddC7fBb360eE17ffd6bdc21", - "0x1E8c64Fd8F94da1d0E23853118B7F73a7B467209", - "0x00A66045CCC58a3e79999D6DE0f49809c577Ed3c", - "0x2aa64E6d80390F5C017F0313cB908051BE2FD35e", - "0x3f649DbFAFBE454940B8a82c5058b8d176dD3871", - "0xfe6Afe37c8563c653Bacd30924d2251eA5bB9740", - "0xB2206f941A5206B55BFA33E665687523A8bcEd80", - "0x5B0FfbE6218a68208EE61Bbc1282c2637F0BcA16", - "0xf11704511975cC5908f6dBd89Be922f5C86c1055", - "0xF9903c5d11E8f4bFebcf02747D53319E9c4a10c6", + "0x0276dece5594a6db72e044c85488519a18f9e462", + "0x6710287cee1a9d1a00251fdc9a12795ec7a86189", + "0x9ae8912ea6562957043c8d048641aa9b450c397f", + "0x300da191248a500b2174aed992d6697bf97f9139", + "0x2d240c5d58a8445e99dadf3fd41a492dfeaf7e4c", + "0x42e0793e4f029557d4c16a05ae0d989a173ec6aa", + "0x18b54c6c9960bd16b1f7568ae9f39143c2d3390c", + "0x3bfb159c76833bc019e7c93708f26f318ad61504", + "0x2a87c1345024ab463acc26417124c433b3069fdd", + "0xd8b41b798a7ce8d30cbc87f007ecb95e1d3c876c", + "0xa831d11c0c280b118c5f44b192a327cf64d9ee91", + "0xa13ac077544dfd51193f8b15641a0c7a3e0286b7", + "0x93e4297ea2b1368274ef91aabb900debfd915d7e", + "0x0bf61023640b5ffa269ebaba895cc3662793a4c9", + "0x3e6c23cdaa52b1b6621dbb30c367d16ace21f760", + "0xe5adabbd71225e8074e30ff6ce2a66c9319c071b", + "0xd11256d99f8833bee0b99203ddcfe4cd6c823d8d", + "0x7f96a6269b00c56cdc319721be80bf8c290324a5", + "0xd1da06878d2817a358498c384418417a752dfa68", + "0x072001b736b049934eb1e66bcbbc281d010fe7b6", + "0x8d4c0ebb98b259f40f783924a78c1b1affde200e", + "0xee549cc0a0ab1aeea4bb326a1de9fd1684dd83b6", + "0x4d5b28d08e8c00e041053b0dc584e00e6997daa3", + "0x72337d25034d5a27fc10dce0c893fd29c1301d5b", + "0x65c20b3e50fc7575fdea5a76f99a2c4140155531", + "0x58f7ff14700a754a652b3e6f5edcb51e617c4e86", + "0xf40cca17034fa8a698bc5fa7e7a5caf0b298452f", + "0xbe4cf8e9d23cd50cdc3d56e6d6fcb75bfbbd2f67", + "0xacd59e854adf632d2322404198624f757c868c97", + "0x9ced5f42f2f8fec2eddc7fbb360ee17ffd6bdc21", + "0x1e8c64fd8f94da1d0e23853118b7f73a7b467209", + "0x00a66045ccc58a3e79999d6de0f49809c577ed3c", + "0x2aa64e6d80390f5c017f0313cb908051be2fd35e", + "0x3f649dbfafbe454940b8a82c5058b8d176dd3871", + "0xfe6afe37c8563c653bacd30924d2251ea5bb9740", + "0xb2206f941a5206b55bfa33e665687523a8bced80", + "0x5b0ffbe6218a68208ee61bbc1282c2637f0bca16", + "0xf11704511975cc5908f6dbd89be922f5c86c1055", + "0xf9903c5d11e8f4bfebcf02747d53319e9c4a10c6", "0xc8d92326bd4dd3bb1d4eae8355fca6833d64ea80", "0xfbd39c29dbbbe1f3e563e2a8233262c29040efef", "0xd74e6428cb1c29cd6ef8ce4da4932f47e88a0946", - "0x5bB73e04b810527B14b87c37EFf3d62481f2D416", - "0xbd56EFc637f8Cb7133e304b3f929dF9A6fa35468", - "0x488abaA18B5Af3f24E9d69ca0Eb3D6fD6aE4fBf1", - "0xAca2F322d69E07993E073C8730180FB139cA4446", - "0x778549Eb292AC98A96a05E122967f22eFA003707", - "0xcb77E0C9ca70C750fbe49C44F094E1F2Dd4f599c", - "0x74d5C70117E9Ea382B199C140ee0f05fBf9Defd0", - "0x99272DB5353e13c18b711D99d3a8F36ba459f747", - "0x3566F9562d1bC28DF6c5dc744AB40Ef11C56e4a5", - "0xef8dF6d246CC9802eBf5AFd55e77Df152497FD7f", + "0x5bb73e04b810527b14b87c37eff3d62481f2d416", + "0xbd56efc637f8cb7133e304b3f929df9a6fa35468", + "0x488abaa18b5af3f24e9d69ca0eb3d6fd6ae4fbf1", + "0xaca2f322d69e07993e073c8730180fb139ca4446", + "0x778549eb292ac98a96a05e122967f22efa003707", + "0xcb77e0c9ca70c750fbe49c44f094e1f2dd4f599c", + "0x74d5c70117e9ea382b199c140ee0f05fbf9defd0", + "0x99272db5353e13c18b711d99d3a8f36ba459f747", + "0x3566f9562d1bc28df6c5dc744ab40ef11c56e4a5", + "0xef8df6d246cc9802ebf5afd55e77df152497fd7f", "0x64bf8d9a93a5642ca93d98b5db88b2cc953c8426", "0x5a6a84fb9063af1d83d0ac4809697a40715a1530", "0xa9a3266f73d629c19189f461ac8ca42801b2288c", @@ -680,7 +680,7 @@ "0xcee0feb4b08bad3e86bdc3f01a5cdd9e7ca72427", "0x2619c03753bbfebfe2a5b4b3b7ca6d1a042af9ce", "0x8b580433568e521ad351b92b98150c0c65ce69b7", - "0x28d604a4205549Ea2510d03f2aDDc673DEd2187f", + "0x28d604a4205549ea2510d03f2addc673ded2187f", "0xf60581c6dba9a2bd660b7a83f73705a5788158b6", "0x1ee8e6a0e949ecab1f66636601d6f36488f16b78", "0xc34d7c4ddeafb22f22a482a71676e00edc58790a", @@ -690,39 +690,39 @@ "0x255f7d91b2dddabbe044c64840460a1b7285ad5f", "0xb3bcaee28ecd97745737e756cf1bafed9dbca88d", "0xe5caf4d7cbc6b80ae5fd072ab17aa4e91a5dd495", - "0xcc3cB5C01a3Cdcd5Eb8ebF87E2eC088147BADA8A", - "0xFa2199D17b5FAe567bf82A0806921a20ddFFe8d8", - "0x8B577d9f981da6fC6e33DE495A1465ee302f67a5", - "0x8f791F061d7f36dc07De081ad88F87d71be1585E", - "0x7A749c38f16388085E3e2356D7A074f18117d780", - "0xD2BC5cb641aE6f7A880c3dD5Aee0450b5210BE23", - "0xc163041D404e7657530491577665E40Da84C9Bd7", - "0x1375847014BA64517210cBFE185808232Cf45d4a", - "0x8f51DC0791CdDDDCE08052FfF939eb7cf0c17856", - "0x9F75582d2bE13b5EE454161EE394daadA8B39efa", - "0x302E2A0D4291ac14Aa1160504cA45A0A1F2E7a5c", - "0x11d86e90ABA195cA20905ab2d3745eD9faad5a2d", - "0x4461EaBEC259e164aD5DA873d5Fc4c0E1fe8e6b5", - "0xcbd4D0241481b49158077e8833AfdCAeC7d9d804", - "0xdfBecC0b4aEF80b96Da27aB483feb0892472eaC2", - "0x6c19C7ee70A280693199ffd79daa7d114bbFA898", - "0xE73a198e7C07c418D7dcFd42f5E953074aBbD125", - "0x7d03C5c37f77Fd01211334B9115CA108C84E8f3B", - "0xbaD8bcc9Eb5749829cF12189fDD5c1230D6C85e8", - "0x76A6D08b82034b397E7e09dAe4377C18F132BbB8", - "0xD0BFb40F057322FF734a75CBE2F79b9E5C7E4cB3", - "0xE04885c3f1419C6E8495C33bDCf5F8387cd88846", - "0x87690be28b65F13394741C2C2BE5A6bdb0505039", - "0xd26a3F686D43f2A62BA9eaE2ff77e9f516d945B9", - "0xBC5b552641e5d203f0a6C230aA9dC14DA7450053", - "0xca3589b6DC6B6aE9DA653B82B5Cf1dD2806DB087", - "0xf4c6A5df9050b15A21aABccbC84cCB31fBdc0846", - "0xd6b97e042d03EdBDc100Eb55fbE43Eb75f2e3036", - "0x2c8467DA8B7B3D0a7e3886F6Cb6697c49571Ff66", - "0xD9BB77e8a0095Ba2b3C5649d21ea91221e010ABC", - "0xd662fA474C0A1346a26374bb4581D1F6D3Fb2d94", - "0xd714Dd60e22BbB1cbAFD0e40dE5Cfa7bBDD3F3C8", - "0x1dF428833f2C9FB1eF098754e5D710432450d706", + "0xcc3cb5c01a3cdcd5eb8ebf87e2ec088147bada8a", + "0xfa2199d17b5fae567bf82a0806921a20ddffe8d8", + "0x8b577d9f981da6fc6e33de495a1465ee302f67a5", + "0x8f791f061d7f36dc07de081ad88f87d71be1585e", + "0x7a749c38f16388085e3e2356d7a074f18117d780", + "0xd2bc5cb641ae6f7a880c3dd5aee0450b5210be23", + "0xc163041d404e7657530491577665e40da84c9bd7", + "0x1375847014ba64517210cbfe185808232cf45d4a", + "0x8f51dc0791cddddce08052fff939eb7cf0c17856", + "0x9f75582d2be13b5ee454161ee394daada8b39efa", + "0x302e2a0d4291ac14aa1160504ca45a0a1f2e7a5c", + "0x11d86e90aba195ca20905ab2d3745ed9faad5a2d", + "0x4461eabec259e164ad5da873d5fc4c0e1fe8e6b5", + "0xcbd4d0241481b49158077e8833afdcaec7d9d804", + "0xdfbecc0b4aef80b96da27ab483feb0892472eac2", + "0x6c19c7ee70a280693199ffd79daa7d114bbfa898", + "0xe73a198e7c07c418d7dcfd42f5e953074abbd125", + "0x7d03c5c37f77fd01211334b9115ca108c84e8f3b", + "0xbad8bcc9eb5749829cf12189fdd5c1230d6c85e8", + "0x76a6d08b82034b397e7e09dae4377c18f132bbb8", + "0xd0bfb40f057322ff734a75cbe2f79b9e5c7e4cb3", + "0xe04885c3f1419c6e8495c33bdcf5f8387cd88846", + "0x87690be28b65f13394741c2c2be5a6bdb0505039", + "0xd26a3f686d43f2a62ba9eae2ff77e9f516d945b9", + "0xbc5b552641e5d203f0a6c230aa9dc14da7450053", + "0xca3589b6dc6b6ae9da653b82b5cf1dd2806db087", + "0xf4c6a5df9050b15a21aabccbc84ccb31fbdc0846", + "0xd6b97e042d03edbdc100eb55fbe43eb75f2e3036", + "0x2c8467da8b7b3d0a7e3886f6cb6697c49571ff66", + "0xd9bb77e8a0095ba2b3c5649d21ea91221e010abc", + "0xd662fa474c0a1346a26374bb4581d1f6d3fb2d94", + "0xd714dd60e22bbb1cbafd0e40de5cfa7bbdd3f3c8", + "0x1df428833f2c9fb1ef098754e5d710432450d706", "0xcf61ebd3613684a53e48ee85d8fbc80c5156c479", "0x67243d6c3c3bdc2f59d2f74ba1949a02973a529d", "0x03f11c7a45ba8219c87f312eecb07287c2095302", @@ -739,8 +739,8 @@ "0x7136fbddd4dffa2369a9283b6e90a040318011ca", "0xe4b420f15d6d878dcd0df7120ac0fc1509ee9cab", "0x843a3c4ed93fb1f1335d5d174745551468106715", - "0x4286d9dA0d8085b8a7A34FA49A87b900845cC2f8", - "0x84674aA65cc7734f12b690cE46aeC1027B434211", + "0x4286d9da0d8085b8a7a34fa49a87b900845cc2f8", + "0x84674aa65cc7734f12b690ce46aec1027b434211", "0xd705eab54190c7943115607f2b7573e115a413a0", "0x644b63e356291d549ceae65c8be6fe2f9ad7dcd6", "0xaa163c47065c22d17ed1c47e3e244337d2056c17", @@ -774,91 +774,91 @@ "0x595c51223860baf322837269d69dc76016c6eb1d", "0xb067c8705d9b59fcc73b3abd11d3aed36172aee3", "0xdd31db93082a3a71b98d37ba26230f8734bd63c3", - "0x0ea26051F7657d59418da186137141CeA90D0652", - "0xA906c85B7e809b79c5e69d485693B44d65B1B252", - "0x22300aaDF0CCe33a4b993e5d2A1bb24409BAb8e1", - "0xc2fB4B3EA53E10c88D193E709A81C4dc7aEC902e", - "0x86213f1cf0a501857B70Df35c1cb3C2EcF112844", - "0x7899d9b1181cbB427b0b1BE0684C096C260F7474", - "0x6AB7B4550698Fe1aF0c7Cd9C1ED69Eb383c48257", - "0xA31895c358D899030A1eB78FeAAdF28C8000CF47", - "0x03D8Ac6B92AAc24549EB583b969d93bC49F9dDB3", - "0x6718C0b9061159823440Abf4635707B2ed8E5CA8", - "0xc78A95019C52aD9856aA764D6908E88D5b7930eE", - "0x2b88fD6240E0ce71e3048B612088e76Ab8D7d634", - "0xc8b0D32bc09Fb11C12C82582825C1e6b624822b8", - "0xb749A586080436e616f097f193Ba9CB6A25E7Ea6", - "0xF3Ad97364bcCC3eA0582Ede58C363888f8C4ec85", - "0x63C3329720B993DEC8aF0018FB083dcBa94E49e5", - "0x99C9bC20D9F57a0c19136E10987fB234abdF3A5C", - "0x7986DEBCbc2709435461CBe6E0D73f62c19bFa95", - "0x5833869fdEB4D371b854D7474F5F84B43320FD05", - "0x01242A2e4F27b42D564D3668a58d98BaA751b3cE", - "0x986e92868A27548a31e88f7692E746CD7E86f39a", - "0xAeb99a255C3A243Ab3e4F654041e9BF5340cF313", - "0x8270a0FEBBA70899419E76A98bF2B5DC15Fe2Ff4", - "0x0d0c0941e2578da2b9E2Ad03619615f7EeBc48f7", - "0x7C1e9430655963129A0b6eDECd8398C06429209f", - "0x48E206Fd64DDbb9714Be058Ca6Ea6f1479515624", - "0xe7a8DeA3c2521a883D01E1B714b4480e64322462", - "0x8Bb2884ee943111AA5119a36b30085a15a66c972", - "0x2399a1758aFd2e061134B78aD1965e4204DBc0b8", - "0x4059f3c0064cd380276DE8dbAb6935005535EeD6", - "0x7DF96B926f4e321a2358Bb8D9EcaBa88FE7Ff9d5", - "0x9ecA7b82E857e92b05b6C7D904E5A26B4B020687", - "0xFE324b463Ba927aF7d08c34fD4aBBD267b133EF0", - "0x21fA7f8238A84565dAFc7681edA644009Ca15AE7", - "0x092cfF73c77a9de794D25b0088DeD0e430733dbb", - "0x0a10998913B2e1786b7d0E376611781B28387Cc4", - "0xd388aa414E0788F5d27fb8f2CC3F1dADD7B3b507", - "0x3bb9eF68c0e8a291f7730bB6dA37ad682331F380", - "0xD164572B07a7a022FAcD4b0a63A72C9280Ad78e2", - "0x63c3774531EF83631111Fe2Cf01520Fb3F5A68F7", - "0x51f956B281b282fcEb2635f295200157a22B920b", - "0x5C05740dF496ddC881642566C431B88bdf60842e", - "0x09988E9AEb8c0B835619305Abfe2cE68FEa17722", - "0x54BeCc7560a7Be76d72ED76a1f5fee6C5a2A7Ab6", - "0x92Ed343aF03bAE63a7AC938EdF570084A3392742", - "0x775aF9b7c214Fe8792aB5f5da61a8708591d517E", - "0xB170A41F2523220A12F84f17A54bD31953D98027", - "0x461acd846B4cc249b96242F1AB7c72a39d94747c", - "0xfC9265A28f66CF4561D74A4E25D7Bbd3F482B8e6", - "0x3a2FaC2AB3cf4bc342910EAC744CC68C8b9a69bf", - "0xC6e70206e0Ab82D82933339B820feB124eC7Ec5C", - "0x924657b110248cC5456562232351C49F795914c9", - "0x7Bc48221928F11184b376dA7A57650768DFd3332", - "0x23C0C5e0D894d006E4fE4520B6c3d91b7F9EF7Ab", + "0x0ea26051f7657d59418da186137141cea90d0652", + "0xa906c85b7e809b79c5e69d485693b44d65b1b252", + "0x22300aadf0cce33a4b993e5d2a1bb24409bab8e1", + "0xc2fb4b3ea53e10c88d193e709a81c4dc7aec902e", + "0x86213f1cf0a501857b70df35c1cb3c2ecf112844", + "0x7899d9b1181cbb427b0b1be0684c096c260f7474", + "0x6ab7b4550698fe1af0c7cd9c1ed69eb383c48257", + "0xa31895c358d899030a1eb78feaadf28c8000cf47", + "0x03d8ac6b92aac24549eb583b969d93bc49f9ddb3", + "0x6718c0b9061159823440abf4635707b2ed8e5ca8", + "0xc78a95019c52ad9856aa764d6908e88d5b7930ee", + "0x2b88fd6240e0ce71e3048b612088e76ab8d7d634", + "0xc8b0d32bc09fb11c12c82582825c1e6b624822b8", + "0xb749a586080436e616f097f193ba9cb6a25e7ea6", + "0xf3ad97364bccc3ea0582ede58c363888f8c4ec85", + "0x63c3329720b993dec8af0018fb083dcba94e49e5", + "0x99c9bc20d9f57a0c19136e10987fb234abdf3a5c", + "0x7986debcbc2709435461cbe6e0d73f62c19bfa95", + "0x5833869fdeb4d371b854d7474f5f84b43320fd05", + "0x01242a2e4f27b42d564d3668a58d98baa751b3ce", + "0x986e92868a27548a31e88f7692e746cd7e86f39a", + "0xaeb99a255c3a243ab3e4f654041e9bf5340cf313", + "0x8270a0febba70899419e76a98bf2b5dc15fe2ff4", + "0x0d0c0941e2578da2b9e2ad03619615f7eebc48f7", + "0x7c1e9430655963129a0b6edecd8398c06429209f", + "0x48e206fd64ddbb9714be058ca6ea6f1479515624", + "0xe7a8dea3c2521a883d01e1b714b4480e64322462", + "0x8bb2884ee943111aa5119a36b30085a15a66c972", + "0x2399a1758afd2e061134b78ad1965e4204dbc0b8", + "0x4059f3c0064cd380276de8dbab6935005535eed6", + "0x7df96b926f4e321a2358bb8d9ecaba88fe7ff9d5", + "0x9eca7b82e857e92b05b6c7d904e5a26b4b020687", + "0xfe324b463ba927af7d08c34fd4abbd267b133ef0", + "0x21fa7f8238a84565dafc7681eda644009ca15ae7", + "0x092cff73c77a9de794d25b0088ded0e430733dbb", + "0x0a10998913b2e1786b7d0e376611781b28387cc4", + "0xd388aa414e0788f5d27fb8f2cc3f1dadd7b3b507", + "0x3bb9ef68c0e8a291f7730bb6da37ad682331f380", + "0xd164572b07a7a022facd4b0a63a72c9280ad78e2", + "0x63c3774531ef83631111fe2cf01520fb3f5a68f7", + "0x51f956b281b282fceb2635f295200157a22b920b", + "0x5c05740df496ddc881642566c431b88bdf60842e", + "0x09988e9aeb8c0b835619305abfe2ce68fea17722", + "0x54becc7560a7be76d72ed76a1f5fee6c5a2a7ab6", + "0x92ed343af03bae63a7ac938edf570084a3392742", + "0x775af9b7c214fe8792ab5f5da61a8708591d517e", + "0xb170a41f2523220a12f84f17a54bd31953d98027", + "0x461acd846b4cc249b96242f1ab7c72a39d94747c", + "0xfc9265a28f66cf4561d74a4e25d7bbd3f482b8e6", + "0x3a2fac2ab3cf4bc342910eac744cc68c8b9a69bf", + "0xc6e70206e0ab82d82933339b820feb124ec7ec5c", + "0x924657b110248cc5456562232351c49f795914c9", + "0x7bc48221928f11184b376da7a57650768dfd3332", + "0x23c0c5e0d894d006e4fe4520b6c3d91b7f9ef7ab", "0x1e90474d2e83e7b7dd45553156beb316845e66a4", "0x9f000bfb33b0b63fce685b538b1a8af079b57d93", - "0x99e94142353411264731105Fe38Ff02dfe1f3c3A", + "0x99e94142353411264731105fe38ff02dfe1f3c3a", "0xb22981ba3fe1de2325935c91a3b717168fb86714", "0xa61ed6d962af39adda5c405ce76f625b5c3f81dd", - "0x19D8da2674E8A025154153297ea3AB918DebF96d", - "0x5CC2eC9378e4fD3e5B91a6FA338EDcC8edd36FF8", - "0xBD4D5116D4795FD6F785F524c4dC9F28BC5Ab308", - "0x44571D865D879bA75d8eaBb4a08c01Cc3Fc36D3F", - "0xca85460d23Bfb2e0079bAb5AAC84921D9D0762a4", - "0xFA9b7D81a8fCeBE6e0cE2938963DB2cCd3cD178f", - "0x41B0B75802B25FbC14E0157F9341473843c28e1e", - "0xacdBb883880850B7528eDc58ce506d10Fa5205C6", - "0xde0e98F0Ffb36Ec69DF57B8cC7Ac886f506E9AE6", - "0x4Ef22A7356D96dbf95a7FdEaD4a196A668e75B38", - "0x7D2e4D645c0Acc5A6Bf596B612caB351864f4090", + "0x19d8da2674e8a025154153297ea3ab918debf96d", + "0x5cc2ec9378e4fd3e5b91a6fa338edcc8edd36ff8", + "0xbd4d5116d4795fd6f785f524c4dc9f28bc5ab308", + "0x44571d865d879ba75d8eabb4a08c01cc3fc36d3f", + "0xca85460d23bfb2e0079bab5aac84921d9d0762a4", + "0xfa9b7d81a8fcebe6e0ce2938963db2ccd3cd178f", + "0x41b0b75802b25fbc14e0157f9341473843c28e1e", + "0xacdbb883880850b7528edc58ce506d10fa5205c6", + "0xde0e98f0ffb36ec69df57b8cc7ac886f506e9ae6", + "0x4ef22a7356d96dbf95a7fdead4a196a668e75b38", + "0x7d2e4d645c0acc5a6bf596b612cab351864f4090", "0xa64f2228ccec96076c82abb903021c33859082f8", "0xbaba775a0400a5e442335ceaa4820edb1ded8f73", "0xd6fcd2f85fe975bb9b0f3c1b1c6802bb09d33e43", - "0xc583789751910E39Fd2Ddb988AD05567Bcd81334", - "0x745F933c33ab89d8f8437eaCF176A2C8c0DD63a0", - "0x222CF246A3D56D61030ca49F5e6FFd6c20c3DC4f", + "0xc583789751910e39fd2ddb988ad05567bcd81334", + "0x745f933c33ab89d8f8437eacf176a2c8c0dd63a0", + "0x222cf246a3d56d61030ca49f5e6ffd6c20c3dc4f", "0x38b826a4426a0d4d9b4377ac57c9af0308281c5d", "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429", - "0xa9d20b435A85fAAa002f32d66F7D21564130E9cf", - "0x02C6e0A15A2A9Ad274A76dFFf21a4df4e7E9A4A4", - "0xd034Fd34eaEe5eC2c413C51936109E12873f4DA5", - "0xe3F4F3aD70C1190EC480554bbc3Ed30285aE0610", - "0x1dDc50A8b8ef07c654B4ace65070B0E7acfF622B", - "0x884Ff907D5fB8BAe239B64AA8aD18bA3f8196038", - "0x2a81C13F9366395c8FD1EA24912294230d062Db3", + "0xa9d20b435a85faaa002f32d66f7d21564130e9cf", + "0x02c6e0a15a2a9ad274a76dfff21a4df4e7e9a4a4", + "0xd034fd34eaee5ec2c413c51936109e12873f4da5", + "0xe3f4f3ad70c1190ec480554bbc3ed30285ae0610", + "0x1ddc50a8b8ef07c654b4ace65070b0e7acff622b", + "0x884ff907d5fb8bae239b64aa8ad18ba3f8196038", + "0x2a81c13f9366395c8fd1ea24912294230d062db3", "0xa43821674ff3836bf8d22e25d0243278a6263612", "0x396796429a9aeb72a7584711830a550d31ab653c", "0xff9b563140952fb7e3e5552f1a5068b637f0de0a", @@ -883,11 +883,11 @@ "0x5621a7ec78d9e80e8d5afaa6e28bef9e1747139d", "0xf94495d5d91e9a4bb52f7dd7c19e1231332bf45f", "0x4986ce0eb00cade9450aaf7edb5bc33a1c83ed87", - "0x104a851a9156205D40D06d7b71E2dF252eA46d01", - "0x02D60fD1FFb28B07B4164566e0FeBf01955a9391", - "0x13da265Ca1B475D9893B60e84eF8980734a8D040", - "0xb8784a7da592C7e0190939d2d6F3C8D9Df1c69ad", - "0xb3A23E56Cb62Ff06186Afbd5f68de2BD1cd3f5b3", + "0x104a851a9156205d40d06d7b71e2df252ea46d01", + "0x02d60fd1ffb28b07b4164566e0febf01955a9391", + "0x13da265ca1b475d9893b60e84ef8980734a8d040", + "0xb8784a7da592c7e0190939d2d6f3c8d9df1c69ad", + "0xb3a23e56cb62ff06186afbd5f68de2bd1cd3f5b3", "0x9e602c1920443f01cb100a57a7f894df8eb42f66", "0x7e651f5f597436cd0fa941f5ff2cd45ef3f2fda8", "0x597dc4159a4b85c086c3c679a0b6c8fe2836886f", @@ -900,6 +900,7 @@ "0x8bfcf8cb383149d4ef37e7a609cec195cdcbe099", "0xa515f7fb260095eebc860425493b8761b4fc9abd", "0xaa95ca26c92b0634df7a1a1504f579f13bfb7f9d", + "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", } TIMEOUT_LIST = { @@ -922,15 +923,7 @@ "0xf5c2087877218aa979dd0e2e5108837199af44d2", "0x529dc928e67d8a43133d10769b308f1d5a629401", "0xf1bb436c29e46b1987bc825879ffc9c34ab97f99", - "0x826976d7c600d45fb8287ca1d7c76fc8eb732030", - "0x981e7512e87d2f7228d3f03b65950eb6a1b21bac", - "0x1d921dff757610fbdb0073479e12c0a07d382677", - "0xb6989f472bef8931e6ca882b1f875539b7d5da19", "0x839395e20bbb182fa440d08f850e6c7a8f6f0780", - "0x774c3ccfde30a5e7263e8d8ec80b3d419c13ddd3", - "0x5a1f55459c07432165a93eac188076d2ecbf6814", - "0x87f64272eb089a14dc5764b848e3488710b829ea", - "0x2f0642874d5651ba794f8e20774cf9452edc96e2", "0xc33f87697ef41e0e95e7a55d1ec8180f04088578", "0xcbc924183bc32d02746fa8d38843b5ce08662eb4", "0xdc9c5e34959ec3643af1e1d34a83d6b251aab1ef", @@ -938,10 +931,9 @@ "0x86e6b55bb954e1cfab567f9582e0fa580bb0290d", "0xfef75b27d4ae3d5228bcc2912f9cdceafe5f82e3", "0xc4f91cdd498a30f8ed1dea3883cba314a7a2a022", - "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", "0x051010142a0b9de7f0fd8fb31d085407287f6381", - "0xd1825Dd9a5e49791FB7961AC3c4170DeeD5710b4", - "0xBEa26DE685Ef828b60cA53b40Ecc9Bab35645fDF", + "0xd1825dd9a5e49791fb7961ac3c4170deed5710b4", + "0xbea26de685ef828b60ca53b40ecc9bab35645fdf", "0xa8776899d2601a59a94e3aa057af778b8647f85c", "0xe7eac2cb20079752875bc1c498ce53a5ed025ab9", "0x6e0ef43c2b5bda0e145033a4164d93f8d06d8538", diff --git a/backend/app/modules/facades/confirm_multisig.py b/backend/app/modules/facades/confirm_multisig.py index 4281ad2ce4..69905be97a 100644 --- a/backend/app/modules/facades/confirm_multisig.py +++ b/backend/app/modules/facades/confirm_multisig.py @@ -1,5 +1,7 @@ import json +from flask import current_app as app + from app.modules.multisig_signatures.controller import ( apply_pending_tos_signature, apply_pending_allocation_signature, @@ -19,19 +21,29 @@ def confirm_multisig(): approvals = approve_pending_signatures() for tos_signature in approvals.tos_signatures: - tos_controller.post_user_terms_of_service_consent( - tos_signature.user_address, - tos_signature.signature, - tos_signature.ip_address, - ) - apply_pending_tos_signature(tos_signature.id) + # We don't want to fail the whole process if one TOS fails + try: + tos_controller.post_user_terms_of_service_consent( + tos_signature.user_address, + tos_signature.signature, + tos_signature.ip_address, + ) + apply_pending_tos_signature(tos_signature.id) + + except Exception as e: + app.logger.error(f"Error confirming TOS signature: {e}") for allocation_signature in approvals.allocation_signatures: - message = json.loads(allocation_signature.message) - message["signature"] = allocation_signature.signature - allocations_controller.allocate( - allocation_signature.user_address, - message, - is_manually_edited=message.get("isManuallyEdited"), - ) - apply_pending_allocation_signature(allocation_signature.id) + # We don't want to fail the whole process if one allocation fails + try: + message = json.loads(allocation_signature.message) + message["signature"] = allocation_signature.signature + allocations_controller.allocate( + allocation_signature.user_address, + message, + is_manually_edited=message.get("isManuallyEdited"), + ) + apply_pending_allocation_signature(allocation_signature.id) + + except Exception as e: + app.logger.error(f"Error confirming allocation signature: {e}") diff --git a/backend/app/modules/user/antisybil/core.py b/backend/app/modules/user/antisybil/core.py index c81e9f7f4e..531a94e2b1 100644 --- a/backend/app/modules/user/antisybil/core.py +++ b/backend/app/modules/user/antisybil/core.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone import json from typing import Optional @@ -22,14 +23,15 @@ def determine_antisybil_score( if score is None: return None - potential_score = _apply_gtc_staking_stamp_nullification(score.score, score) + now = datetime.now(timezone.utc) + potential_score = _apply_gtc_staking_stamp_nullification(score.score, score, now) if user_address.lower() in timeout_list: return AntisybilStatusDTO( score=0.0, expires_at=score.expires_at, is_on_timeout_list=True ) elif user_address.lower() in GUEST_LIST and not _has_guest_stamp_applied_by_gp( - score + score, now ): return AntisybilStatusDTO( score=potential_score + 21.0, @@ -46,23 +48,38 @@ def _get_provider(stamp) -> str: return stamp["credential"]["credentialSubject"]["provider"] -def _has_guest_stamp_applied_by_gp(score: GPStamps) -> bool: +def _is_not_expired(stamp, now: datetime) -> bool: + expiration_date = datetime.fromisoformat(stamp["credential"]["expirationDate"]) + return expiration_date > now + + +def _has_guest_stamp_applied_by_gp(score: GPStamps, now: datetime) -> bool: all_stamps = json.loads(score.stamps) stamps = [ stamp for stamp in all_stamps if _get_provider(stamp) in GUEST_LIST_STAMP_PROVIDERS + and _is_not_expired(stamp, now) ] return len(stamps) > 0 -def _apply_gtc_staking_stamp_nullification(score: int, stamps: GPStamps) -> int: +def _apply_gtc_staking_stamp_nullification( + score: int, stamps: GPStamps, now: datetime +) -> int: """Take score and stamps as returned by Passport and remove score associated with GTC staking""" - delta = 0 all_stamps = json.loads(stamps.stamps) - providers = [_get_provider(stamp) for stamp in all_stamps] - for provider in providers: - if provider in GTC_STAKING_STAMP_PROVIDERS_AND_SCORES.keys(): - delta = delta + GTC_STAKING_STAMP_PROVIDERS_AND_SCORES[provider] + delta = 0 + + # Consider only stamps that are not expired + for stamp in all_stamps: + expiration_date = datetime.fromisoformat(stamp["credential"]["expirationDate"]) + + if expiration_date < now: + continue + + provider = stamp["credential"]["credentialSubject"]["provider"] + delta += GTC_STAKING_STAMP_PROVIDERS_AND_SCORES.get(provider, 0) + return score - delta diff --git a/backend/app/modules/user/events_generator/core.py b/backend/app/modules/user/events_generator/core.py index 2fb756c0a8..b04c04fc9c 100644 --- a/backend/app/modules/user/events_generator/core.py +++ b/backend/app/modules/user/events_generator/core.py @@ -4,6 +4,40 @@ from app.engine.user.effective_deposit import DepositEvent, EventType, DepositSource +def _remove_redundant_events_within_grace_period( + modified_events: List[DepositEvent], sablier_unlock_grace_period: int +) -> List[DepositEvent]: + i = 0 + while i < len(modified_events) - 1: + current_event = modified_events[i] + next_event = modified_events[i + 1] + + is_unlock_lock_pair = ( + current_event.type == EventType.UNLOCK + and next_event.type == EventType.LOCK + and current_event.source == DepositSource.SABLIER + and next_event.source == DepositSource.OCTANT + and next_event.timestamp - current_event.timestamp + < sablier_unlock_grace_period + ) + + if is_unlock_lock_pair: + if current_event.amount == next_event.amount: + del modified_events[i : i + 2] + continue + elif current_event.amount < next_event.amount: + excessive_amount = next_event.amount - current_event.amount + next_event.amount = excessive_amount + next_event.deposit_before = current_event.deposit_before + next_event.deposit_after = next_event.deposit_before + excessive_amount + del modified_events[i] + continue + + i += 1 + + return modified_events + + def unify_deposit_balances( events: List[DepositEvent], sablier_unlock_grace_period: int ) -> List[DepositEvent]: @@ -11,6 +45,18 @@ def unify_deposit_balances( Unify deposit balance for each event in the list of events. Events are expected to be sorted by timestamp. The first event is taken from deposits, but it already includes deposit from Sablier from the past. + Scenario 1: + The user unlocks amount X from Sablier, then locks the same amount X in the Octant contract within the grace period. + ==> Such an unlock and lock have no effect and are considered transparent. + + Scenario 2: + The user unlocks amount X from Sablier, then locks the amount X - 100 in the Octant contract within the grace period. + ==> We treat such events as they occur, meaning a normal unlock of X and a normal lock of X - 100. + + Scenario 3: + The user unlocks amount X from Sablier, then locks the amount X + 100 (in a directly subsequent lock) in the Octant contract within the grace period. + ==> This unlock should be treated as transparent and only recording the lock for the amount of X + 100 - X = 100, with the timestamp of when the lock occurred. + Returns: List[DepositEvent]: A list of events with adjusted `deposit_before` and `deposit_after`. """ @@ -19,67 +65,26 @@ def unify_deposit_balances( acc_balance_sablier = 0 acc_balance_octant = events[0].deposit_before # balance from previous epoch - i = 0 - while i < len(modified_events) - 1: - current_event = modified_events[i] - next_event = modified_events[i + 1] - - if current_event.type == EventType.UNLOCK and next_event.type == EventType.LOCK: - if ( - current_event.source == DepositSource.SABLIER - and next_event.source == DepositSource.OCTANT - and next_event.timestamp - current_event.timestamp - < sablier_unlock_grace_period - ): - unlocked_amount = current_event.amount - locked_amount = next_event.amount - - if locked_amount == unlocked_amount: - # Scenario 1: Transparent unlock and lock - del modified_events[i : i + 2] - continue - elif locked_amount > unlocked_amount: - # Scenario 3: Transparent unlock, only record the excess lock - excess_amount = locked_amount - unlocked_amount - next_event.amount = excess_amount - next_event.deposit_before = acc_balance_sablier + acc_balance_octant - next_event.deposit_after = next_event.deposit_before + excess_amount - del modified_events[i] # Remove the unlock event - continue - - # Update balances for normal event processing + for event in modified_events[1:]: combined_balance = acc_balance_sablier + acc_balance_octant - current_event.deposit_before = combined_balance + event.deposit_before = combined_balance - if current_event.type == EventType.LOCK: - if current_event.source == DepositSource.SABLIER: - acc_balance_sablier += current_event.amount + if event.type == EventType.LOCK: + if event.source == DepositSource.SABLIER: + acc_balance_sablier += event.amount else: - acc_balance_octant += current_event.amount - - current_event.deposit_after = ( - current_event.deposit_before + current_event.amount - ) - elif current_event.type == EventType.UNLOCK: - if current_event.source == DepositSource.SABLIER: - acc_balance_sablier -= current_event.amount - else: - acc_balance_octant -= current_event.amount - - current_event.deposit_after = ( - current_event.deposit_before - current_event.amount - ) + acc_balance_octant += event.amount - i += 1 + event.deposit_after = event.deposit_before + event.amount + elif event.type == EventType.UNLOCK: + if event.source == DepositSource.SABLIER: + acc_balance_sablier -= event.amount + else: + acc_balance_octant -= event.amount - # Process the last event - if modified_events: - last_event = modified_events[-1] - combined_balance = acc_balance_sablier + acc_balance_octant - last_event.deposit_before = combined_balance - if last_event.type == EventType.LOCK: - last_event.deposit_after = last_event.deposit_before + last_event.amount - elif last_event.type == EventType.UNLOCK: - last_event.deposit_after = last_event.deposit_before - last_event.amount + event.deposit_after = event.deposit_before - event.amount - return modified_events + modified_events_with_grace_period = _remove_redundant_events_within_grace_period( + modified_events, sablier_unlock_grace_period + ) + return modified_events_with_grace_period diff --git a/backend/migrations/versions/1361f75e59a7_remove_addresses_from_timeout_list.py b/backend/migrations/versions/1361f75e59a7_remove_addresses_from_timeout_list.py new file mode 100644 index 0000000000..a25935bcec --- /dev/null +++ b/backend/migrations/versions/1361f75e59a7_remove_addresses_from_timeout_list.py @@ -0,0 +1,65 @@ +"""Remove addresses from timeout list (epoch6) + +Revision ID: 1361f75e59a7 +Revises: 976c7c2adb0f +Create Date: 2025-01-20 14:29:35.248940 + +""" +from alembic import op +import sqlalchemy as sa +from eth_utils import to_checksum_address + + +# revision identifiers, used by Alembic. +revision = "1361f75e59a7" +down_revision = "976c7c2adb0f" +branch_labels = None +depends_on = None + + +def upgrade(): + epoch = 6 + addresses = [ + "0x826976d7c600d45fb8287ca1d7c76fc8eb732030", + "0x981e7512e87d2f7228d3f03b65950eb6a1b21bac", + "0x1d921dff757610fbdb0073479e12c0a07d382677", + "0xb6989f472bef8931e6ca882b1f875539b7d5da19", + "0x774c3ccfde30a5e7263e8d8ec80b3d419c13ddd3", + "0x5a1f55459c07432165a93eac188076d2ecbf6814", + "0x87f64272eb089a14dc5764b848e3488710b829ea", + "0x2f0642874d5651ba794f8e20774cf9452edc96e2", + ] + # INFO: remember to checksum addresses :) + checksum_addresses = [to_checksum_address(address) for address in addresses] + + soft_delete_allocations_query = """\ + UPDATE allocations + SET deleted_at = CURRENT_TIMESTAMP + WHERE epoch = :epoch + AND user_id IN (SELECT id FROM users WHERE address IN :addresses) + AND deleted_at IS NULL; + """ + + delete_uniqueness_quotients_query = """\ + DELETE FROM uniqueness_quotients + WHERE epoch = :epoch + AND user_id IN (SELECT id FROM users WHERE address IN :addresses); + """ + + session = op.get_context().bind + + session.execute( + sa.text(soft_delete_allocations_query), + {"epoch": epoch, "addresses": tuple(checksum_addresses)}, + ) + session.execute( + sa.text(delete_uniqueness_quotients_query), + {"epoch": epoch, "addresses": tuple(checksum_addresses)}, + ) + + session.commit() + + +def downgrade(): + # We don't downgrade this migration + pass diff --git a/backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py b/backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py new file mode 100644 index 0000000000..f49dc0f5b0 --- /dev/null +++ b/backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py @@ -0,0 +1,858 @@ +"""Bump UQ Score for addresses with expired GP Stamps but on allowlist + +Revision ID: e27e85614385 +Revises: 1361f75e59a7 +Create Date: 2025-01-22 14:36:06.731430 + +""" +from alembic import op +import sqlalchemy as sa +from eth_utils import to_checksum_address + + +# revision identifiers, used by Alembic. +revision = "e27e85614385" +down_revision = "1361f75e59a7" +branch_labels = None +depends_on = None + +GUEST_LIST = { + "0x16f3f2f0ba34973937a1ebb989a295ca106b67c7", + "0xbb5935daafbacae82c8d2ca8377f16073d70061a", + "0xba84b5ca750b33dfaddbfdd1b7c6887885a34977", + "0x4e9a05226993f094a56a3472c8c816f2599423a6", + "0x40de3299bd8a10d8ac3f32c1a55de40640cf9b75", + "0x762bbc211990d0a356f35e4d500843f59d223c2e", + "0x55187a1165ebb441a1bf227fff1eb0d32a65bc46", + "0x7ae59f3f2b2e5f3842b50a15bcb5247c5de881be", + "0x59072b3a3287f4a75cadfb36d671a2f0d1959b09", + "0x4a5da2a1d3258df8ffb431cf0110fe9b98adeebf", + "0x514a9771af8afe71057666b680238dfbea578d65", + "0xe70055e9575f15a6f51f3068901d73ac63952adf", + "0x9e831b58001e2b69f70c892e4f8ce9d2118b7e00", + "0x51c1c7f1e168a36bf1fabfd91e98b43476a6b14d", + "0x3df13b9bd79158f0cccddd0833cf774178e3d2e9", + "0xb9573982875b83aadc1296726e2ae77d13d9b98f", + "0xe862e2c1ca94eacfede3c95a217c15ef0086a29d", + "0x0442a9abbc93058a873c371f21cc366338254a88", + "0x0194325bf525be0d4fbb0856894ced74da3b8356", + "0x399e0ae23663f27181ebb4e66ec504b3aab25541", + "0x9f729294b308f79243285348a7be3f58ae5ed31a", + "0xb62e762af637b49eb4870bce8fe21bfff189e495", + "0x5725a458b319d73b8ec84c47de80620e7b191b0c", + "0x57ccc081824b43b75986727875929af3a6ad721c", + "0xf13e477365b0faa64130da2ff663aab20d32d929", + "0xfd868db0696ef762351f8421535cc5f9f423b23c", + "0x30043aabbcebbd887437ec4f0cfe6d4c0eb5cc64", + "0xaa01dec5307cf17f20881a3286dcaa062578cea7", + "0x4103cfcb300599dfcb31dbc95d919592619b4eac", + "0x22baac1e95efc010e35d5ed643bb16c9db254a11", + "0x686a484bc2e2be79f358c7055e8539a69413a3ed", + "0x073a360c372fd51bd6e56b4a4d73790fdaec4641", + "0xdd0206010ca82ff22303b58863b3a6f3006c86c4", + "0x25fa68a4c340202737edbc67fd1a2ec8de872db6", + "0x5b655eda7d101f98934392cc3610bcb25b633789", + "0x32cefb2dc869bbfe636f7547cda43f561bf88d5a", + "0xa4369e39e3ed13593adb0142a1ea5d08abdf99c4", + "0x65f632cfe8015b7ae6976e549645ed04cde60fe4", + "0xb35e0a0d00c640ab75fad3cf3b83264bc64d23ec", + "0xafa3e6e29d99337b166b83fb24ba17b19764b49d", + "0x57dd1517c12659365e59f71129fa9b1611dd18af", + "0x9120ffd5d04ca4b26aabce611989a8f026dc099a", + "0x2ac6a3561a43f06d62602ef9728c2b9eec393326", + "0x297aa50d0557c865f6c9b0aa0a91f41c26e55ee6", + "0x9ff46343d0b652d6e766f85f9ae91653869349a5", + "0xed36bf0b2b17768e782db2ece6a327055b2f3e9c", + "0xc28d2fdfe6d5a482d32f855457bb5f8cacdb32b1", + "0x1d44404c1c53991ec33095225da173d544cd4af3", + "0x5d9fbd984b9cec714a4b14c38ea83bbc82d06d69", + "0x5bc0aebdbab698e12fd33a2e133e6858fe6cdd76", + "0x66805d8b82664acab4cbe0c0498889dde9af7841", + "0xaf7610578f54c7de7563655aaf461e2cbecb08c6", + "0x6c3f373baec5d2d0fb3c82c4f3db5e48873ae363", + "0x015122a625b45f68e6d795c0ab99fc7107e4c3b9", + "0x508a4f07b60ba0940283cd4e32d5deb0cc38adf7", + "0xb150c9bed10a8c62997d58a81c4e1fa75160643e", + "0x212647c56ba10ee429a838bc567dfb03a8d054ba", + "0x73306dab0d39a4d47df4972c7022cb2cac075d4e", + "0x914d5d84aaa064207c2c31014426227405edab41", + "0xfdde7ae208b3596f1982d66f6bae4cdabf29244b", + "0x02e4cc9fff7566563618fb21b3bb10eab4b3d726", + "0x31d23825afbda5b6b1690bbdbbb8117b5ea0f8e4", + "0x731022d6de647991864203a35dfad1a192240d07", + "0xeb5e0b8e80fce271c13f533fa728d7bb03cafa4c", + "0xfc967de4e029fdcd16b418dac2147d282c93085b", + "0x801a6d6dbc1e40466e131aa21d951629a9efab4e", + "0x4892139de0e73141438d9e55d593171c0cc6b143", + "0x8124efc94c951cf41d4b0b42794c678458a00726", + "0x81cc36dda894256aa95458f78b4029381b09bdfb", + "0x4dcb2bca3450b427f3d1b424c885259d05363080", + "0x7dd8030f9d33af4a40ee074f990892e825132e61", + "0x432c53218a11bed08d238cf84ff547ce4fe933ab", + "0xe77ad9c5af60332d24e5531b51a6b7f61d0b8703", + "0x0f792e55668ad78476d4b563e6eb1228d636a71e", + "0x583bbada56bb535bcbb31877a620a6ff2a25cea5", + "0x5c0e777dc8f3de6b0911b44dbbdd8bf71b2e8e38", + "0x8a4a50b13fd2cb36feb96c408cb98b4c9f2b8f25", + "0x1e55c85801a2c4f0bec57c84742a8ef3d72de57b", + "0x26d3be736ab6b5d8a3266ffcc0895ddc1bc19a38", + "0xfb94f39b150ae661f85762154c0cadc65e083791", + "0x4b7c0da1c299ce824f55a0190efb13663442fa2c", + "0x77e64560bd6c323c075f206a5ab9dd6850f31609", + "0x0f46540678c7e6d2ef983b382cc07fa815ab148c", + "0x82073f802547feeec0fd49719a3d7697fb66076a", + "0xbaab83de8dba764bf02a530cad33555bd23eba22", + "0x890a0047f8d573347872cb6c019f86552f2367d6", + "0x14d92832265eeafdef9e526356fefc90105966c3", + "0x512b436cb2ed6016e80d4f89ca578f99dbbccb61", + "0x696ee4ae0b15feae8ed1afc865930e0ea65b1f3f", + "0xbb4d885fd41c807e8ecc2dd9e6295a7f96adb0eb", + "0xb1de969883b1fdd90a43ff475a5171a3cfefe76d", + "0x7dbf6820d32cfbd5d656bf9bff0def229b37cf0e", + "0xfe2e3ccee9714b29ab2fb4e940e52672194815fc", + "0x57fb3f4b027fbadbd8d20eb5e48feb1e2b02df30", + "0x9ae494fbac34682c122a1d4e3d6ae1eb5404a469", + "0xb2b9300475af157676c44ee64d39a5eb3c294dbd", + "0x01bc28e036b6e75247fe8f49f0a8b9410b19d851", + "0xcce9a28b570946123f392cf1dbfa6d2d5e636a1f", + "0xb2a3b5b9d2c0f07cba328b58737147cfc172eb9f", + "0xcc3d7f9fe6946979215a901bba385a88fdabbbf4", + "0x38f80f8f76b1c44b2beefb63bb561f570fb6ddb6", + "0xd82803b7b9a5eb1d5fc558fd619afc6c031cd0b1", + "0x844aeed1b294ef9632c18e73f57ef77d0a23d0e2", + "0x9cd7d1981b3e15a2dee4d512ac60e0579ae18546", + "0xebcd250474c27cbad3c56f3f34e08f97b370ac2d", + "0xda47bdcc48f26fb4709f90316341d9104cb1fb89", + "0x5cbb6ad79008908aa125667d1300558d9253b589", + "0x1078daa844cdf1edb51e5189c8b113b80a6a6957", + "0x8341c4106523b49fc247f84e412bb2af5597038f", + "0xce57ebed9ac38402dcaa44f65a1c9b04e26b8283", + "0x2dd2036c9db2ada2739509af0047c00c8b9291ef", + "0xa77294828d42b538890fa6e97adffe9305536171", + "0x8da48e5846c06b558970acd42edc7da8799481e4", + "0x50418699cb44bfda9c9afc9b7a0b0d244d8927d2", + "0x936d69abcd9acdc89455eefaf744044ffc1ca660", + "0x362b7e0599e950b921ca9d86336ca409208ffdec", + "0xd98ad1fd4aa0e1c876d91968d1385aa9e1aa98df", + "0xd2602c7bdfc9f413974e944280bbfae275d1b1b6", + "0x731a2e51ebfaebacf8477e992cdeb1e8eacf519c", + "0x072d63796c4fe69b306a23e1d01156d51f7b3e16", + "0x8498843f6d9046f7b59482978e152d61869203bc", + "0xb48ef8e4e7bef79ddf64d4424151f003a59bfbfb", + "0xb423a138fd171c28d90a5883a01ec92ff3d63609", + "0xafa3a2528e8baad576a83ffc52db9f100debe307", + "0x055fda7eb509cc338c898b0f698b7624387ab813", + "0x0b3bd83e857997b370fadc8504fb712244f6786c", + "0x8d12a71cb933a4222d42fecbb4ba9c15e455305b", + "0xdef3d19ff35a42f5b8e3c706c8fd287de72e6d15", + "0x19a2bc678785bad6a947a87494d480dad57711c6", + "0x2c3e79d3dce90fb0886c89ec602e61757e589a94", + "0xe8aa836a597a66724d678860d105561c13e95bfa", + "0x3352a3277d2b74a773fa6e68a625fcb18e4fc282", + "0x2df292af809fd693d94c7d17e36be352e15bb98a", + "0x269aa10398aaa695259c3e8211ab27a15004110c", + "0x02d9c84a495986b8b3c3347ad16849dcb1b9793e", + "0x8fda1daa6a674c1726d1896e3054b9a82d123f12", + "0x1021e61f2cdd8bb295b0e64a20ebb7d8ec3734bf", + "0x58d7d9c971a613117e493062bec1a6a5484f2780", + "0x2bb96f44b9709b02189a50b377755edc30bc65c7", + "0x7be20b02095944657275ed608615a39931d783f2", + "0x4aa51a723882ee676fec444d4561c5ee16c339e9", + "0x1b243d42f53924118646efaec5b3f6116b563960", + "0x01b7348ec3fb20ab1f40b97cc82df44aed360768", + "0xbf4c0104dbfb028f3484cfac17bb22aa15e5c7e2", + "0xcc3b817d4aba7698eaafb4c68e7688cf61b0bf46", + "0x572e1b86471c900cd16afa9cbb7701862d0e70cb", + "0x602ac8c3f61b351be325feeb58842ef557431c2e", + "0x8d0cd1ab81eada4f92c7cb5c8dbc25c69cc296ad", + "0xae2c7ab762317db453317b70f1f40145755fafb7", + "0x7bdae9aabe238188c4882d48a3aee21288a38ed0", + "0x96e4152f00894f677d860023b9784d578bc1c145", + "0xf572c9b11e757d3580c7c7310630cd488e8ea736", + "0x3769092dbfa6eb34434fb5b7cf0eb06e710728f3", + "0xca72c93172ba6eff168e59e7f17c3c7a8fea9b62", + "0x7fc80fad32ec41fd5cfcc14eee9c31953b6b4a8b", + "0x5d36a202687fd6bd0f670545334bf0b4827cc1e2", + "0xe64113140960528f6af928d7ca4f45d192286a7a", + "0xf6b6f07862a02c85628b3a9688beae07fea9c863", + "0xd779afee481e3df5cd0544f0e4353cf534fd99db", + "0x183bdb344a07ee3d27f07ac4799a56e4a2fe5439", + "0xa8cadc2268b01395f8573682fb9dd00bd582e8a0", + "0x75535661ab25a468dfb3137320a7568fecda4832", + "0xd37ed782323a82e5bd55a92500e48ff5efcc415e", + "0x03bb5bc3c8fdab212a6b2b347a049133dfcb3a47", + "0x61987699055394c65355f2797d3e4e589f7fabf4", + "0x2bc12061c8912505978472c21d4a23db43af62aa", + "0xad7575aefd4d64520c3269fd24eae1b0e13dbe7b", + "0x0d89421d6eec0a4385f95f410732186a2ab45077", + "0x04c0cd38b8c203b14ef2b7b8d736d69b938aff71", + "0x0cf30daf2fb962ed1d5d19c97f5f6651f3b691c1", + "0x6eeb37b9757dca963120f61c7e0e0160469a44d3", + "0x616cad18642f45d3fa5fcaad0a2d81764a9cba84", + "0xdc1d963d21c9c1bff7b6bea6e10080daa9b4fc51", + "0x8073639b11994c549eda58fc3cd7132a72aadf10", + "0xe52c39327ff7576baec3dbfef0787bd62db6d726", + "0x8f21bd39fcaea3a729d46339a383081ecb7e84e0", + "0x8fb7087336678f36e42313f6130567a109a8e73d", + "0x276e69cdd336001afef07075859a93078496c3c1", + "0x954f716e6de059360d278b773138f8e046696721", + "0x997d410b26cdd17b0750f2c1751e59cbcfae446f", + "0xe8b6b71f3b1e6d2ad406d2cf36b1f2c567342df1", + "0x83108a0653a14eaeb8301e7b10a37cfac39c82f6", + "0xf95d9549b3ab9470d306a6413aa45082e8b66043", + "0x82d92494f6fffb17a1ddffd9b7d88d1d0a360009", + "0xa19947da8b916f64ac6f362cec9001d8bcbeee93", + "0x7ef5e4062dccad29a6f8d5458590160536056c81", + "0x653d973b36137a5cb2fc304996e0af1f1afcc628", + "0x5f319ca6ecf072a4d183edaa711cd04dc225df19", + "0x4d32d90d6535bd4e7eabaa27ee72932cb214bbfa", + "0x73b9f6a6e52ace2797f0a6e52aac530ed1f2a2af", + "0xaa3600788b72863ff51c8f0db5f10bb65fbfeab4", + "0xf93f0b770784602fc3079eb1d2fb1ff488bb02b0", + "0xc8ddd59c496d04c4c060ab5038d03d661ddc2617", + "0xc42c77b6b2a2b220b9502f357bbf51334db3c93f", + "0x2615214f8200b526a7b1eace03971f2672b48cf2", + "0x9d8d7220d060fd12ca33336b7239688e366327de", + "0x8e30dc2aef957b1f7dd67b1b7bc651ffe7e17a06", + "0xf5819cc26f0481c9b86294b4c24027518a04bd5b", + "0x8e7d20638947132b0e6e1afde2da1b103aff9280", + "0x6c31212a23040998e1d1c157ace3982abdbe3154", + "0xad7a185b2456d5afd85838a50c7d8ace3ab2f871", + "0x7993f18c91a9f68593d308c5846f380a2a374f46", + "0xc5d82775c9bc5272b1225db8d62b7034e064ba91", + "0xc2812325cad4c4c782cbbc1164e9373371d31db2", + "0x4831ddb6502ca45dbeedf58b47292061cdb6050b", + "0x6733c60e6e02f9c8fa221db1aea018d80d949861", + "0xcad3887923b39cd2b0b6d13538c4ecb7c5ee9825", + "0x4520cd8bc085b962ef8c0ec696ac9d3ef1d8bf55", + "0x7d85fcbb505d48e6176483733b62b51704e0bf95", + "0x27259b0f4209e76f8c6cf27106c9ff83bdc2e831", + "0x23ee51e614cbf138e4caba9ec5ed4ff7d27a8596", + "0x2cab4d881962d247218356b32abc4aa5c46ba0d2", + "0x1c0a032954f20761e59138fee236204becbb8bdb", + "0x701d0ecb3ba780de7b2b36789aec4493a426010a", + "0x1ec3c1f70e1d6bbdc84092ae86eaade495fddb9b", + "0xb53b0255895c4f9e3a185e484e5b674bccfbc076", + "0x770569f85346b971114e11e4bb5f7ac776673469", + "0x8289432acd5eb0214b1c2526a5edb480aa06a9ab", + "0xdca6f7cb3cf361c8df8fde119370f1b21b2fff63", + "0x117e1ebb7d05545064850513021df6ade3c1690b", + "0x7fb43c99a26a9ea8ba841d58390bf1c2996edfb0", + "0x84b5a60df2d7e3397b3a4a3c6282f090304aca26", + "0x72f434fa010929656aef58695dab85447e51fbc6", + "0xa29b0d2f3b4555359a1bf684d700753b1b06cbc4", + "0x4318cc449b1cbe6d64dd82e16abe58c79e076c2b", + "0x8f48282e50b0210bd7c7dd69c54205e98b9ef5d9", + "0xa305b293e44a82f3cd489b5fb26084647bb5d8ae", + "0xd9e5de13ef1dbc4dfe0ee1bb76276228b9b23d0f", + "0x4aceeb7bf9ec8104cc2379f1e8d648ee47249fcb", + "0x0743542070891051861f8d0a4550f97b43b0b89a", + "0x58ad805f26272c5ba06d24bd0e43c8a2d1c634d9", + "0xe6ed9c681967a4ea7cef4486942b800139dfb000", + "0x51b9c1df35b044b5c0099d1fd07eab7ce38f325d", + "0x55dffa17578e6bace42e4bf8687a11a85ccfef97", + "0x1fae8f99e9f932bdba910061590c2156ee512a91", + "0xa25207bb8f8ec2423e2ddf2686a0cd2048352f3e", + "0x746bb7befd31d9052bb8eba7d5dd74c9acf54c6d", + "0x38bc91aa6aa434c4fae7e666f68c859292deed95", + "0xa3ad5cfb4ff4b68e37a338da200ba441c1850b5b", + "0x4bfb2c232f70c83136a3f206cd26df2a0b605cec", + "0xf5ab6b4a8d578807491ef59ce855982990932617", + "0x1fdd220e14b59e26bf1888e8267c4c221983a0a6", + "0xe2d6aff297b41881c1aea9599f68aedfab38c651", + "0x7d547666209755fb833f9b37eebea38ebf513abb", + "0xb681b19bb1f7e9f3c2ae0edeab368c2afaa4e590", + "0x7eb84e42059f0d44269c50f4d3a280fd307a6824", + "0x84f0620a547a4d14a7987770c4f5c25d488d6335", + "0x4ae6a8a28c87b75e935a90d6128f2649c969c0d8", + "0xb79223e868871dbac27e8e301f73734abd4cc628", + "0x6f219bd1167568ab67494a9067cbbb5679bf0022", + "0x9ff548c1b3ea3dd123afe39c759dda548009b6c8", + "0x3085051f89666e7124e7ab95b693fc1e09770907", + "0x6166e1964447e0959bc7c8d543db3ab82db65044", + "0x76e059c6ff6bf9fffd5f33afdf4ab2fd511c9df4", + "0x4cc9e6fabb800f083a2685501d1a30cdabb4b2de", + "0x5f3371793285920351344a1eaaaa48d45e600652", + "0xe0d8926a51f9a1dd8e089d9a3dd88f88ffb2f1dc", + "0xa6c366d97cb64708211f24310dfad5363bc96a04", + "0xb7562f12e41c762cecda99d62bd6eac7b0c3b4c1", + "0x301605c95acbed7a1fd9c2c0deee964e2afbd0c3", + "0x5d47e5d242a8f66a6286b0a2353868875f5d6068", + "0x88f1706c20d94a4d1551c5f799c9e3380a24c3ac", + "0xfb40932271fc9db9dbf048e80697e2da4aa57250", + "0x40db8365d1252bcb06598927698238a99d39228e", + "0xacf4c2950107ef9b1c37faa1f9a866c8f0da88b9", + "0x144c4e5027b69f7798b2b162d924bcae5c149f15", + "0xeee844540644b204f0005c063ae95f244bf06a84", + "0x014607f2d6477badd9d74bf2c5d6356e29a9b957", + "0x1e8ee48d0621289297693fc98914da2efdce1477", + "0x4ada1b9d9fe28abd9585f58cfeed2169a39e1c6b", + "0x31460f49eea93ef8255b42be019fb96f89cf0c49", + "0x63a32f1595a68e811496d820680b74a5cca303c5", + "0x022ca32d31da3ef85922aafd9ad29c5b2418172c", + "0x93b109c3c279bcbbb673ed1ae1a8bb2de8eef9da", + "0x689476323eb5e9a5ded342f54b562fc2c156a522", + "0xe0144fa05a0d32b5b1de10ccee7211616b3e3ef0", + "0x6c965b656c450259a6d4d95a2e68fb4319eecbc0", + "0xe36bd8c15a83b89e2e49806d7312846069755c63", + "0x59dda36bd196ec849838ce2163e6821f946b37dc", + "0x83c98211c50480e457a0df930d2a56a891bc4d4b", + "0x11fa934f6754076aeb7cf0a72a1c2d2518aa4c77", + "0x2b888954421b424c5d3d9ce9bb67c9bd47537d12", + "0x2383a8b8cc8561a65871f1d2783b7c52e22b62c1", + "0x841ad0abab2d33520ca236a2f5d8b038addc12ba", + "0x76d2ddce6b781e66c4b184c82fbf4f94346cfb0d", + "0xf21e38ac177b48fde02db7f2ca97466ae8eae87d", + "0x7537cb0aee6a3483a7601ebf1084ed4df73166ab", + "0x5f0bd06a71e038206ef3e5090eb448e9a9773772", + "0x3c0c7b44c1f9366271f5c491121a1f7d55d33ef5", + "0xa96a437efb71baf50a59027c340fa3362ef703f7", + "0x55ba9c90c37e3206570ac9dc872c0f053d155f77", + "0xc68bba423525576c7684e7ea25e7d5f079b1361e", + "0x78e87757861185ec5e8c0ef6bf0c69fa7832df6c", + "0xcb36f8580a36788a48518dec95ea458357e64e30", + "0x25854e2a49a6cdaec7f0505b4179834509038549", + "0x639749b7b08aee65039c21d8a411103c6cebebf0", + "0xf517529866d371f04780885923f739bc17694bfb", + "0xc728dea8b2972e6e07493be8dc2f0314f7dc3e98", + "0x33f6ee932cea603fafd6854827259be172c91da4", + "0x6d97d65adff6771b31671443a6b9512104312d3d", + "0xb7babe35ce543e2cf2f615cb1c792a2025feb572", + "0x4d9e86a5ac368aa4df0473ef07e13ec2fbe04025", + "0xaa79b87dc8b046a5e4f7d03f1562d7fe5bf98737", + "0xe71fbb197bc8fd11090fa657c100d52dbb407662", + "0xf389dd1f828525b449d63d14157f2d3a25ee0a41", + "0x877b37d3e5467b4aae7687dd3480a46c8d3e16be", + "0xf9e1d1e9f22c96752356adfd377231528c7e851e", + "0x187089b33e5812310ed32a57f53b3fad0383a19d", + "0xf1659a2fd5007192314f9676e6a4a39fd1202160", + "0xfdd210ce1b829e837d9e034dae0f0312f176cef6", + "0xace1f1c6c5c89ae3fc3209ff92e7120fb74445aa", + "0x6ceb397b68059ca73049874d0a30c62500ae9877", + "0xc46c67bb7e84490d7ebdd0b8ecdaca68cf3823f4", + "0xbb2eb4c7eb36ecce7a3e6bc501590ce12c9c1050", + "0x9cf251a782ce7310d5bec0fe0a1c2b826d962545", + "0x43930ff04d18a5b59805151c1eb403c55870641e", + "0xa270f5649a42fedfe66ddb3b0b50bebae1e3ddb0", + "0xd3488ea0c1dc99a5d72f75c84004224f8b58694e", + "0x7aba691d12d8ef8793f1643eba66b69c70ec72f1", + "0x8558f502887a9a52c4b265d72327e0e529ff790d", + "0x3abdc9ed5f5de6a74cfeb42a82087c853e160e76", + "0x30c7f4f7504d6366916f669cd8e731ed4df6c702", + "0xed8db37778804a913670d9367aaf4f043aad938b", + "0xc191a29203a83eec8e846c26340f828c68835715", + "0xa32aecda752cf4ef89956e83d60c04835d4fa867", + "0x059f7da59ad1eb412b4d2ffc12e9b50da91cfdb6", + "0x85bead65c61db8cf230b3ec30552b8b3e6388570", + "0x3f87755e2974534888ddb20a52dce45ef9f204ab", + "0x757cc91ccbb88cb0d78d6798d20051d39e5a7296", + "0xf553c8223ca8542af9db7b916fe9dc7c28b73751", + "0x40f9bf922c23c43acdad71ab4425280c0ffbd697", + "0x9600e2ee6377dadad7299b120026661c336a5e6d", + "0x516fca170bfe24bfc54e01f215ef85fe9b5b798a", + "0x61c820e261717a5a0555488872f78ac7b9ce77ec", + "0xeb263241eb948cc0eb53a58bf743289d074f474f", + "0x841c11b14c428dd591093348b8afa2652c863988", + "0x3c114973c0260290c2dbd40323327d996972fceb", + "0x765a16ca391a6b9249cfa65bf2d14c38722198e3", + "0xc3268ddb8e38302763ffdc9191fcebd4c948fe1b", + "0x6b92686c40747c85809a6772d0eda8e22a77c60c", + "0xc799be8de03f20b2d3b101e6f6516d614e6ffe06", + "0x40dc654af5ce40c122ffdc679fa8e8ca8b91556a", + "0xce8d52c38d74b77a0aa361c48fdce6b220a3370e", + "0xefa4c696ea2505ec038c9ddc849b1bf817d7f69d", + "0xcf79c7eaec5bdc1a9e32d099c5d6bdf67e4cf6e8", + "0xff75e131c711e4310c045317779d39b3b4f718c4", + "0xde2be7c9c542c55a7a77489a3a7745493988947f", + "0xfeb3e0f50107f6cfb2ec8c2bc8287f2707e0e2ea", + "0x6b759bf480407d19c8903c16023c706868c29a2a", + "0x6e38911da6dd0379f1cac396f74387c95a1f0d21", + "0x5a5d9ab7b1bd978f80909503ebb828879daca9c3", + "0xe96056a9936c58e89d1703cf6bd97f134341ee44", + "0x4dd6720d2bb8721a46bdf9a528704164578e03b9", + "0xe83b9a1b9056b21a01b85162e77ad76a42a1c64b", + "0xbec48f1ccf82d8e4c983ee00ac2ec6b03b81d710", + "0xefedaf9c07e6eb56bb8f82f30018e4461b1c5f4c", + "0xb68da7fbf71383afab240839287878539cfff20b", + "0xfbddb719cc7c795a1d9b7ea7ac11494a19b3231f", + "0x07506a5f48d71fdb34d3900fb086d43ef1b58ff9", + "0xa85cdd5478b7e525a808ef9707c3e33432ce1e7f", + "0xcf7c21ded40f2df85a564207a89b3379780d9ce3", + "0xd26b76e50f6510cdd4bf45d59279705f36946d23", + "0xdb7a41e39807e8c988859f150296db92674b7dc7", + "0x719028736f10164c838ef129936779ed739312f2", + "0xabcdef0abba5d0106595174213156797bc0db33e", + "0x3d2b8879f97e413b2609f9844a5fc8db8fe4f6f8", + "0x81ebe8ee7b51741fd5dad31f6987e626a9bb8111", + "0x1d45c8fa65f6b18e7dae04b2efea332c55696daa", + "0x978eb534b26cb8749d352a2c94ec21e659e4248d", + "0xa7ca400d49bba87eb606ee05af93689bd21fab99", + "0x65ad2bf7e09af2597c140df6386a3003d0f5f8ee", + "0x835918a3fbdf946364a9aee3114173865b712663", + "0x6073cffc1d46b1ea57ba89a28074ca734acd7003", + "0x2b13d52dfd33e2ebd13232866fdf96088e77d596", + "0x55f5601357f6e0b10a3386914c93916c6c9a368a", + "0xa1d5d2d931b532a0503e97f540f65ed256f374e6", + "0x6c9258895ffbe2178b3edefe09af304a1e99bf2f", + "0x973375b099943cddfd390022cea90d4f1d0c493c", + "0x8a8c879d39a74fce0593714956bb7ed048a5c1bf", + "0x9c42b0c70d0daf1211f3aab2a1e6ec5e717de12a", + "0x81a6383041593c556d1c8e69e2749b35b5008f09", + "0xf41b98a4c32bb61468c8001e0c69ef64ce6dea57", + "0x8fae81bb674c89ccde35a386587333d074b57786", + "0xa8258ed271bb9be9d7e16c5818e45ef6f2577d92", + "0x2ccbbc4c10f5d807fdd447219b57d0b883a28dc8", + "0x1bbeac736875c5043486a8a4374e6b5616ec8883", + "0x95add3dfef3ae0a832607dc71c4a9c6a6c2d7eb7", + "0x744c6eed427af293b0106b46700fddd3c9f62eef", + "0x743ec55fc166d24d2fd0211fb6ce53926d0ff3b1", + "0xdd03d2434c02c6bffb097b7130528f9568b6c70d", + "0x97c12efa574923e3ee445370d2de432332857110", + "0xb69951a0642b55cd5731535ed5b290fa49d3454a", + "0xba56878729540404de2aa14561b451ae2350744a", + "0x8d247f4fbbe81429d3d164a5c9ae0063210edbdc", + "0x850a146d7478daaa98fc26fd85e6a24e50846a9d", + "0xfe1552da65facaac5b50b73ceda4c993e16d4694", + "0x9705fe3586a7d768fee061aafe9384b1d4b8f2d8", + "0x5554672e67ba866b9861701d0e0494ab324ad19a", + "0xacc5c1e73d70f7f9622de2d574885ce8e6981033", + "0xbe9e7b0ed19526544b55b697107231f9467a805f", + "0x172dbab6f5e62a1fe7e2ba5ea1624adb33e0aa14", + "0x96725fa2f9a0b5baf80fc36c20c2ca79d86424ed", + "0xa392ccadabff735dbff69dc93d7c13f34a30611b", + "0xebf0e04e47f726d0f44801dfec5e705adcd6694b", + "0xc0891e8fcea09680bfe9170809fad1bcca10b96b", + "0xa21000e7a5a2a2bd9329428a859f9d7dce0f0961", + "0x9a387307f7508de113092bafc5cb4b3ae0706521", + "0xba719e0197470a790726075fd98edef04e2467af", + "0xda08be028304db1a73a13bce7c943127c2e393db", + "0xfb4a965a35603010feacc648ca022cb6a12d33f5", + "0x3aa73ed90e9f0ced87ff99cb60ca79019279e6ce", + "0x150bb505a9259b0be44ffb15415c79199e83c445", + "0x2fcd65d9c8078644adcf1cb0cd70a1b61f3f9c5b", + "0x73006c818880d07dd510e165c3de3e74f2407187", + "0x747e6abc102222f1df65c662540ddf471241a644", + "0xeeee5d271a56aa09c4f8862af514add3e882857c", + "0x98ad82ab467bc8c70e0cc183a5826d903751b7d8", + "0x848e313d4b25bc0b48cafdb6a72391e892e6a247", + "0x0025ab2d69f6c2c3ffac32ab6a16e18c807518b8", + "0x2efe744ecc4f6bd55538da57d09dae895c95b223", + "0xbc6d82d8d6632938394905bb0217ad9c673015d1", + "0xe1555c6ee61366a3f90135dc704acd25c3247aca", + "0x2f51e78ff8aec6a941c4ceeeb26b4a1f03737c50", + "0x0b924785d2bbbc8834cbd5fc63d10543ff799d4d", + "0xa50064d462e17f7091ee62baebeb18bfebe21507", + "0x6ead98ac60771343a361cf7558e8493b32fc8304", + "0x433485b5951f250cefdcbf197cb0f60fdbe55513", + "0x6dd6934452eb4e6d87b9c874ae0ef83ec3bd5803", + "0x29e1a61fccd40408f489336993e798d14d57d77f", + "0xfa7448891b9a58a7f71cc2aee436690ae1bfdb68", + "0x29185eb8cfd22aa719529217bfbade61677e0ad2", + "0x73bea65145f19702da07d8908e994a193b5855a1", + "0x140d3f60ac840571a3e08e218b823094d4715564", + "0x82cb2305388c853ecfe9ea83a1604acf58466659", + "0xb13a55d8512aec4bf7b15067d733c4c3c68f2439", + "0x2842decf9baeb5ec76988d1261325329848522ae", + "0x5fe4326d06d901886d9a11e6a7134f5c9707f0ad", + "0xa8f0048a0d1a04663ca5010d0beac5bcaeea0eef", + "0x6d465d2081b799770d0ce7e755d8db1665903ffb", + "0x837667c7c5cb49609ed5bfa5d3b2f1bbae81d8ba", + "0x77fb4fa1aba92576942ad34bc47834059b84e693", + "0xf31263051c09bcc2853dac78185e1e5c59f4ee56", + "0x3fad8bcd2aea732d02a203c156b19205253f2a06", + "0x09b43a8fdadddade8e75c18a20a6fc0dbe4a1f68", + "0x7e475a846af78e49aa56f05706530bc5ebe58ea8", + "0x84e1056ed1b76fb03b43e924ef98833dba394b2b", + "0xd0ccfeef904cce8e0c70014db37e5133a6a8aa1c", + "0x5c7291e18c3ecf30e14ccf1dcd646c0ca3309113", + "0x2dbfd11c5073095670e0eec58e8d2313fac9e494", + "0xfd37f4625ca5816157d55a5b3f7dd8dd5f8a0c2f", + "0x2d4ac9c27fffcd87d7fa2619f537c7eb0db96fb7", + "0x9e6cdaff95f4bb1a21ce2f81f7655e2aac53840a", + "0x9dcba70b2dfe5807e2a847e065ebb666791f8b8a", + "0xff6d6a7718a234a84f740480dbb07f6c09cf1cd5", + "0x69dc230b06a15796e3f42baf706e0e55d4d5eaa1", + "0x535b3fc92c40823b5b28df471491f6b5dd5fc4e8", + "0x2d122fef1613e82c0c90f443b59e54468e16525c", + "0x5ff677061159e4d0ae380607c2572e7a0e4f0d75", + "0x865528d9897d990cffca5fd1c90f0cab919c9794", + "0x6bd6109fb3bf59f67c86cab3bc09adb8b77485b7", + "0x6c05ecd97c3a2b1e15f832093aa15efb7e9924fb", + "0x867adfebee5dc35c8353cd1475a9ba92f819c10b", + "0x9f4fbbbcbe8b8e90449dec9032bd5cce65bb52e5", + "0xf449ae59575b9f2d276a532da9e835ecd1d33a42", + "0x1b13d62de363e964ce8a9981f58dd293c005e2b4", + "0x2c053707f844bdd9167d20a385641f5d55b42a70", + "0x6ba54cf6b626f1108a2f6c16767f8397060022c0", + "0xe02e99b7c9094a04c5571c07320b9fcf85a5e4c4", + "0xe040fbff9d04bd20a0c76fe44b046d170348e2e8", + "0xdeda35dfaf6e2b26d6fb9c92037bd86f9ed3bf21", + "0x72578e136e72a18a832be6762230a820f514d180", + "0x591a406cfa71bb26935ed8a644d108f0cc3d94b4", + "0x3a37cc1096865987546d237f42e18737acdeb2c8", + "0xbecb225ed2f25c5973f5b2c8455aef2491177ee5", + "0x899eb407e36965d58f300e1435e262281909f7be", + "0xb19ca68eefd8378e34329d5f31b855f808820890", + "0x26cc56986a3f0f278536194b868ba88be1c8e8ca", + "0xd67b7c3ba9304ac3f80654b8bb95895a9d0a8ebd", + "0x0d72724bf16877bd814b8ec52b2b65a4a385d7fe", + "0xd700b177296cdbbf3d404147fe3dac3900370a0a", + "0x13f823967682151bee6e571adf8363dc41274d0d", + "0x038a4e7c11193ebdf6fe574bd9ecf6989c8beafe", + "0x5fdce124662b8fa60f2a6852939ccc997f9d8e60", + "0x6e72dd10375c221d1be5a71bee11cf1c7105ec7c", + "0xf1b915f886efe71e1574da2c0c3fcd79fae5035b", + "0xcb0424775ce3f6d1cd15d5622085cc7e7e47ff76", + "0xe1896d5e7547d63e79861d53a3dacb066769dfb1", + "0xa8e5d871de077d625cfaea1a5d163389fa091e1b", + "0x93082bfea9424363861ab35110ab65b8a5dfe9df", + "0x7a129f1b0550e6dc115dda6428003adf9bc7bf90", + "0x7a122100f101e8819b23f237d62a3bb7480a6ad0", + "0x2fe31177bbbf34f9b80be48b4dc56b1eb88192ad", + "0x707e2302149294584f570d53c666d3008d39d24e", + "0xdc1fc1361efc9efef65ff81ff3acadd421a577e1", + "0xa85de57d5f22560e7c98012bfb8604af20f35933", + "0xb76bc3ad9c150cc6f83984d02ab8e42225e4d0c2", + "0x98f1bda2d45ffaca73fcf2154e9e007871e14934", + "0x90d3c980149ccbd039292ceee75b3186da05c998", + "0xafe2b51592b89095a4cfb18da2b5914b528f4c01", + "0xb335d18843137b21db0c9ebc23e7ed9f0d33f14d", + "0x38a02b64ccd5b157062cd2bad9ecd7f85d0b8480", + "0x61c4a9107de33e75ed6fe29550ae2cc29ced2264", + "0x20e903db0a973f6d400e227d7fb7708d45fd5577", + "0x25a411f95ad3b558a783f6730e7c7d8e297b0fee", + "0x1c0accc24e1549125b5b3c14d999d3a496afbdb1", + "0x282d656a9d95c64522f6bc1a42ee759de81e8dc0", + "0x57af2c4249761f4b266dbd80fe44061faf4780c3", + "0x2387c1d431afc94600b1d7262ad90eb61a25a6e8", + "0xb9479331df573d6bca8b924f48e8cacb84664ce7", + "0xf04aebaa5c9e6ab7f2ae303f76504e00e7ed43cf", + "0x2937d75b326bae98fd823f3e5e4ea01fe9de37e3", + "0x0276dece5594a6db72e044c85488519a18f9e462", + "0x6710287cee1a9d1a00251fdc9a12795ec7a86189", + "0x9ae8912ea6562957043c8d048641aa9b450c397f", + "0x300da191248a500b2174aed992d6697bf97f9139", + "0x2d240c5d58a8445e99dadf3fd41a492dfeaf7e4c", + "0x42e0793e4f029557d4c16a05ae0d989a173ec6aa", + "0x18b54c6c9960bd16b1f7568ae9f39143c2d3390c", + "0x3bfb159c76833bc019e7c93708f26f318ad61504", + "0x2a87c1345024ab463acc26417124c433b3069fdd", + "0xd8b41b798a7ce8d30cbc87f007ecb95e1d3c876c", + "0xa831d11c0c280b118c5f44b192a327cf64d9ee91", + "0xa13ac077544dfd51193f8b15641a0c7a3e0286b7", + "0x93e4297ea2b1368274ef91aabb900debfd915d7e", + "0x0bf61023640b5ffa269ebaba895cc3662793a4c9", + "0x3e6c23cdaa52b1b6621dbb30c367d16ace21f760", + "0xe5adabbd71225e8074e30ff6ce2a66c9319c071b", + "0xd11256d99f8833bee0b99203ddcfe4cd6c823d8d", + "0x7f96a6269b00c56cdc319721be80bf8c290324a5", + "0xd1da06878d2817a358498c384418417a752dfa68", + "0x072001b736b049934eb1e66bcbbc281d010fe7b6", + "0x8d4c0ebb98b259f40f783924a78c1b1affde200e", + "0xee549cc0a0ab1aeea4bb326a1de9fd1684dd83b6", + "0x4d5b28d08e8c00e041053b0dc584e00e6997daa3", + "0x72337d25034d5a27fc10dce0c893fd29c1301d5b", + "0x65c20b3e50fc7575fdea5a76f99a2c4140155531", + "0x58f7ff14700a754a652b3e6f5edcb51e617c4e86", + "0xf40cca17034fa8a698bc5fa7e7a5caf0b298452f", + "0xbe4cf8e9d23cd50cdc3d56e6d6fcb75bfbbd2f67", + "0xacd59e854adf632d2322404198624f757c868c97", + "0x9ced5f42f2f8fec2eddc7fbb360ee17ffd6bdc21", + "0x1e8c64fd8f94da1d0e23853118b7f73a7b467209", + "0x00a66045ccc58a3e79999d6de0f49809c577ed3c", + "0x2aa64e6d80390f5c017f0313cb908051be2fd35e", + "0x3f649dbfafbe454940b8a82c5058b8d176dd3871", + "0xfe6afe37c8563c653bacd30924d2251ea5bb9740", + "0xb2206f941a5206b55bfa33e665687523a8bced80", + "0x5b0ffbe6218a68208ee61bbc1282c2637f0bca16", + "0xf11704511975cc5908f6dbd89be922f5c86c1055", + "0xf9903c5d11e8f4bfebcf02747d53319e9c4a10c6", + "0xc8d92326bd4dd3bb1d4eae8355fca6833d64ea80", + "0xfbd39c29dbbbe1f3e563e2a8233262c29040efef", + "0xd74e6428cb1c29cd6ef8ce4da4932f47e88a0946", + "0x5bb73e04b810527b14b87c37eff3d62481f2d416", + "0xbd56efc637f8cb7133e304b3f929df9a6fa35468", + "0x488abaa18b5af3f24e9d69ca0eb3d6fd6ae4fbf1", + "0xaca2f322d69e07993e073c8730180fb139ca4446", + "0x778549eb292ac98a96a05e122967f22efa003707", + "0xcb77e0c9ca70c750fbe49c44f094e1f2dd4f599c", + "0x74d5c70117e9ea382b199c140ee0f05fbf9defd0", + "0x99272db5353e13c18b711d99d3a8f36ba459f747", + "0x3566f9562d1bc28df6c5dc744ab40ef11c56e4a5", + "0xef8df6d246cc9802ebf5afd55e77df152497fd7f", + "0x64bf8d9a93a5642ca93d98b5db88b2cc953c8426", + "0x5a6a84fb9063af1d83d0ac4809697a40715a1530", + "0xa9a3266f73d629c19189f461ac8ca42801b2288c", + "0xd5df3f5022572f461459fc62dbbfaa54191fc551", + "0xc971c4e2c7c2eac9a8358f6b9c3b923a93009f8f", + "0xb2e1462847e6244f9931915ea2294005643b4861", + "0x21339e2ce5ce1d7a19a28e774513619c0c6259da", + "0xc793ee64e6ac6239c527fd041a78a8fcaa245e4f", + "0xba6e1c26be2f8b46d9e7ab7573b99921ee81acf5", + "0x29e4c293963b6767755a84726a41d05117f16b7a", + "0x4acb075efd8540850d0a86c156e2c7778022a9ea", + "0xa5a44fafdddfd87038549fefb6c65fff8c59317e", + "0x228f308e90c36ef1acee0bec99061f9de65dbcdd", + "0xb5196c5a415d26672e9392d1fd9a37d43a9089b2", + "0x20429f7a5689c86a0f9a93124efa5cff37574dbf", + "0x5c0b7a237c91f28881afd7e0ccb1d33937ac3271", + "0x6543c99d0e073c140fd08a741c6cfdcd1449da94", + "0x770ab2db2aad19fde1ce844d159624a6476438c8", + "0x026b727b60d336806b87d60e95b6d7fad2443dd6", + "0xdbeb3b980ef88e9f5e59c8c9bb4d261d6736d0c4", + "0xc624434420f6cbe835d6358a8223b78432773ced", + "0x64c5c700e87b6485f51f096a8d06fab8084c8632", + "0x08e3f287adba42a26904919917bc7907f1f0df18", + "0x2e57674ea14fa08a6dda865dd139ce3924ab5951", + "0xcee0feb4b08bad3e86bdc3f01a5cdd9e7ca72427", + "0x2619c03753bbfebfe2a5b4b3b7ca6d1a042af9ce", + "0x8b580433568e521ad351b92b98150c0c65ce69b7", + "0x28d604a4205549ea2510d03f2addc673ded2187f", + "0xf60581c6dba9a2bd660b7a83f73705a5788158b6", + "0x1ee8e6a0e949ecab1f66636601d6f36488f16b78", + "0xc34d7c4ddeafb22f22a482a71676e00edc58790a", + "0x2812b1e084a0214cc15f0c873f60514c0902ff8a", + "0xe3dd2e59f26f9793f50183c1c405c0134b638c2d", + "0x0bb5e2eab6cb24c40392783847e23e760b8b986b", + "0x255f7d91b2dddabbe044c64840460a1b7285ad5f", + "0xb3bcaee28ecd97745737e756cf1bafed9dbca88d", + "0xe5caf4d7cbc6b80ae5fd072ab17aa4e91a5dd495", + "0xcc3cb5c01a3cdcd5eb8ebf87e2ec088147bada8a", + "0xfa2199d17b5fae567bf82a0806921a20ddffe8d8", + "0x8b577d9f981da6fc6e33de495a1465ee302f67a5", + "0x8f791f061d7f36dc07de081ad88f87d71be1585e", + "0x7a749c38f16388085e3e2356d7a074f18117d780", + "0xd2bc5cb641ae6f7a880c3dd5aee0450b5210be23", + "0xc163041d404e7657530491577665e40da84c9bd7", + "0x1375847014ba64517210cbfe185808232cf45d4a", + "0x8f51dc0791cddddce08052fff939eb7cf0c17856", + "0x9f75582d2be13b5ee454161ee394daada8b39efa", + "0x302e2a0d4291ac14aa1160504ca45a0a1f2e7a5c", + "0x11d86e90aba195ca20905ab2d3745ed9faad5a2d", + "0x4461eabec259e164ad5da873d5fc4c0e1fe8e6b5", + "0xcbd4d0241481b49158077e8833afdcaec7d9d804", + "0xdfbecc0b4aef80b96da27ab483feb0892472eac2", + "0x6c19c7ee70a280693199ffd79daa7d114bbfa898", + "0xe73a198e7c07c418d7dcfd42f5e953074abbd125", + "0x7d03c5c37f77fd01211334b9115ca108c84e8f3b", + "0xbad8bcc9eb5749829cf12189fdd5c1230d6c85e8", + "0x76a6d08b82034b397e7e09dae4377c18f132bbb8", + "0xd0bfb40f057322ff734a75cbe2f79b9e5c7e4cb3", + "0xe04885c3f1419c6e8495c33bdcf5f8387cd88846", + "0x87690be28b65f13394741c2c2be5a6bdb0505039", + "0xd26a3f686d43f2a62ba9eae2ff77e9f516d945b9", + "0xbc5b552641e5d203f0a6c230aa9dc14da7450053", + "0xca3589b6dc6b6ae9da653b82b5cf1dd2806db087", + "0xf4c6a5df9050b15a21aabccbc84ccb31fbdc0846", + "0xd6b97e042d03edbdc100eb55fbe43eb75f2e3036", + "0x2c8467da8b7b3d0a7e3886f6cb6697c49571ff66", + "0xd9bb77e8a0095ba2b3c5649d21ea91221e010abc", + "0xd662fa474c0a1346a26374bb4581d1f6d3fb2d94", + "0xd714dd60e22bbb1cbafd0e40de5cfa7bbdd3f3c8", + "0x1df428833f2c9fb1ef098754e5d710432450d706", + "0xcf61ebd3613684a53e48ee85d8fbc80c5156c479", + "0x67243d6c3c3bdc2f59d2f74ba1949a02973a529d", + "0x03f11c7a45ba8219c87f312eecb07287c2095302", + "0x0cb27e883e207905ad2a94f9b6ef0c7a99223c37", + "0x7b8b83e68c73aa4f00e6ed1a505de15147ad5764", + "0x83ab8e31df35aa3281d630529c6f4bf5ac7f7abf", + "0xff16d64179a02d6a56a1183a28f1d6293646e2dd", + "0xced608aa29bb92185d9b6340adcbfa263dae075b", + "0x1c9f765c579f94f6502acd9fc356171d85a1f8d0", + "0x05a1ff0a32bc24265bcb39499d0c5d9a6cb2011c", + "0xd1e19c472bf71fcb1016705d2d4cda041bbf0a06", + "0x303a6b190768f91c5823d24c267fe1778ac6c56a", + "0x516cafd745ec780d20f61c0d71fe258ea765222d", + "0x7136fbddd4dffa2369a9283b6e90a040318011ca", + "0xe4b420f15d6d878dcd0df7120ac0fc1509ee9cab", + "0x843a3c4ed93fb1f1335d5d174745551468106715", + "0x4286d9da0d8085b8a7a34fa49a87b900845cc2f8", + "0x84674aa65cc7734f12b690ce46aec1027b434211", + "0xd705eab54190c7943115607f2b7573e115a413a0", + "0x644b63e356291d549ceae65c8be6fe2f9ad7dcd6", + "0xaa163c47065c22d17ed1c47e3e244337d2056c17", + "0x7e1b9a73a1deaa3fdfaf80a3c3a545936d79eda5", + "0xf145929a2f094840a797851cd306ae70c2b51986", + "0x6379828b3c5acdc2badc6bbca10357fb0e36aeab", + "0x438615976c27b2b44f57ced3ac73b5ac113b8730", + "0xf54f4815f62ccc360963329789d62d3497a121ae", + "0x4fd6b3204a6ab48978018b25821682f090840333", + "0xe31bc121ef5b129a01b0f22ed2b214122c4abb3e", + "0x4e934aa13be79944e5cb53257c41a3798ad221c8", + "0x4339769e5d64228a063a19ea5244633caeeccdaf", + "0x2dcd860489cd099fb966d1729f890b8c5c997908", + "0xd90a9ab5fee2c5d3d4cd1fd508ac6e1b88c7315e", + "0x6f95e0fe96c1cfb979dc5c6528d4c50b13c9f52c", + "0x9bdf2c3bb976a6072dd287dac8e762e4c7760ef8", + "0x19b4effb433abacca77e79c7e7b3a33cc2996c5c", + "0x6d92b4284e31a0e30bceecab483e058a0089a29f", + "0xc003a79dc66c11e2567f8ae8493116abed6a67a0", + "0x4638349a09683bcebfc3c62c3dbe41b4b70e407b", + "0x47887e3695cae28f028772082d88598cd07bef12", + "0xd592d65f52db0323a93a929462a0f63b540cb324", + "0xa25211b64d041f690c0c818183e32f28ba9647dd", + "0x7650c86ba29782182e4b111f8daa8de8a3c8e22d", + "0x06582c5cd9ebe65982850f506bc9acb9b252e478", + "0xb548e7b80d321cc904cd8a2d9f774c59d96d83f7", + "0xcb3af325e2d0bafc3f082dcc6501f0140f4315ce", + "0x4c71f7b3e2f5140e933420b65459430c6eb368dc", + "0x2afba221c12c35cb25a27966dbd5e3770e6194e5", + "0x75de9f13184a3dd1cf32843fe2db973e275b035e", + "0x595c51223860baf322837269d69dc76016c6eb1d", + "0xb067c8705d9b59fcc73b3abd11d3aed36172aee3", + "0xdd31db93082a3a71b98d37ba26230f8734bd63c3", + "0x0ea26051f7657d59418da186137141cea90d0652", + "0xa906c85b7e809b79c5e69d485693b44d65b1b252", + "0x22300aadf0cce33a4b993e5d2a1bb24409bab8e1", + "0xc2fb4b3ea53e10c88d193e709a81c4dc7aec902e", + "0x86213f1cf0a501857b70df35c1cb3c2ecf112844", + "0x7899d9b1181cbb427b0b1be0684c096c260f7474", + "0x6ab7b4550698fe1af0c7cd9c1ed69eb383c48257", + "0xa31895c358d899030a1eb78feaadf28c8000cf47", + "0x03d8ac6b92aac24549eb583b969d93bc49f9ddb3", + "0x6718c0b9061159823440abf4635707b2ed8e5ca8", + "0xc78a95019c52ad9856aa764d6908e88d5b7930ee", + "0x2b88fd6240e0ce71e3048b612088e76ab8d7d634", + "0xc8b0d32bc09fb11c12c82582825c1e6b624822b8", + "0xb749a586080436e616f097f193ba9cb6a25e7ea6", + "0xf3ad97364bccc3ea0582ede58c363888f8c4ec85", + "0x63c3329720b993dec8af0018fb083dcba94e49e5", + "0x99c9bc20d9f57a0c19136e10987fb234abdf3a5c", + "0x7986debcbc2709435461cbe6e0d73f62c19bfa95", + "0x5833869fdeb4d371b854d7474f5f84b43320fd05", + "0x01242a2e4f27b42d564d3668a58d98baa751b3ce", + "0x986e92868a27548a31e88f7692e746cd7e86f39a", + "0xaeb99a255c3a243ab3e4f654041e9bf5340cf313", + "0x8270a0febba70899419e76a98bf2b5dc15fe2ff4", + "0x0d0c0941e2578da2b9e2ad03619615f7eebc48f7", + "0x7c1e9430655963129a0b6edecd8398c06429209f", + "0x48e206fd64ddbb9714be058ca6ea6f1479515624", + "0xe7a8dea3c2521a883d01e1b714b4480e64322462", + "0x8bb2884ee943111aa5119a36b30085a15a66c972", + "0x2399a1758afd2e061134b78ad1965e4204dbc0b8", + "0x4059f3c0064cd380276de8dbab6935005535eed6", + "0x7df96b926f4e321a2358bb8d9ecaba88fe7ff9d5", + "0x9eca7b82e857e92b05b6c7d904e5a26b4b020687", + "0xfe324b463ba927af7d08c34fd4abbd267b133ef0", + "0x21fa7f8238a84565dafc7681eda644009ca15ae7", + "0x092cff73c77a9de794d25b0088ded0e430733dbb", + "0x0a10998913b2e1786b7d0e376611781b28387cc4", + "0xd388aa414e0788f5d27fb8f2cc3f1dadd7b3b507", + "0x3bb9ef68c0e8a291f7730bb6da37ad682331f380", + "0xd164572b07a7a022facd4b0a63a72c9280ad78e2", + "0x63c3774531ef83631111fe2cf01520fb3f5a68f7", + "0x51f956b281b282fceb2635f295200157a22b920b", + "0x5c05740df496ddc881642566c431b88bdf60842e", + "0x09988e9aeb8c0b835619305abfe2ce68fea17722", + "0x54becc7560a7be76d72ed76a1f5fee6c5a2a7ab6", + "0x92ed343af03bae63a7ac938edf570084a3392742", + "0x775af9b7c214fe8792ab5f5da61a8708591d517e", + "0xb170a41f2523220a12f84f17a54bd31953d98027", + "0x461acd846b4cc249b96242f1ab7c72a39d94747c", + "0xfc9265a28f66cf4561d74a4e25d7bbd3f482b8e6", + "0x3a2fac2ab3cf4bc342910eac744cc68c8b9a69bf", + "0xc6e70206e0ab82d82933339b820feb124ec7ec5c", + "0x924657b110248cc5456562232351c49f795914c9", + "0x7bc48221928f11184b376da7a57650768dfd3332", + "0x23c0c5e0d894d006e4fe4520b6c3d91b7f9ef7ab", + "0x1e90474d2e83e7b7dd45553156beb316845e66a4", + "0x9f000bfb33b0b63fce685b538b1a8af079b57d93", + "0x99e94142353411264731105fe38ff02dfe1f3c3a", + "0xb22981ba3fe1de2325935c91a3b717168fb86714", + "0xa61ed6d962af39adda5c405ce76f625b5c3f81dd", + "0x19d8da2674e8a025154153297ea3ab918debf96d", + "0x5cc2ec9378e4fd3e5b91a6fa338edcc8edd36ff8", + "0xbd4d5116d4795fd6f785f524c4dc9f28bc5ab308", + "0x44571d865d879ba75d8eabb4a08c01cc3fc36d3f", + "0xca85460d23bfb2e0079bab5aac84921d9d0762a4", + "0xfa9b7d81a8fcebe6e0ce2938963db2ccd3cd178f", + "0x41b0b75802b25fbc14e0157f9341473843c28e1e", + "0xacdbb883880850b7528edc58ce506d10fa5205c6", + "0xde0e98f0ffb36ec69df57b8cc7ac886f506e9ae6", + "0x4ef22a7356d96dbf95a7fdead4a196a668e75b38", + "0x7d2e4d645c0acc5a6bf596b612cab351864f4090", + "0xa64f2228ccec96076c82abb903021c33859082f8", + "0xbaba775a0400a5e442335ceaa4820edb1ded8f73", + "0xd6fcd2f85fe975bb9b0f3c1b1c6802bb09d33e43", + "0xc583789751910e39fd2ddb988ad05567bcd81334", + "0x745f933c33ab89d8f8437eacf176a2c8c0dd63a0", + "0x222cf246a3d56d61030ca49f5e6ffd6c20c3dc4f", + "0x38b826a4426a0d4d9b4377ac57c9af0308281c5d", + "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429", + "0xa9d20b435a85faaa002f32d66f7d21564130e9cf", + "0x02c6e0a15a2a9ad274a76dfff21a4df4e7e9a4a4", + "0xd034fd34eaee5ec2c413c51936109e12873f4da5", + "0xe3f4f3ad70c1190ec480554bbc3ed30285ae0610", + "0x1ddc50a8b8ef07c654b4ace65070b0e7acff622b", + "0x884ff907d5fb8bae239b64aa8ad18ba3f8196038", + "0x2a81c13f9366395c8fd1ea24912294230d062db3", + "0xa43821674ff3836bf8d22e25d0243278a6263612", + "0x396796429a9aeb72a7584711830a550d31ab653c", + "0xff9b563140952fb7e3e5552f1a5068b637f0de0a", + "0x756bd520e6d52ba027e7a1b3cd59f79ab61dfc34", + "0xfaa806320ca25e7621690152fc83b4257aa197ff", + "0x5fa5129d1ca28e108f990fe9b588f0a256c07ab8", + "0xf7c5a0a318960a961ae4a138403b25be10eb9cba", + "0x3524558a96ae7959dcf98ca399547fb35d876193", + "0x74fa01a5d0ef8039f1e14f4d4c8f90e8602e07b4", + "0xc61288821b4722ce29249f0ba03b633f0be46a5a", + "0x1d3bf13f8f7a83390d03db5e23a950778e1d1309", + "0xc27f0966685e7346ea338279be1d7c2929980fc5", + "0x9094d2ef481d704787bf891c15f57e591cc5f54f", + "0xbdcd766838b62da598b45b73b5df9077f7831328", + "0x22c39679ca3dddfa9b2c3fe8583299ffe6908991", + "0xbb4848201915534cbd58465f2318749ceb9b2b8e", + "0x966a805a38f13c45cf757673ea48e8b9f066c024", + "0x17240b6517e9279970c0e4e2bc04bb2b6eacb25a", + "0x0d5f8c55944dc8900ac9bf34d9d839749fbc951f", + "0x65e9cf77a699e8d571e5dce7cc29988a1911407d", + "0xc9fca54d2a9476349fc2ff65ecebf5f1ff0efcb1", + "0x5621a7ec78d9e80e8d5afaa6e28bef9e1747139d", + "0xf94495d5d91e9a4bb52f7dd7c19e1231332bf45f", + "0x4986ce0eb00cade9450aaf7edb5bc33a1c83ed87", + "0x104a851a9156205d40d06d7b71e2df252ea46d01", + "0x02d60fd1ffb28b07b4164566e0febf01955a9391", + "0x13da265ca1b475d9893b60e84ef8980734a8d040", + "0xb8784a7da592c7e0190939d2d6f3c8d9df1c69ad", + "0xb3a23e56cb62ff06186afbd5f68de2bd1cd3f5b3", + "0x9e602c1920443f01cb100a57a7f894df8eb42f66", + "0x7e651f5f597436cd0fa941f5ff2cd45ef3f2fda8", + "0x597dc4159a4b85c086c3c679a0b6c8fe2836886f", + "0x7fbde8b27d2b4f164b66f2a9dc02bbd6697e5b19", + "0xcba711bef21496cfd66323d9aea8c8efd0f43e9d", + "0xdfbaeef21396bf205d4b7d23345155489072cf9b", + "0x3b981fa5dd50237dab6f96a417a6690b6f20fcc4", + "0xcddf772f8a3295c89dc37510e16e360ee2d29789", + "0x002b5dfb3c71e1dc97a2e5a0a7f69f3e7b83f269", + "0x8bfcf8cb383149d4ef37e7a609cec195cdcbe099", + "0xa515f7fb260095eebc860425493b8761b4fc9abd", + "0xaa95ca26c92b0634df7a1a1504f579f13bfb7f9d", + "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", +} + + +def upgrade(): + epoch = 6 + # INFO: remember to checksum addresses :) + checksum_addresses = [to_checksum_address(address) for address in GUEST_LIST] + + update_uniqueness_quotients_query = """\ + UPDATE uniqueness_quotients + SET score = '1.0' + WHERE epoch = :epoch + AND score = '0.01' + AND user_id IN (SELECT id FROM users WHERE address IN :addresses); + """ + + session = op.get_context().bind + + session.execute( + sa.text(update_uniqueness_quotients_query), + {"epoch": epoch, "addresses": tuple(checksum_addresses)}, + ) + + session.commit() + + +def downgrade(): + pass diff --git a/backend/tests/modules/common/test_constants.py b/backend/tests/modules/common/test_constants.py new file mode 100644 index 0000000000..e11e552ed4 --- /dev/null +++ b/backend/tests/modules/common/test_constants.py @@ -0,0 +1,26 @@ +from app.constants import GUEST_LIST, TIMEOUT_LIST_NOT_MAINNET, TIMEOUT_LIST + + +def test_addresses_are_lowercase(): + """ + NOTE: + It might seem like a silly test, but it's important to + ensure that the addresses are always in lowercase. + For past couple of allocation windows we struggled with + issues in some ways related to this. + """ + + for address in GUEST_LIST: + assert ( + address.lower() == address + ), f"Guest list address {address} is not lowercase" + + for address in TIMEOUT_LIST: + assert ( + address.lower() == address + ), f"Timeout list address {address} is not lowercase" + + for address in TIMEOUT_LIST_NOT_MAINNET: + assert ( + address.lower() == address + ), f"Timeout list not-mainnet address {address} is not lowercase" diff --git a/backend/tests/modules/uq/test_gp_stamps.py b/backend/tests/modules/uq/test_gp_stamps.py new file mode 100644 index 0000000000..d74c61bc32 --- /dev/null +++ b/backend/tests/modules/uq/test_gp_stamps.py @@ -0,0 +1,78 @@ +import json +from app.modules.user.antisybil.core import ( + _apply_gtc_staking_stamp_nullification, + _has_guest_stamp_applied_by_gp, +) +from app.infrastructure.database.models import GPStamps +from datetime import datetime, timedelta, timezone + + +# They are not complete stamps, but only the fields we need. +ten_days_ago = datetime.now(timezone.utc) - timedelta(days=10) +in_ten_days = datetime.now(timezone.utc) + timedelta(days=10) +now = datetime.now(timezone.utc) +ten_days_ago_str = ten_days_ago.strftime("%Y-%m-%dT%H:%M:%S.%fZ") +in_ten_days_str = in_ten_days.strftime("%Y-%m-%dT%H:%M:%S.%fZ") + +t_valid_stamp = [ + { + "credential": { + "issuanceDate": ten_days_ago_str, + "expirationDate": in_ten_days_str, + "credentialSubject": {"provider": "AllowList#OctantFinal"}, + }, + }, + { + "credential": { + "issuanceDate": ten_days_ago_str, + "expirationDate": in_ten_days_str, + "credentialSubject": {"provider": "BeginnerCommunityStaker"}, + }, + }, +] + +t_expired_stamp = [ + { + "credential": { + "issuanceDate": ten_days_ago_str, + "expirationDate": ten_days_ago_str, + "credentialSubject": {"provider": "AllowList#OctantFinal"}, + }, + }, + { + "credential": { + "issuanceDate": ten_days_ago_str, + "expirationDate": ten_days_ago_str, + "credentialSubject": {"provider": "BeginnerCommunityStaker"}, + }, + }, +] + + +def test_has_guest_stamp_applied_by_gp(): + valid_stamps = GPStamps( + user_id=1, score=100, stamps=json.dumps(t_valid_stamp), expires_at=in_ten_days + ) + assert _has_guest_stamp_applied_by_gp( + valid_stamps, now + ), "We should consider the stamp if it's not expired" + + assert ( + _apply_gtc_staking_stamp_nullification(100, valid_stamps, now) == 100 - 0.673 + ), "We should remove the score associated with GTC staking stamps" + + +def test_expired_stamps(): + expired_stamps = GPStamps( + user_id=1, + score=100, + stamps=json.dumps(t_expired_stamp), + expires_at=ten_days_ago, + ) + assert not _has_guest_stamp_applied_by_gp( + expired_stamps, now + ), "We should not consider the stamp if it's expired" + + assert ( + _apply_gtc_staking_stamp_nullification(100, expired_stamps, now) == 100 + ), "We should not remove the score associated with GTC staking stamps" diff --git a/backend/tests/modules/user/events_generator/test_unify_deposit_balances.py b/backend/tests/modules/user/events_generator/test_unify_deposit_balances.py index 1417e59f1f..e38721c2b4 100644 --- a/backend/tests/modules/user/events_generator/test_unify_deposit_balances.py +++ b/backend/tests/modules/user/events_generator/test_unify_deposit_balances.py @@ -4,7 +4,7 @@ from app.engine.user.effective_deposit import DepositEvent, EventType, DepositSource from app.modules.user.events_generator.core import unify_deposit_balances -from tests.helpers.constants import TWENTY_FOUR_HOURS_PERIOD +from tests.helpers.constants import TWENTY_FOUR_HOURS_PERIOD, FIFTEEN_MINUTES_PERIOD @pytest.mark.parametrize( @@ -234,23 +234,7 @@ def test_unify_deposit_balances( Test the unify_deposit_balances function with various event orders and types. """ result = unify_deposit_balances(events, TWENTY_FOUR_HOURS_PERIOD) - assert len(result) == len( - expected - ), "Number of events in result does not match expected." - for r, e in zip(result, expected): - assert ( - r.deposit_before == e.deposit_before - ), f"deposit_before mismatch: {r.deposit_before} != {e.deposit_before}" - assert ( - r.deposit_after == e.deposit_after - ), f"deposit_after mismatch: {r.deposit_after} != {e.deposit_after}" - assert r.amount == e.amount, f"amount mismatch: {r.amount} != {e.amount}" - assert r.type == e.type, f"type mismatch: {r.type} != {e.type}" - assert r.source == e.source, f"source mismatch: {r.source} != {e.source}" - assert r.user == e.user, f"user mismatch: {r.user} != {e.user}" - assert ( - r.timestamp == e.timestamp - ), f"timestamp mismatch: {r.timestamp} != {e.timestamp}" + _validate(result, expected) @pytest.mark.parametrize( @@ -433,23 +417,7 @@ def test_unify_deposit_balances( ) def test_unify_deposit_balances_with_grace_periods_scenarios(events, expected): result = unify_deposit_balances(events, TWENTY_FOUR_HOURS_PERIOD) - assert len(result) == len( - expected - ), "Number of events in result does not match expected." - for r, e in zip(result, expected): - assert ( - r.deposit_before == e.deposit_before - ), f"deposit_before mismatch: {r.deposit_before} != {e.deposit_before}" - assert ( - r.deposit_after == e.deposit_after - ), f"deposit_after mismatch: {r.deposit_after} != {e.deposit_after}" - assert r.amount == e.amount, f"amount mismatch: {r.amount} != {e.amount}" - assert r.type == e.type, f"type mismatch: {r.type} != {e.type}" - assert r.source == e.source, f"source mismatch: {r.source} != {e.source}" - assert r.user == e.user, f"user mismatch: {r.user} != {e.user}" - assert ( - r.timestamp == e.timestamp - ), f"timestamp mismatch: {r.timestamp} != {e.timestamp}" + _validate(result, expected) @pytest.mark.parametrize( @@ -493,7 +461,101 @@ def test_unify_deposit_balances_with_grace_periods_scenarios(events, expected): ) def test_unify_deposit_does_not_remove_when_out_of_the_grace_period(expected): result = unify_deposit_balances(expected, TWENTY_FOUR_HOURS_PERIOD) - assert len(result) == len(expected) + _validate(result, expected) + + +@pytest.mark.parametrize( + "events, expected", + [ + ( + [ + DepositEvent( + user="0x123", + type=EventType.LOCK, + timestamp=1737366360, + amount=0, + deposit_before=10000000000000000000000, + source=DepositSource.OCTANT, + ), + DepositEvent( + user="0x123", + type=EventType.UNLOCK, + timestamp=1737382716, + amount=3000000000000000000000, + deposit_before=10000000000000000000000, + source=DepositSource.SABLIER, + ), + DepositEvent( + user="0x123", + type=EventType.UNLOCK, + timestamp=1737382764, + amount=3000000000000000000000, + deposit_before=7000000000000000000000, + source=DepositSource.SABLIER, + ), + DepositEvent( + user="0x123", + type=EventType.LOCK, + timestamp=1737382884, + amount=6000000000000000000000, + deposit_before=0, + source=DepositSource.OCTANT, + ), + DepositEvent( + user="0x123", + type=EventType.UNLOCK, + timestamp=1737382968, + amount=4000000000000000000000, + deposit_before=4000000000000000000000, + source=DepositSource.SABLIER, + ), + DepositEvent( + user="0x123", + type=EventType.LOCK, + timestamp=1737383712, + amount=4000000000000000000000, + deposit_before=6000000000000000000000, + source=DepositSource.OCTANT, + ), + ], + [ + DepositEvent( + user="0x123", + type=EventType.LOCK, + timestamp=1737366360, + amount=0, + deposit_before=10000000000000000000000, + source=DepositSource.OCTANT, + ), + DepositEvent( + user="0x123", + type=EventType.UNLOCK, + timestamp=1737382716, + amount=3000000000000000000000, + deposit_before=10000000000000000000000, + source=DepositSource.SABLIER, + ), + DepositEvent( + user="0x123", + type=EventType.LOCK, + timestamp=1737382884, + amount=3000000000000000000000, + deposit_before=7000000000000000000000, + ), + ], + ), + ], +) +def test_unify_deposit_for_a_corner_case1(events, expected): + result = unify_deposit_balances(events, FIFTEEN_MINUTES_PERIOD) + + _validate(result, expected) + + +def _validate(result, expected): + assert len(result) == len( + expected + ), "Number of events in result does not match expected." for r, e in zip(result, expected): assert ( diff --git a/backend/v2/uniqueness_quotients/services.py b/backend/v2/uniqueness_quotients/services.py index 9f31ad3bda..374ebfb81c 100644 --- a/backend/v2/uniqueness_quotients/services.py +++ b/backend/v2/uniqueness_quotients/services.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +from datetime import datetime, timezone from decimal import Decimal from app.modules.user.antisybil.core import ( @@ -75,16 +76,17 @@ async def get_gitcoin_passport_score( user_address = to_checksum_address(user_address) stamps = await get_gp_stamps_by_address(session, user_address) + now = datetime.now(timezone.utc) # We have no information about the user's score if stamps is None: return 0.0 # We remove score associated with GTC staking - potential_score = _apply_gtc_staking_stamp_nullification(stamps.score, stamps) + potential_score = _apply_gtc_staking_stamp_nullification(stamps.score, stamps, now) # If the user is in the guest list and has not been stamped by a guest list provider, increase the score by 21.0 - if user_address in guest_list and not _has_guest_stamp_applied_by_gp(stamps): + if user_address in guest_list and not _has_guest_stamp_applied_by_gp(stamps, now): return potential_score + 21.0 return potential_score diff --git a/ci/argocd/contracts/uat.env b/ci/argocd/contracts/uat.env index d9341b3bb2..8b050d3a84 100644 --- a/ci/argocd/contracts/uat.env +++ b/ci/argocd/contracts/uat.env @@ -1,8 +1,8 @@ -BLOCK_NUMBER=7497637 +BLOCK_NUMBER=7552518 GLM_CONTRACT_ADDRESS=0x71432DD1ae7DB41706ee6a22148446087BdD0906 -AUTH_CONTRACT_ADDRESS=0xb2Fd30999060C106dA03eb8dFF30D7E404a581b7 -DEPOSITS_CONTRACT_ADDRESS=0xC35b4D9231144aE08598e3CcC9C2496F1e858e52 -EPOCHS_CONTRACT_ADDRESS=0xdC5A8fae5608bB49F584f5D11C9b56862C08E3C1 -PROPOSALS_CONTRACT_ADDRESS=0x93Ce86C64bd089399c3830D4364B30f07B4d4012 -WITHDRAWALS_TARGET_CONTRACT_ADDRESS=0x2c17c8C2AAc7efa5379a83AABcEa43B8E6f424be -VAULT_CONTRACT_ADDRESS=0x439D1fce728D068528E2626F376b38db8DA7F8a4 +AUTH_CONTRACT_ADDRESS=0xFA4b3BB4DB6A5F0A90E23BB52C4e99CE2eF80ceF +DEPOSITS_CONTRACT_ADDRESS=0x2F3aF862817077f16A6fb97be0722b6984bF0e6D +EPOCHS_CONTRACT_ADDRESS=0x4d2D27BA61bE0EA5659EEec48b0a313a85c7a669 +PROPOSALS_CONTRACT_ADDRESS=0xE924f3dd12193a45c6a5812f15B4C1a9E1F2A9Ec +WITHDRAWALS_TARGET_CONTRACT_ADDRESS=0x70De6294EF8E927FDDC3743A62DE089e5BA93d7D +VAULT_CONTRACT_ADDRESS=0x6348972EbAbe5B5648eFB32B72B8714BA7170B2F diff --git a/client/src/components/Home/HomeGridPersonalAllocation/ModalWithdrawEth/WithdrawEth/WithdrawEth.tsx b/client/src/components/Home/HomeGridPersonalAllocation/ModalWithdrawEth/WithdrawEth/WithdrawEth.tsx index 2e31737e41..e478621af9 100644 --- a/client/src/components/Home/HomeGridPersonalAllocation/ModalWithdrawEth/WithdrawEth/WithdrawEth.tsx +++ b/client/src/components/Home/HomeGridPersonalAllocation/ModalWithdrawEth/WithdrawEth/WithdrawEth.tsx @@ -1,6 +1,6 @@ import React, { FC } from 'react'; import { useTranslation } from 'react-i18next'; -import { useFeeData } from 'wagmi'; +import { useGasPrice } from 'wagmi'; import BoxRounded from 'components/ui/BoxRounded'; import Sections from 'components/ui/BoxRounded/Sections/Sections'; @@ -17,7 +17,7 @@ const WithdrawEth: FC = ({ onCloseModal }) => { const { i18n, t } = useTranslation('translation', { keyPrefix: 'components.home.homeGridPersonalAllocation.modalWithdrawEth', }); - const { data: feeData, isFetching: isFetchingFeeData } = useFeeData(); + const { data: gasPrice, isFetching: isFetchingGasPrice } = useGasPrice(); const { isAppWaitingForTransactionToBeIndexed, addTransactionPending } = useTransactionLocalStore( state => ({ addTransactionPending: state.addTransactionPending, @@ -66,9 +66,9 @@ const WithdrawEth: FC = ({ onCloseModal }) => { doubleValueProps: { cryptoCurrency: 'ethereum', dataTest: 'WithdrawEth__Section--estGasPrice', - isFetching: isFetchingFeeData, + isFetching: isFetchingGasPrice, showCryptoSuffix: true, - valueCrypto: BigInt(feeData?.gasPrice ?? 0), + valueCrypto: BigInt(gasPrice ?? 0), }, label: t('estimatedGasPrice'), },