From fffb6e702e27a2a2506506efaf386b45561a5ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Zi=C3=B3=C5=82ek?= Date: Mon, 20 Jan 2025 12:33:00 +0100 Subject: [PATCH 01/10] fix: estimated gas price taken from another hook --- .../ModalWithdrawEth/WithdrawEth/WithdrawEth.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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'), }, From a3a6bab315e799ee6f0e34bfc5f29d0c13ea1845 Mon Sep 17 00:00:00 2001 From: adam-gf Date: Tue, 21 Jan 2025 11:56:43 +0100 Subject: [PATCH 02/10] OCT-2329: Removes nonsybil addresses from timeout (epoch 6) (#635) ## Description Removes nonsybil addresses from timeout (epoch 6) & lists formatting fix --- backend/app/constants.py | 496 +++++++++--------- ...59a7_remove_addresses_from_timeout_list.py | 65 +++ .../tests/modules/common/test_constants.py | 26 + 3 files changed, 335 insertions(+), 252 deletions(-) create mode 100644 backend/migrations/versions/1361f75e59a7_remove_addresses_from_timeout_list.py create mode 100644 backend/tests/modules/common/test_constants.py diff --git a/backend/app/constants.py b/backend/app/constants.py index d62def0170..88d326d7fd 100644 --- a/backend/app/constants.py +++ b/backend/app/constants.py @@ -512,146 +512,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", @@ -679,7 +679,7 @@ "0xcee0feb4b08bad3e86bdc3f01a5cdd9e7ca72427", "0x2619c03753bbfebfe2a5b4b3b7ca6d1a042af9ce", "0x8b580433568e521ad351b92b98150c0c65ce69b7", - "0x28d604a4205549Ea2510d03f2aDDc673DEd2187f", + "0x28d604a4205549ea2510d03f2addc673ded2187f", "0xf60581c6dba9a2bd660b7a83f73705a5788158b6", "0x1ee8e6a0e949ecab1f66636601d6f36488f16b78", "0xc34d7c4ddeafb22f22a482a71676e00edc58790a", @@ -689,39 +689,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", @@ -738,8 +738,8 @@ "0x7136fbddd4dffa2369a9283b6e90a040318011ca", "0xe4b420f15d6d878dcd0df7120ac0fc1509ee9cab", "0x843a3c4ed93fb1f1335d5d174745551468106715", - "0x4286d9dA0d8085b8a7A34FA49A87b900845cC2f8", - "0x84674aA65cc7734f12b690cE46aeC1027B434211", + "0x4286d9da0d8085b8a7a34fa49a87b900845cc2f8", + "0x84674aa65cc7734f12b690ce46aec1027b434211", "0xd705eab54190c7943115607f2b7573e115a413a0", "0x644b63e356291d549ceae65c8be6fe2f9ad7dcd6", "0xaa163c47065c22d17ed1c47e3e244337d2056c17", @@ -773,91 +773,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", @@ -882,11 +882,11 @@ "0x5621a7ec78d9e80e8d5afaa6e28bef9e1747139d", "0xf94495d5d91e9a4bb52f7dd7c19e1231332bf45f", "0x4986ce0eb00cade9450aaf7edb5bc33a1c83ed87", - "0x104a851a9156205D40D06d7b71E2dF252eA46d01", - "0x02D60fD1FFb28B07B4164566e0FeBf01955a9391", - "0x13da265Ca1B475D9893B60e84eF8980734a8D040", - "0xb8784a7da592C7e0190939d2d6F3C8D9Df1c69ad", - "0xb3A23E56Cb62Ff06186Afbd5f68de2BD1cd3f5b3", + "0x104a851a9156205d40d06d7b71e2df252ea46d01", + "0x02d60fd1ffb28b07b4164566e0febf01955a9391", + "0x13da265ca1b475d9893b60e84ef8980734a8d040", + "0xb8784a7da592c7e0190939d2d6f3c8d9df1c69ad", + "0xb3a23e56cb62ff06186afbd5f68de2bd1cd3f5b3", "0x9e602c1920443f01cb100a57a7f894df8eb42f66", "0x7e651f5f597436cd0fa941f5ff2cd45ef3f2fda8", "0x597dc4159a4b85c086c3c679a0b6c8fe2836886f", @@ -921,15 +921,7 @@ "0xf5c2087877218aa979dd0e2e5108837199af44d2", "0x529dc928e67d8a43133d10769b308f1d5a629401", "0xf1bb436c29e46b1987bc825879ffc9c34ab97f99", - "0x826976d7c600d45fb8287ca1d7c76fc8eb732030", - "0x981e7512e87d2f7228d3f03b65950eb6a1b21bac", - "0x1d921dff757610fbdb0073479e12c0a07d382677", - "0xb6989f472bef8931e6ca882b1f875539b7d5da19", "0x839395e20bbb182fa440d08f850e6c7a8f6f0780", - "0x774c3ccfde30a5e7263e8d8ec80b3d419c13ddd3", - "0x5a1f55459c07432165a93eac188076d2ecbf6814", - "0x87f64272eb089a14dc5764b848e3488710b829ea", - "0x2f0642874d5651ba794f8e20774cf9452edc96e2", "0xc33f87697ef41e0e95e7a55d1ec8180f04088578", "0xcbc924183bc32d02746fa8d38843b5ce08662eb4", "0xdc9c5e34959ec3643af1e1d34a83d6b251aab1ef", @@ -939,8 +931,8 @@ "0xc4f91cdd498a30f8ed1dea3883cba314a7a2a022", "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", "0x051010142a0b9de7f0fd8fb31d085407287f6381", - "0xd1825Dd9a5e49791FB7961AC3c4170DeeD5710b4", - "0xBEa26DE685Ef828b60cA53b40Ecc9Bab35645fDF", + "0xd1825dd9a5e49791fb7961ac3c4170deed5710b4", + "0xbea26de685ef828b60ca53b40ecc9bab35645fdf", "0xa8776899d2601a59a94e3aa057af778b8647f85c", "0xe7eac2cb20079752875bc1c498ce53a5ed025ab9", "0x6e0ef43c2b5bda0e145033a4164d93f8d06d8538", 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/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" From fe0a8ceb2e3870d2145253a67090dda44bd6cfeb Mon Sep 17 00:00:00 2001 From: Housekeeper Bot Date: Wed, 22 Jan 2025 09:44:34 +0000 Subject: [PATCH 03/10] [CI/CD] Update uat.env contracts --- ci/argocd/contracts/uat.env | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ci/argocd/contracts/uat.env b/ci/argocd/contracts/uat.env index 842831d991..02caacbebc 100644 --- a/ci/argocd/contracts/uat.env +++ b/ci/argocd/contracts/uat.env @@ -1,8 +1,8 @@ -BLOCK_NUMBER=7446089 +BLOCK_NUMBER=7546160 GLM_CONTRACT_ADDRESS=0x71432DD1ae7DB41706ee6a22148446087BdD0906 -AUTH_CONTRACT_ADDRESS=0x6929e60755d9E53bd9136003646F91b224548b36 -DEPOSITS_CONTRACT_ADDRESS=0x0fbf5f094B8E3C7EB136aD83d2F322d7C506217b -EPOCHS_CONTRACT_ADDRESS=0x10E47B1fF29D23fA52a0B14053C02Bc01D47bf24 -PROPOSALS_CONTRACT_ADDRESS=0x8d2B677e9D7bFb1512e48ECAA89Dd554807c83F5 -WITHDRAWALS_TARGET_CONTRACT_ADDRESS=0xe0458eD4e638C7DEcF929379565ddcdf5B439A50 -VAULT_CONTRACT_ADDRESS=0xc0f1C4CE40F528cA346287C6F5f46491B5Ef901d +AUTH_CONTRACT_ADDRESS=0x850DbF5C2862c607e079C3321AB097D5e8FFF6cF +DEPOSITS_CONTRACT_ADDRESS=0x72ED3602b7271FB336d48F01DaEBE94c49626635 +EPOCHS_CONTRACT_ADDRESS=0xE39b379407d8c1d6aD466abDB6091742A48659a4 +PROPOSALS_CONTRACT_ADDRESS=0x175477EC619331E3ec5AA577A66DD9473F55C7B3 +WITHDRAWALS_TARGET_CONTRACT_ADDRESS=0x4ea8cd6b0a0A1f7993F6eA810f595fC13092a0a1 +VAULT_CONTRACT_ADDRESS=0x9013a0CB4D0F6B3b92f89fBd139f9D4e0eCB0592 From d51c4274a05972621d2a759bf5c7a3d75482495d Mon Sep 17 00:00:00 2001 From: adam-gf Date: Wed, 22 Jan 2025 14:59:47 +0100 Subject: [PATCH 04/10] Fixes handling of expired stamps + adds migration for ommited users --- backend/app/modules/user/antisybil/core.py | 13 +- ...14385_bump_uq_score_for_addresses_with_.py | 857 ++++++++++++++++++ backend/tests/modules/uq/test_gp_stamps.py | 53 ++ backend/v2/uniqueness_quotients/services.py | 4 +- 4 files changed, 924 insertions(+), 3 deletions(-) create mode 100644 backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py create mode 100644 backend/tests/modules/uq/test_gp_stamps.py diff --git a/backend/app/modules/user/antisybil/core.py b/backend/app/modules/user/antisybil/core.py index c81e9f7f4e..7cd90a9073 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 @@ -24,12 +25,14 @@ def determine_antisybil_score( potential_score = _apply_gtc_staking_stamp_nullification(score.score, score) + now = datetime.now(timezone.utc) + 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,12 +49,18 @@ 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 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..c1c24289d0 --- /dev/null +++ b/backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py @@ -0,0 +1,857 @@ +"""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", +} + + +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/uq/test_gp_stamps.py b/backend/tests/modules/uq/test_gp_stamps.py new file mode 100644 index 0000000000..cedeb68bf1 --- /dev/null +++ b/backend/tests/modules/uq/test_gp_stamps.py @@ -0,0 +1,53 @@ +import json +from app.modules.user.antisybil.core import _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"}, + }, + } +] + +t_expired_stamp = [ + { + "credential": { + "issuanceDate": ten_days_ago_str, + "expirationDate": ten_days_ago_str, + "credentialSubject": {"provider": "AllowList#OctantFinal"}, + }, + } +] + + +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" + + +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" diff --git a/backend/v2/uniqueness_quotients/services.py b/backend/v2/uniqueness_quotients/services.py index 9f31ad3bda..3c5de5e73a 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,6 +76,7 @@ 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: @@ -84,7 +86,7 @@ async def get_gitcoin_passport_score( potential_score = _apply_gtc_staking_stamp_nullification(stamps.score, stamps) # 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 From 355cebd68ed1c6ffc56c7b3194ce764490b8848b Mon Sep 17 00:00:00 2001 From: Housekeeper Bot Date: Thu, 23 Jan 2025 07:35:08 +0000 Subject: [PATCH 05/10] [CI/CD] Update uat.env contracts --- ci/argocd/contracts/uat.env | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ci/argocd/contracts/uat.env b/ci/argocd/contracts/uat.env index 02caacbebc..8b050d3a84 100644 --- a/ci/argocd/contracts/uat.env +++ b/ci/argocd/contracts/uat.env @@ -1,8 +1,8 @@ -BLOCK_NUMBER=7546160 +BLOCK_NUMBER=7552518 GLM_CONTRACT_ADDRESS=0x71432DD1ae7DB41706ee6a22148446087BdD0906 -AUTH_CONTRACT_ADDRESS=0x850DbF5C2862c607e079C3321AB097D5e8FFF6cF -DEPOSITS_CONTRACT_ADDRESS=0x72ED3602b7271FB336d48F01DaEBE94c49626635 -EPOCHS_CONTRACT_ADDRESS=0xE39b379407d8c1d6aD466abDB6091742A48659a4 -PROPOSALS_CONTRACT_ADDRESS=0x175477EC619331E3ec5AA577A66DD9473F55C7B3 -WITHDRAWALS_TARGET_CONTRACT_ADDRESS=0x4ea8cd6b0a0A1f7993F6eA810f595fC13092a0a1 -VAULT_CONTRACT_ADDRESS=0x9013a0CB4D0F6B3b92f89fBd139f9D4e0eCB0592 +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 From d5fd75e24359c77aaa994036dd684630fc73035f Mon Sep 17 00:00:00 2001 From: adam-gf Date: Thu, 23 Jan 2025 10:05:07 +0100 Subject: [PATCH 06/10] Dont fail whole batch of multisigs when one is corrupted --- .../app/modules/facades/confirm_multisig.py | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) 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}") From 20871aac42f4da936d5b2921053226855aeedcac Mon Sep 17 00:00:00 2001 From: adam-gf Date: Thu, 23 Jan 2025 16:30:39 +0100 Subject: [PATCH 07/10] Filter out expired staking stamps aswell --- backend/app/modules/user/antisybil/core.py | 24 ++++++++++------ backend/tests/modules/uq/test_gp_stamps.py | 31 +++++++++++++++++++-- backend/v2/uniqueness_quotients/services.py | 2 +- 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/backend/app/modules/user/antisybil/core.py b/backend/app/modules/user/antisybil/core.py index 7cd90a9073..531a94e2b1 100644 --- a/backend/app/modules/user/antisybil/core.py +++ b/backend/app/modules/user/antisybil/core.py @@ -23,9 +23,8 @@ 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( @@ -65,13 +64,22 @@ def _has_guest_stamp_applied_by_gp(score: GPStamps, now: datetime) -> bool: 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/tests/modules/uq/test_gp_stamps.py b/backend/tests/modules/uq/test_gp_stamps.py index cedeb68bf1..d74c61bc32 100644 --- a/backend/tests/modules/uq/test_gp_stamps.py +++ b/backend/tests/modules/uq/test_gp_stamps.py @@ -1,5 +1,8 @@ import json -from app.modules.user.antisybil.core import _has_guest_stamp_applied_by_gp +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 @@ -18,7 +21,14 @@ "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 = [ @@ -28,7 +38,14 @@ "expirationDate": ten_days_ago_str, "credentialSubject": {"provider": "AllowList#OctantFinal"}, }, - } + }, + { + "credential": { + "issuanceDate": ten_days_ago_str, + "expirationDate": ten_days_ago_str, + "credentialSubject": {"provider": "BeginnerCommunityStaker"}, + }, + }, ] @@ -40,6 +57,10 @@ def test_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( @@ -51,3 +72,7 @@ def test_expired_stamps(): 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/v2/uniqueness_quotients/services.py b/backend/v2/uniqueness_quotients/services.py index 3c5de5e73a..374ebfb81c 100644 --- a/backend/v2/uniqueness_quotients/services.py +++ b/backend/v2/uniqueness_quotients/services.py @@ -83,7 +83,7 @@ async def get_gitcoin_passport_score( 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, now): From ae48e9e5962364548c60aa3ae8d12bcf27e9d49d Mon Sep 17 00:00:00 2001 From: adam-gf Date: Fri, 24 Jan 2025 11:52:52 +0100 Subject: [PATCH 08/10] Update timeout and allowlist --- backend/app/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/app/constants.py b/backend/app/constants.py index 88d326d7fd..667c7a319d 100644 --- a/backend/app/constants.py +++ b/backend/app/constants.py @@ -899,6 +899,7 @@ "0x8bfcf8cb383149d4ef37e7a609cec195cdcbe099", "0xa515f7fb260095eebc860425493b8761b4fc9abd", "0xaa95ca26c92b0634df7a1a1504f579f13bfb7f9d", + "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", } TIMEOUT_LIST = { @@ -929,7 +930,6 @@ "0x86e6b55bb954e1cfab567f9582e0fa580bb0290d", "0xfef75b27d4ae3d5228bcc2912f9cdceafe5f82e3", "0xc4f91cdd498a30f8ed1dea3883cba314a7a2a022", - "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", "0x051010142a0b9de7f0fd8fb31d085407287f6381", "0xd1825dd9a5e49791fb7961ac3c4170deed5710b4", "0xbea26de685ef828b60ca53b40ecc9bab35645fdf", From ac70c3116242957e7501319ab0bb929b08f5b23f Mon Sep 17 00:00:00 2001 From: adam-gf Date: Fri, 24 Jan 2025 11:55:23 +0100 Subject: [PATCH 09/10] Update timeout and allowlist for migration --- .../versions/e27e85614385_bump_uq_score_for_addresses_with_.py | 1 + 1 file changed, 1 insertion(+) 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 index c1c24289d0..f49dc0f5b0 100644 --- a/backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py +++ b/backend/migrations/versions/e27e85614385_bump_uq_score_for_addresses_with_.py @@ -827,6 +827,7 @@ "0x8bfcf8cb383149d4ef37e7a609cec195cdcbe099", "0xa515f7fb260095eebc860425493b8761b4fc9abd", "0xaa95ca26c92b0634df7a1a1504f579f13bfb7f9d", + "0x90c32e6b29794fd7f5bba2bbee74e924078b3f9b", } From e1460ed13519c8d5b7b31cbbbb2f34e1f7b620e0 Mon Sep 17 00:00:00 2001 From: Kacper Garbacinski <57113816+kgarbacinski@users.noreply.github.com> Date: Fri, 24 Jan 2025 14:38:24 +0100 Subject: [PATCH 10/10] OCT-2330: Fix computing effective deposit for Sablier (#636) ## Description ## Definition of Done 1. [ ] If required, the desciption of your change is added to the [QA changelog](https://www.notion.so/octantapp/Changelog-for-the-QA-d96fa3b411cf488bb1d8d9a598d88281) 2. [ ] Acceptance criteria are met. 3. [ ] PR is manually tested before the merge by developer(s). - [ ] Happy path is manually checked. 4. [ ] PR is manually tested by QA when their assistance is required (1). - [ ] Octant Areas & Test Cases are checked for impact and updated if required (2). 5. [ ] Unit tests are added unless there is a reason to omit them. 6. [ ] Automated tests are added when required. 7. [ ] The code is merged. 8. [ ] Tech documentation is added / updated, reviewed and approved (including mandatory approval by a code owner, should such exist for changed files). - [ ] BE: Swagger documentation is updated. 9. [ ] When required by QA: - [ ] Deployed to the relevant environment. - [ ] Passed system tests. --- (1) Developer(s) in coordination with QA decide whether it's required. For small tickets introducing small changes QA assistance is most probably not required. (2) [Octant Areas & Test Cases](https://docs.google.com/spreadsheets/d/1cRe6dxuKJV3a4ZskAwWEPvrFkQm6rEfyUCYwLTYw_Cc). --- .../app/modules/user/events_generator/core.py | 121 ++++++++-------- .../test_unify_deposit_balances.py | 134 +++++++++++++----- 2 files changed, 161 insertions(+), 94 deletions(-) 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/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 (