├── Ethos-Core ├── .gitattributes ├── .gitignore ├── .npmrc ├── .solcover.js ├── .vscode │ └── launch.json ├── LICENSE ├── bin │ └── contracts │ │ ├── CLVToken.abi │ │ ├── CLVToken.bin │ │ ├── CLVToken.json │ │ └── Token-solc-output.json ├── contracts │ ├── .vscode │ │ └── settings.json │ ├── ActivePool.sol │ ├── BorrowerOperations.sol │ ├── CollSurplusPool.sol │ ├── CollateralConfig.sol │ ├── DefaultPool.sol │ ├── Dependencies │ │ ├── Address.sol │ │ ├── AggregatorV3Interface.sol │ │ ├── BaseMath.sol │ │ ├── CheckContract.sol │ │ ├── IERC20.sol │ │ ├── IERC2362.sol │ │ ├── IERC2612.sol │ │ ├── IERC4626.sol │ │ ├── IMappingContract.sol │ │ ├── ITellor.sol │ │ ├── LiquityBase.sol │ │ ├── LiquityMath.sol │ │ ├── LiquitySafeMath128.sol │ │ ├── Ownable.sol │ │ ├── SafeERC20.sol │ │ ├── SafeMath.sol │ │ ├── TellorCaller.sol │ │ ├── UsingTellor.sol │ │ └── console.sol │ ├── GasPool.sol │ ├── HintHelpers.sol │ ├── Interfaces │ │ ├── IActivePool.sol │ │ ├── IBorrowerOperations.sol │ │ ├── ICollSurplusPool.sol │ │ ├── ICollateralConfig.sol │ │ ├── ICommunityIssuance.sol │ │ ├── IDefaultPool.sol │ │ ├── ILQTYStaking.sol │ │ ├── ILUSDToken.sol │ │ ├── ILiquityBase.sol │ │ ├── IPool.sol │ │ ├── IPriceFeed.sol │ │ ├── IRedemptionHelper.sol │ │ ├── ISortedTroves.sol │ │ ├── IStabilityPool.sol │ │ ├── ITellorCaller.sol │ │ └── ITroveManager.sol │ ├── LQTY │ │ ├── CommunityIssuance.sol │ │ └── LQTYStaking.sol │ ├── LUSDToken.sol │ ├── Migrations.sol │ ├── MultiTroveGetter.sol │ ├── PriceFeed.sol │ ├── Proxy │ │ ├── BorrowerOperationsScript.sol │ │ ├── BorrowerWrappersScript.sol │ │ ├── ERC20TransferScript.sol │ │ ├── LQTYStakingScript.sol │ │ ├── StabilityPoolScript.sol │ │ ├── TokenScript.sol │ │ └── TroveManagerScript.sol │ ├── RedemptionHelper.sol │ ├── SortedTroves.sol │ ├── StabilityPool.sol │ ├── TestContracts │ │ ├── ActivePoolTester.sol │ │ ├── BorrowerOperationsTester.sol │ │ ├── CDPManagerTester.sol │ │ ├── CommunityIssuanceTester.sol │ │ ├── DappSys │ │ │ └── proxy.sol │ │ ├── DefaultPoolTester.sol │ │ ├── Destructible.sol │ │ ├── ERC20Mock.sol │ │ ├── ERC4626.sol │ │ ├── EchidnaProxy.sol │ │ ├── EchidnaTester.sol │ │ ├── FunctionCaller.sol │ │ ├── LQTYStakingTester.sol │ │ ├── LUSDTokenCaller.sol │ │ ├── LUSDTokenTester.sol │ │ ├── LiquityMathTester.sol │ │ ├── LiquitySafeMath128Tester.sol │ │ ├── MockAggregator.sol │ │ ├── MockGovernance.sol │ │ ├── MockGuardian.sol │ │ ├── MockTellor.sol │ │ ├── NonPayable.sol │ │ ├── PriceFeedTester.sol │ │ ├── PriceFeedTestnet.sol │ │ ├── SortedTrovesTester.sol │ │ └── StabilityPoolTester.sol │ └── TroveManager.sol ├── hardhat.config.echidna.js ├── hardhat.config.js ├── hardhat.config.mainnet-fork.js ├── hardhatAccountsList100k.js ├── hardhatAccountsList2k.js ├── package.json ├── scripts │ ├── deployAndConnectTestnet.js │ └── set-version.js ├── secrets.js.template ├── slither.config.json ├── test-report.md ├── test │ ├── AccessControlTest.js │ ├── BorrowerOperationsTest.js │ ├── CollSurplusPool.js │ ├── CollateralConfigTest.js │ ├── ConnectContractsTest.js │ ├── DefaultPoolTest.js │ ├── FeeArithmeticTest.js │ ├── GasCompensationTest.js │ ├── HintHelpers_getApproxHintTest.js │ ├── LQTYIssuanceArithmeticTest.js │ ├── LQTYStakingFeeRewardsTest.js │ ├── LUSDTokenTest.js │ ├── LiquityMathTest.js │ ├── LiquitySafeMath128Test.js │ ├── OwnershipTest.js │ ├── PoolsTest.js │ ├── PriceFeedTest.js │ ├── ProxyBorrowerWrappersScript.js │ ├── SortedTrovesTest.js │ ├── StabilityPoolTest.js │ ├── StabilityPool_LQTYIssuanceTest.js │ ├── StabilityPool_RoundingErrors.js │ ├── StabilityPool_SPWithdrawalTest.js │ ├── TroveManagerTest.js │ ├── TroveManager_LiquidationRewardsTest.js │ ├── TroveManager_RecoveryModeTest.js │ ├── TroveManager_RecoveryMode_Batch_Liqudation_Test.js │ └── stakeDeclineTest.js ├── tests │ ├── accounts.py │ ├── helpers.py │ ├── simulation_helpers.py │ └── simulation_test.py ├── truffle-config.js ├── utils │ ├── BNConverter.js │ ├── deploymentGasAndBytecode.js │ ├── deploymentHelpers.js │ ├── hintExamples.js │ ├── mainnetDeploymentHelpers.js │ ├── makeAccounts.js │ ├── mathPlayground.js │ ├── oracleABIs.js │ ├── priceFeedInteractions.js │ ├── processGasOutput.js │ ├── proxyHelpers.js │ ├── testHelpers.js │ └── truffleDeploymentHelpers.js └── yarn.lock ├── Ethos-Vault ├── .env.example ├── .eslintrc.js ├── .gitignore ├── .husky │ └── pre-push ├── .prettierrc ├── .solhint.json ├── LICENSE ├── README.md ├── contracts │ ├── ReaperStrategyGranarySupplyOnly.sol │ ├── ReaperVaultERC4626.sol │ ├── ReaperVaultV2.sol │ ├── abstract │ │ └── ReaperBaseStrategyv4.sol │ ├── interfaces │ │ ├── IAToken.sol │ │ ├── IAaveIncentivesController.sol │ │ ├── IAaveProtocolDataProvider.sol │ │ ├── IERC20Minimal.sol │ │ ├── IERC4626Events.sol │ │ ├── IERC4626Functions.sol │ │ ├── IInitializableAToken.sol │ │ ├── ILendingPool.sol │ │ ├── ILendingPoolAddressesProvider.sol │ │ ├── IRewardsController.sol │ │ ├── IRewardsDistributor.sol │ │ ├── IScaledBalanceToken.sol │ │ ├── IStrategy.sol │ │ ├── IVault.sol │ │ ├── IVeloPair.sol │ │ └── IVeloRouter.sol │ ├── libraries │ │ ├── Babylonian.sol │ │ ├── DistributionTypes.sol │ │ ├── ReaperMathUtils.sol │ │ └── SafeERC20Minimal.sol │ └── mixins │ │ ├── ReaperAccessControl.sol │ │ └── VeloSolidMixin.sol ├── hardhat.config.js ├── package-lock.json ├── package.json ├── scripts │ └── deploy │ │ ├── 1-vault.js │ │ ├── 2-strategy.js │ │ └── 3-initialize.js ├── slither.config.json └── test │ └── starter-test.js ├── README.md ├── discord-export ├── Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html ├── Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files │ ├── 0-EB806.png │ ├── 02410a37de8a54f8cfb7a8842a2dd162-D2755.png │ ├── 0732b88680cd25f6d5e141aae0807aac-A3856.png │ ├── 0afc1ac766d7759ba3df429cccb8f500-074A6.png │ ├── 0bfce954f01a89faf77cf4344f557d71-E0190.png │ ├── 0d68144a83d0d1e6c6c6c068571b0fe6-D5B49.png │ ├── 1-B2132.png │ ├── 1080667809002037320-8957D.png │ ├── 1083068770823721071-EE4F6.png │ ├── 137d3e15fa9d5b9b5e5dbbd3fc432191-201D6.png │ ├── 1c21b55b70f62969097fe6429e141919-ED8F9.png │ ├── 1f37b-F650C.svg │ ├── 1f389-5C738.svg │ ├── 1f3c1-445DC.svg │ ├── 1f3c6-621A1.svg │ ├── 1f3fc-4884A.svg │ ├── 1f427-DA043.svg │ ├── 1f43a-EB486.svg │ ├── 1f440-6C64D.svg │ ├── 1f446-9CC34.svg │ ├── 1f44b-1f3fb-E6912.svg │ ├── 1f44b-8A059.svg │ ├── 1f44d-1f3fb-ED2AA.svg │ ├── 1f44d-1f3fc-EAB0D.svg │ ├── 1f44d-27259.svg │ ├── 1f44f-3D381.svg │ ├── 1f451-B565E.svg │ ├── 1f49a-E8B01.svg │ ├── 1f49c-71A75.svg │ ├── 1f4aa-2FD27.svg │ ├── 1f4af-4CFF5.svg │ ├── 1f4b8-E3468.svg │ ├── 1f4c6-44E30.svg │ ├── 1f4dc-AC641.svg │ ├── 1f50d-195C0.svg │ ├── 1f525-8FE4F.svg │ ├── 1f5c814293e8b9e942d51e84358d0eec-7016C.png │ ├── 1f600-F7528.svg │ ├── 1f602-168C5.svg │ ├── 1f604-BF863.svg │ ├── 1f605-42B43.svg │ ├── 1f608-C031D.svg │ ├── 1f609-9EC67.svg │ ├── 1f60d-BEAFF.svg │ ├── 1f626-91074.svg │ ├── 1f62c-CE43C.svg │ ├── 1f632-D2B7E.svg │ ├── 1f642-83E8A.svg │ ├── 1f64c-1f3fe-DE538.svg │ ├── 1f64c-7C820.svg │ ├── 1f64f-1f3fc-34E32.svg │ ├── 1f64f-22B8D.svg │ ├── 1f680-A35CE.svg │ ├── 1f6a8-A8AB3.svg │ ├── 1f911-F346C.svg │ ├── 1f914-15707.svg │ ├── 1f91a-46549.svg │ ├── 1f928-6E613.svg │ ├── 1f929-12865.svg │ ├── 1f972-F415D.svg │ ├── 1f973-88B39.svg │ ├── 1f979-BE2CD.svg │ ├── 1f9be-DDCD0.svg │ ├── 1f9d1-5BC80.svg │ ├── 1fac2-960B6.svg │ ├── 1fae1-B19DE.svg │ ├── 2-ADBB4.png │ ├── 255bb497f3e2b0149aa09b375d70b884-1E8AF.png │ ├── 261d-1f3fb-08F0C.svg │ ├── 2696-15F4A.svg │ ├── 2705-0589F.svg │ ├── 2764-A3D25.svg │ ├── 298683a190026937bb9033ded53b8aa3-EEC98.png │ ├── 2a9faff195fe333526cfe6ae6fce1420-49B98.png │ ├── 3-FB033.png │ ├── 310bb104d49148a05def03fa039fef92-D894A.png │ ├── 3270d963d3ddad601eced253ef8486c0-41F1F.png │ ├── 34e6bfee9fb587793cf81548262a0941-2A38B.png │ ├── 3a08cba67feac2ee28688587f3e38aed-8A06A.png │ ├── 3b01c38b7c5b905fd8e8a1d72f7d7492-53427.png │ ├── 3ccc4d04c7b24badc56c3a0edc6ab47f-5CF99.png │ ├── 4-4551A.png │ ├── 402b68164a51455e395a06ad04fc04b5-D7A38.png │ ├── 4155d983056d861c045620cf8e11d612-A5980.png │ ├── 42a6344ce063bedf07629f2cfc25a973-6B1A9.png │ ├── 43d4de17430aed2a2ecc19ffe96fbf29-9CFFA.png │ ├── 43dd9f8f0417e33ee6819ac321769e40-ED5ED.png │ ├── 45f63d884cbf231e2ca665be01155e18-68113.png │ ├── 47c22349beb07ff08b7d61406da2c1a8-6AC2E.png │ ├── 4c09efd6f261e591962c64479d356065-FEEF3.png │ ├── 4de0a7f237fde45d02ba1266af3cbf19-81483.png │ ├── 4e9282a50f2a3ed6b40048e5212b1769-CCF1B.png │ ├── 4fc87fcfb254cf58d3b7bab5f1844eb9-F34FC.png │ ├── 520534c5d8407c48744b2a2c8eb20ab3-02152.png │ ├── 52ea91685ed5ee0476335eaccbfe8104-65557.png │ ├── 538794d25bb901dbb49cd72395c045b0-40A3B.png │ ├── 55afac51a32db1ff015fd3a7d901e67a-A5862.png │ ├── 5e3fb61df91ed29c573265a690af4600-E824E.png │ ├── 6073716808be3a805321bd4d035b85a4-606CD.png │ ├── 641ea524f5de8dcf2fc726fa3ef176b9-E98DB.png │ ├── 6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png │ ├── 67594ee4b4d1fc03bca468327a0d145b-BD76A.png │ ├── 6b6b95378deaa6ca113f8fbef333b051-0B6D4.png │ ├── 6bd36f153db0689fe67d47ceb253ca6c-DA0E8.png │ ├── 6e53c2d72f93e345a64684197d266a06-AF973.png │ ├── 71abe85c3597a3e523c007ae867d7e3c-4DDE9.png │ ├── 7271940694076a1b74df95338eb1ddf7-AD066.png │ ├── 754852085123776523-2FF64.png │ ├── 754c60f4d2cd433f04b08f2e0b8aa798-E95F1.png │ ├── 755912753830559785-DBB45.png │ ├── 773490663245348864-8086D.png │ ├── 785c0b7123c292fe05d43e8dbf0d7044-B46B9.png │ ├── 7b7b1265bb80105efc0c077e7748a28d-F4A60.png │ ├── 7cbfcd6df2ea8a4d476d784ad1e77534-EF7B1.png │ ├── 7fb5758c5d2db4cd84defb760f0de04b-E0EA1.png │ ├── 82287b4212a9854e5730462bd70677ae-E8BF4.png │ ├── 827962529187102760-BF28A.png │ ├── 844356250778599465-3192F.png │ ├── 851893827027075142-F23DF.png │ ├── 851893827089727568-5FD38.png │ ├── 851893827315826708-F59C0.png │ ├── 851893827409412118-10EE9.png │ ├── 851893828280909886-FBF42.png │ ├── 853015931310702642-0E00F.png │ ├── 856236751861448705-2BFCB.gif │ ├── 866147853562675230-9F671.gif │ ├── 874085353554866197-24EAE.png │ ├── 877982099355877457-205B9.png │ ├── 878779c168e7bfa39e7181e57f9afd29-5320A.png │ ├── 881735755439939666-4D94E.png │ ├── 8817fd8ba40654b1081a3df74efdb7c3-65D01.png │ ├── 89e3fbd21924c4a21a21a80cdec753b1-00F3B.png │ ├── 8HuePg3x_400x400-CB835.jpg │ ├── 903291788750647376-8704A.png │ ├── 907282449598406696-84D3D.gif │ ├── 910676187288846397-518CD.png │ ├── 918262047433691247-911FE.png │ ├── 93334ad034acb95a4cdc51c9bf2a5151-5883A.png │ ├── 946117525316460616-3CCAE.png │ ├── 946117525324824596-92F5F.png │ ├── 946117525496791091-E19DC.png │ ├── 946118120400126023-76D27.png │ ├── 96119e14c860edbac5f4d243e683a992-3E151.png │ ├── 966eaf1aafcae6abcb9e0db823947e2f-96F55.png │ ├── 970d2e2f00cd7ef2134a1a3f21326349-404EA.png │ ├── 977133670429261884-CA8EA.png │ ├── 97efd9f7d02c37a237365308cac0858d-BEA6A.png │ ├── 98a7d867a5207a54b43c4edc1a097f3c-41435.png │ ├── 995fd0bd0a84a2bccb63987868d11575-CB8B5.png │ ├── 9bf2181404e658cab4039c07df56213f-E3E89.png │ ├── 9c068826a94f6e1d158939c8f708ded9-52A19.png │ ├── 9dcd9056a512c901f677da933fd9f073-EDC78.png │ ├── C4-banner-7C19B.png │ ├── Ef_p6-ZS_400x400-BB59D.jpg │ ├── Ethos_Audit_Report-2B885.pdf │ ├── IMG_20230220_164748_053-54412.jpg │ ├── Screenshot_from_2023-02-23_18-19-50-22D4C.png │ ├── a0457d118b6579a0106b86d86660fd78-D29A1.png │ ├── a2137aad94eca43e965735f01ae6b491-C6B0B.png │ ├── a46a59d6636619f3cc132c12dba469a6-7A310.png │ ├── a5e0feda0373c38597c374e1beaad37c-94BB3.png │ ├── a681a986fc31a9739459ccc096516151-9053D.png │ ├── a_6ba88d1c43592a629c6b3b31c0900ea3-B17AD.gif │ ├── a_bca0879461d4c6a590bc5e04f6d900e6-9565D.gif │ ├── ac4bbcb3c0b85e2a4e614559bf696e56-6C05D.png │ ├── ad1bdf970e39199a645d59618f8426cc-F4141.png │ ├── ad5f2ada72627b32551e77343b0f04bb-1F0DE.png │ ├── ae3160cda6795ff893cfe8ef7bab8d2c-8C8E7.png │ ├── ae55bccd105a97e5e171c290822eab04-394BB.png │ ├── apple-touch-icon-192x192-E344C.png │ ├── b3d5d3da563b7729f8aa7670add199d8-FC63A.png │ ├── b65274f940e95fed4fe6240822c5e5be-FF508.png │ ├── b84ee6d242a731cab60874693c9e4e63-64587.png │ ├── c3db5dc6fabeb28dbf345a29a4efed9b-4E977.png │ ├── c4-og-banner-0FCFA.png │ ├── c47d52c806aea627c7b227b287ce8808-40688.png │ ├── c5c9cae9cd193f1eb0c18644d30be95c-B5DEB.png │ ├── c6b85a4a6ca07ab15a30a24f570be5b8-72985.png │ ├── c6dfa3135b62e742ac7e28c3e14714f9-90F20.png │ ├── c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png │ ├── c98757e55697709f153f37422c6f4687-52C59.png │ ├── c9cb30134c634c9e02d0c64df4922803-98E33.png │ ├── cb23e87e4eb33d228ed3294f90188951-76405.png │ ├── d2a162ea47f3840acf3a61c2542af236-3CFFE.png │ ├── d6043278f422ca086a0e4a72f49ada43-4C1F6.png │ ├── d61e2dd3154e69042813d2049f3f6ae5-68F9C.png │ ├── dance-445F7.mp4 │ ├── db6e41bc98856f0b66c82ddf629bb78d-A6979.png │ ├── dc3f31b93aae412697eb105724a8d327-E1FFD │ ├── dec5cd0a8b13987bf086a9419d11bedf-27E4F.png │ ├── dev-1A6A9 │ ├── dev-30287 │ ├── dev-BE2B8 │ ├── dev-D03B3 │ ├── df2bfc03fb506f5ea3972c4121b8ffcc-949FA.png │ ├── e75f1d2172fb8759b8c2afdc4fe0a9ca-831F0.png │ ├── e8067e29333e48dd8b8632737d02e622-3F21A.png │ ├── ec906ee29b2bacd49cd7e28a849ef04b-F54DF.png │ ├── ed3bcd3fb52ff9076013f9003b317ec7-BB18F.png │ ├── ee6c31750f46b7cd080ab8b84efae1c2-9E926.png │ ├── f7147bfadb72a2afd2401e5071b39609-7268B.png │ ├── f866712af10980f137a46327d964bf33-5E52D.png │ ├── f8939cf60e6c24c4da47448b0c3c932c-C246F.png │ ├── fa9f75131f9a6c7e348ab24a14c24609-3E467.png │ ├── ff3fa3f8-9c74-450e-9309-0c1d315e2339-53152 │ ├── ggsans-italic-400-E988B.woff2 │ ├── ggsans-italic-500-0777F.woff2 │ ├── ggsans-italic-600-CB411.woff2 │ ├── ggsans-italic-700-891AC.woff2 │ ├── ggsans-italic-800-D36B0.woff2 │ ├── ggsans-normal-400-1456D.woff2 │ ├── ggsans-normal-500-89CE5.woff2 │ ├── ggsans-normal-600-C1EA8.woff2 │ ├── ggsans-normal-700-1949A.woff2 │ ├── ggsans-normal-800-58487.woff2 │ ├── gist-og-image-17482.png │ ├── highlight.min-D8D27.js │ ├── https___master.d2d2stxuuhsjdw.amplifyapp.c-1BA4A.png │ ├── image-00028.png │ ├── image-01D99.png │ ├── image-0AEA1.png │ ├── image-17191.png │ ├── image-3335B.png │ ├── image-68CEA.png │ ├── image-6CF9A.png │ ├── image-75D58.png │ ├── image-C8F67.png │ ├── lottie.min-99657.js │ ├── solarized-dark.min-BA98F.css │ ├── yearn-vaults-12442 │ └── yearn-vaults-41299 ├── Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt └── Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files │ ├── C4-banner-7C19B.png │ ├── Ethos_Audit_Report-2B885.pdf │ ├── IMG_20230220_164748_053-54412.jpg │ ├── Screenshot_from_2023-02-23_18-19-50-22D4C.png │ ├── c4-og-banner-0FCFA.png │ ├── dance-62FB3.png │ ├── dc3f31b93aae412697eb105724a8d327-00001-D2ADA.gif │ ├── dev-1A6A9 │ ├── dev-30287 │ ├── dev-BE2B8 │ ├── dev-D03B3 │ ├── ff3fa3f8-9c74-450e-9309-0c1d315e2339-53152 │ ├── gist-og-image-17482.png │ ├── https___master.d2d2stxuuhsjdw.amplifyapp.c-1BA4A.png │ ├── image-00028.png │ ├── image-01D99.png │ ├── image-0AEA1.png │ ├── image-17191.png │ ├── image-3335B.png │ ├── image-68CEA.png │ ├── image-6CF9A.png │ ├── image-75D58.png │ ├── image-C8F67.png │ ├── yearn-vaults-12442 │ └── yearn-vaults-41299 └── remappings.txt /Ethos-Core/.gitattributes: -------------------------------------------------------------------------------- 1 | # Enable syntax highlighting for Solidity 2 | *.sol linguist-language=Solidity -------------------------------------------------------------------------------- /Ethos-Core/.npmrc: -------------------------------------------------------------------------------- 1 | access=public 2 | -------------------------------------------------------------------------------- /Ethos-Core/.solcover.js: -------------------------------------------------------------------------------- 1 | const { accountsList } = require("./hardhatAccountsList2k.js"); 2 | // syntax for solcover network (ganache based) is different: 3 | // https://hardhat.org/plugins/solidity-coverage.html#configuration 4 | // Link in providerOptions: 5 | // https://github.com/trufflesuite/ganache-core#options 6 | const accounts = accountsList.map(a => ({ secretKey: a.privateKey, balance: '0xc097ce7bc90715b34b9f1000000000' })) 7 | 8 | module.exports = { 9 | providerOptions: { 10 | accounts 11 | }, 12 | 13 | // Improve performance by skipping statements and functions. Tool still checks lines of code and branches: 14 | // https://github.com/sc-forks/solidity-coverage/blob/master/docs/advanced.md 15 | //measureStatementCoverage: false, 16 | //measureFunctionCoverage: false, 17 | 18 | skipFiles: [ 19 | "TestContracts/", 20 | "MultiTroveGetter.sol", 21 | "Migrations.sol", 22 | "Interfaces/", 23 | "LPRewards/Dependencies/", 24 | "LPRewards/TestContracts/", 25 | "Dependencies/Context.sol", 26 | "Dependencies/IERC20.sol", 27 | "Dependencies/IERC2612.sol", 28 | "Dependencies/Math.sol", 29 | "Dependencies/Ownable.sol", 30 | "Dependencies/SafeMath.sol", 31 | "Dependencies/SafeMath128.sol", 32 | "Dependencies/console.sol", 33 | ], 34 | // https://github.com/sc-forks/solidity-coverage/blob/master/docs/advanced.md#skipping-tests 35 | mocha: { 36 | grep: "@skip-on-coverage", // Find everything with this tag 37 | invert: true // Run the grep's inverse set. 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /Ethos-Core/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "skipFiles": [ 12 | "/**" 13 | ], 14 | "program": "${workspaceFolder}\\truffle-config.js" 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /Ethos-Core/contracts/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "slither.solcPath": "", 3 | "slither.hiddenDetectors": [] 4 | } -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/AggregatorV3Interface.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | // Code from https://github.com/smartcontractkit/chainlink/blob/master/evm-contracts/src/v0.6/interfaces/AggregatorV3Interface.sol 3 | 4 | pragma solidity 0.6.11; 5 | 6 | interface AggregatorV3Interface { 7 | 8 | function decimals() external view returns (uint8); 9 | function description() external view returns (string memory); 10 | function version() external view returns (uint256); 11 | 12 | // getRoundData and latestRoundData should both raise "No data present" 13 | // if they do not have data to report, instead of returning unset values 14 | // which could be misinterpreted as actual reported values. 15 | function getRoundData(uint80 _roundId) 16 | external 17 | view 18 | returns ( 19 | uint80 roundId, 20 | int256 answer, 21 | uint256 startedAt, 22 | uint256 updatedAt, 23 | uint80 answeredInRound 24 | ); 25 | 26 | function latestRoundData() 27 | external 28 | view 29 | returns ( 30 | uint80 roundId, 31 | int256 answer, 32 | uint256 startedAt, 33 | uint256 updatedAt, 34 | uint80 answeredInRound 35 | ); 36 | } 37 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/BaseMath.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.6.11; 3 | 4 | 5 | contract BaseMath { 6 | uint constant public DECIMAL_PRECISION = 1e18; 7 | } 8 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/CheckContract.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | 6 | contract CheckContract { 7 | /** 8 | * Check that the account is an already deployed non-destroyed contract. 9 | * See: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol#L12 10 | */ 11 | function checkContract(address _account) internal view { 12 | require(_account != address(0), "Account cannot be zero address"); 13 | 14 | uint256 size; 15 | // solhint-disable-next-line no-inline-assembly 16 | assembly { size := extcodesize(_account) } 17 | require(size > 0, "Account code size cannot be zero"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/IERC2362.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | /** 6 | * @dev EIP2362 Interface for pull oracles 7 | * https://github.com/tellor-io/EIP-2362 8 | */ 9 | interface IERC2362 10 | { 11 | /** 12 | * @dev Exposed function pertaining to EIP standards 13 | * @param _id bytes32 ID of the query 14 | * @return int,uint,uint returns the value, timestamp, and status code of query 15 | */ 16 | function valueFor(bytes32 _id) external view returns(int256,uint256,uint256); 17 | } 18 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/IERC4626.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "./IERC20.sol"; 6 | 7 | interface IERC4626 is IERC20 { 8 | function asset() external view returns (address assetTokenAddress); 9 | function totalAssets() external view returns (uint256 totalManagedAssets); 10 | function convertToShares(uint256 assets) external view returns (uint256 shares); 11 | function convertToAssets(uint256 shares) external view returns (uint256 assets); 12 | function maxDeposit(address receiver) external view returns (uint256 maxAssets); 13 | function previewDeposit(uint256 assets) external view returns (uint256 shares); 14 | function deposit(uint256 assets, address receiver) external returns (uint256 shares); 15 | function maxMint(address receiver) external view returns (uint256 maxShares); 16 | function previewMint(uint256 shares) external view returns (uint256 assets); 17 | function mint(uint256 shares, address receiver) external returns (uint256 assets); 18 | function maxWithdraw(address owner) external view returns (uint256 maxAssets); 19 | function previewWithdraw(uint256 assets) external view returns (uint256 shares); 20 | function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); 21 | function maxRedeem(address owner) external view returns (uint256 maxShares); 22 | function previewRedeem(uint256 shares) external view returns (uint256 assets); 23 | function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); 24 | event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares); 25 | event Withdraw(address indexed caller, address indexed receiver, address indexed owner, uint256 assets, uint256 shares); 26 | } 27 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/IMappingContract.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface IMappingContract{ 6 | function getTellorID(bytes32 _id) external view returns(bytes32); 7 | } 8 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Dependencies/LiquitySafeMath128.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | // uint128 addition and subtraction, with overflow protection. 6 | 7 | library LiquitySafeMath128 { 8 | function add(uint128 a, uint128 b) internal pure returns (uint128) { 9 | uint128 c = a + b; 10 | require(c >= a, "LiquitySafeMath128: addition overflow"); 11 | 12 | return c; 13 | } 14 | 15 | function sub(uint128 a, uint128 b) internal pure returns (uint128) { 16 | require(b <= a, "LiquitySafeMath128: subtraction overflow"); 17 | uint128 c = a - b; 18 | 19 | return c; 20 | } 21 | } -------------------------------------------------------------------------------- /Ethos-Core/contracts/GasPool.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | 6 | /** 7 | * The purpose of this contract is to hold LUSD tokens for gas compensation: 8 | * https://github.com/liquity/dev#gas-compensation 9 | * When a borrower opens a trove, an additional 50 LUSD debt is issued, 10 | * and 50 LUSD is minted and sent to this contract. 11 | * When a borrower closes their active trove, this gas compensation is refunded: 12 | * 50 LUSD is burned from the this contract's balance, and the corresponding 13 | * 50 LUSD debt on the trove is cancelled. 14 | * See this issue for more context: https://github.com/liquity/dev/issues/186 15 | */ 16 | contract GasPool { 17 | // do nothing, as the core contracts have permission to send to and burn from this address 18 | } 19 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/IActivePool.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "./IPool.sol"; 6 | 7 | 8 | interface IActivePool is IPool { 9 | // --- Events --- 10 | event BorrowerOperationsAddressChanged(address _newBorrowerOperationsAddress); 11 | event TroveManagerAddressChanged(address _newTroveManagerAddress); 12 | event CollSurplusPoolAddressChanged(address _collSurplusPoolAddress); 13 | event ActivePoolLUSDDebtUpdated(address _collateral, uint _LUSDDebt); 14 | event ActivePoolCollateralBalanceUpdated(address _collateral, uint _amount); 15 | 16 | // --- Functions --- 17 | function sendCollateral(address _collateral, address _account, uint _amount) external; 18 | function pullCollateralFromBorrowerOperationsOrDefaultPool(address _collateral, uint _amount) external; 19 | } 20 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ICollSurplusPool.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | 6 | interface ICollSurplusPool { 7 | 8 | // --- Events --- 9 | 10 | event BorrowerOperationsAddressChanged(address _newBorrowerOperationsAddress); 11 | event TroveManagerAddressChanged(address _newTroveManagerAddress); 12 | event ActivePoolAddressChanged(address _newActivePoolAddress); 13 | 14 | event CollBalanceUpdated(address indexed _account, address _collateral, uint _newBalance); 15 | event CollateralSent(address _collateral, address _to, uint _amount); 16 | 17 | // --- Contract setters --- 18 | 19 | function setAddresses( 20 | address _collateralConfigAddress, 21 | address _borrowerOperationsAddress, 22 | address _troveManagerAddress, 23 | address _activePoolAddress 24 | ) external; 25 | 26 | function getCollateral(address _collateral) external view returns (uint); 27 | 28 | function getUserCollateral(address _account, address _collateral) external view returns (uint); 29 | 30 | function accountSurplus(address _account, address _collateral, uint _amount) external; 31 | 32 | function claimColl(address _account, address _collateral) external; 33 | 34 | function pullCollateralFromActivePool(address _collateral, uint _amount) external; 35 | } 36 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ICollateralConfig.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface ICollateralConfig { 6 | function getAllowedCollaterals() external view returns (address[] memory); 7 | function getCollateralCCR(address _collateral) external view returns (uint256); 8 | function getCollateralDecimals(address _collateral) external view returns (uint256); 9 | function getCollateralMCR(address _collateral) external view returns (uint256); 10 | function initialize(address[] calldata _collaterals, uint256[] calldata _MCRs, uint256[] calldata _CCRs) external; 11 | function isCollateralAllowed(address _collateral) external view returns (bool); 12 | } 13 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ICommunityIssuance.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface ICommunityIssuance { 6 | 7 | // --- Events --- 8 | 9 | event OATHTokenAddressSet(address _lqtyTokenAddress); 10 | event StabilityPoolAddressSet(address _stabilityPoolAddress); 11 | event TotalOathIssuedUpdated(uint _totalLQTYIssued); 12 | 13 | // --- Functions --- 14 | 15 | function setAddresses(address _lqtyTokenAddress, address _stabilityPoolAddress) external; 16 | 17 | function issueOath() external returns (uint); 18 | 19 | function sendOath(address _account, uint _LQTYamount) external; 20 | } 21 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/IDefaultPool.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "./IPool.sol"; 6 | 7 | 8 | interface IDefaultPool is IPool { 9 | // --- Events --- 10 | event TroveManagerAddressChanged(address _newTroveManagerAddress); 11 | event DefaultPoolLUSDDebtUpdated(address _collateral, uint _LUSDDebt); 12 | event DefaultPoolCollateralBalanceUpdated(address _collateral, uint _amount); 13 | 14 | // --- Functions --- 15 | function sendCollateralToActivePool(address _collateral, uint _amount) external; 16 | function pullCollateralFromActivePool(address _collateral, uint _amount) external; 17 | } 18 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ILQTYStaking.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface ILQTYStaking { 6 | 7 | // --- Events -- 8 | 9 | event LQTYTokenAddressSet(address _lqtyTokenAddress); 10 | event LUSDTokenAddressSet(address _lusdTokenAddress); 11 | event TroveManagerAddressSet(address _troveManager); 12 | event BorrowerOperationsAddressSet(address _borrowerOperationsAddress); 13 | event ActivePoolAddressSet(address _activePoolAddress); 14 | event CollateralConfigAddressSet(address _collateralConfigAddress); 15 | 16 | event StakeChanged(address indexed staker, uint newStake); 17 | event StakingGainsWithdrawn(address indexed staker, uint LUSDGain, address[] _assets, uint[] _amounts); 18 | event F_CollateralUpdated(address _collateral, uint _F_Collateral); 19 | event F_LUSDUpdated(uint _F_LUSD); 20 | event TotalLQTYStakedUpdated(uint _totalLQTYStaked); 21 | event CollateralSent(address _account, address _collateral, uint _amount); 22 | event StakerSnapshotsUpdated(address _staker, address[] _assets, uint[] _amounts, uint _F_LUSD); 23 | 24 | // --- Functions --- 25 | 26 | function setAddresses 27 | ( 28 | address _lqtyTokenAddress, 29 | address _lusdTokenAddress, 30 | address _troveManagerAddress, 31 | address _borrowerOperationsAddress, 32 | address _activePoolAddress, 33 | address _collateralConfigAddress 34 | ) external; 35 | 36 | function stake(uint _LQTYamount) external; 37 | 38 | function unstake(uint _LQTYamount) external; 39 | 40 | function increaseF_Collateral(address _collateral, uint _collFee) external; 41 | 42 | function increaseF_LUSD(uint _LQTYFee) external; 43 | 44 | function getPendingCollateralGain(address _user) external view returns (address[] memory, uint[] memory); 45 | 46 | function getPendingLUSDGain(address _user) external view returns (uint); 47 | } 48 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ILUSDToken.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/IERC20.sol"; 6 | import "../Dependencies/IERC2612.sol"; 7 | 8 | interface ILUSDToken is IERC20, IERC2612 { 9 | 10 | // --- Events --- 11 | 12 | event TroveManagerAddressChanged(address _troveManagerAddress); 13 | event StabilityPoolAddressChanged(address _newStabilityPoolAddress); 14 | event BorrowerOperationsAddressChanged(address _newBorrowerOperationsAddress); 15 | 16 | event LUSDTokenBalanceUpdated(address _user, uint _amount); 17 | 18 | // --- Functions --- 19 | 20 | function mint(address _account, uint256 _amount) external; 21 | 22 | function burn(address _account, uint256 _amount) external; 23 | 24 | function sendToPool(address _sender, address poolAddress, uint256 _amount) external; 25 | 26 | function returnFromPool(address poolAddress, address user, uint256 _amount ) external; 27 | 28 | function getDeploymentStartTime() external view returns (uint256); 29 | } 30 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ILiquityBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "./IPriceFeed.sol"; 6 | 7 | 8 | interface ILiquityBase { 9 | function priceFeed() external view returns (IPriceFeed); 10 | } 11 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/IPool.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | // Common interface for the Pools. 6 | interface IPool { 7 | 8 | // --- Events --- 9 | 10 | event ActivePoolAddressChanged(address _newActivePoolAddress); 11 | event DefaultPoolAddressChanged(address _newDefaultPoolAddress); 12 | event StabilityPoolAddressChanged(address _newStabilityPoolAddress); 13 | event CollateralSent(address _collateral, address _to, uint _amount); 14 | 15 | // --- Functions --- 16 | 17 | function getCollateral(address _collateral) external view returns (uint); 18 | 19 | function getLUSDDebt(address _collateral) external view returns (uint); 20 | 21 | function increaseLUSDDebt(address _collateral, uint _amount) external; 22 | 23 | function decreaseLUSDDebt(address _collateral, uint _amount) external; 24 | } 25 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/IPriceFeed.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface IPriceFeed { 6 | 7 | // --- Events --- 8 | event LastGoodPriceUpdated(address _collateral, uint _lastGoodPrice); 9 | 10 | // --- Function --- 11 | function fetchPrice(address _collateral) external returns (uint); 12 | } 13 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/IRedemptionHelper.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface IRedemptionHelper { 6 | function redeemCollateral( 7 | address _collateral, 8 | address _redeemer, 9 | uint _LUSDamount, 10 | address _firstRedemptionHint, 11 | address _upperPartialRedemptionHint, 12 | address _lowerPartialRedemptionHint, 13 | uint _partialRedemptionHintNICR, 14 | uint _maxIterations, 15 | uint _maxFeePercentage 16 | ) external; 17 | } -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ISortedTroves.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | // Common interface for the SortedTroves Doubly Linked List. 6 | interface ISortedTroves { 7 | 8 | // --- Events --- 9 | 10 | event SortedTrovesAddressChanged(address _sortedDoublyLLAddress); 11 | event BorrowerOperationsAddressChanged(address _borrowerOperationsAddress); 12 | event NodeAdded(address _collateral, address _id, uint _NICR); 13 | event NodeRemoved(address _collateral, address _id); 14 | 15 | // --- Functions --- 16 | 17 | function setParams(address _TroveManagerAddress, address _borrowerOperationsAddress) external; 18 | 19 | function insert(address _collateral, address _id, uint256 _ICR, address _prevId, address _nextId) external; 20 | 21 | function remove(address _collateral, address _id) external; 22 | 23 | function reInsert(address _id, address _collateral, uint256 _newICR, address _prevId, address _nextId) external; 24 | 25 | function contains(address _collateral, address _id) external view returns (bool); 26 | 27 | function isEmpty(address _collateral) external view returns (bool); 28 | 29 | function getSize(address _collateral) external view returns (uint256); 30 | 31 | function getFirst(address _collateral) external view returns (address); 32 | 33 | function getLast(address _collateral) external view returns (address); 34 | 35 | function getNext(address _collateral, address _id) external view returns (address); 36 | 37 | function getPrev(address _collateral, address _id) external view returns (address); 38 | 39 | function validInsertPosition(address _collateral, uint256 _ICR, address _prevId, address _nextId) external view returns (bool); 40 | 41 | function findInsertPosition(address _collateral, uint256 _ICR, address _prevId, address _nextId) external view returns (address, address); 42 | } 43 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Interfaces/ITellorCaller.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | interface ITellorCaller { 6 | function getTellorCurrentValue(bytes32 _queryId) external view returns (bool, uint256, uint256); 7 | } -------------------------------------------------------------------------------- /Ethos-Core/contracts/Migrations.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | contract Migrations { 6 | address public owner; 7 | uint public last_completed_migration; 8 | 9 | modifier restricted() { 10 | if (msg.sender == owner) _; 11 | } 12 | 13 | constructor() public { 14 | owner = msg.sender; 15 | } 16 | 17 | function setCompleted(uint completed) public restricted { 18 | last_completed_migration = completed; 19 | } 20 | 21 | function upgrade(address new_address) public restricted { 22 | Migrations upgraded = Migrations(new_address); 23 | upgraded.setCompleted(last_completed_migration); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Proxy/ERC20TransferScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/IERC20.sol"; 6 | 7 | contract ERC20TransferScript { 8 | function transferERC20(address _token, address _recipient, uint256 _amount) external returns (bool) { 9 | return IERC20(_token).transfer(_recipient, _amount); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Proxy/LQTYStakingScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/CheckContract.sol"; 6 | import "../Interfaces/ILQTYStaking.sol"; 7 | 8 | 9 | contract LQTYStakingScript is CheckContract { 10 | ILQTYStaking immutable LQTYStaking; 11 | 12 | constructor(address _lqtyStakingAddress) public { 13 | checkContract(_lqtyStakingAddress); 14 | LQTYStaking = ILQTYStaking(_lqtyStakingAddress); 15 | } 16 | 17 | function stake(uint _LQTYamount) external { 18 | LQTYStaking.stake(_LQTYamount); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Proxy/StabilityPoolScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/CheckContract.sol"; 6 | import "../Interfaces/IStabilityPool.sol"; 7 | 8 | 9 | contract StabilityPoolScript is CheckContract { 10 | string constant public NAME = "StabilityPoolScript"; 11 | 12 | IStabilityPool immutable stabilityPool; 13 | 14 | constructor(IStabilityPool _stabilityPool) public { 15 | checkContract(address(_stabilityPool)); 16 | stabilityPool = _stabilityPool; 17 | } 18 | 19 | function provideToSP(uint _amount) external { 20 | stabilityPool.provideToSP(_amount); 21 | } 22 | 23 | function withdrawFromSP(uint _amount) external { 24 | stabilityPool.withdrawFromSP(_amount); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Proxy/TokenScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/CheckContract.sol"; 6 | import "../Dependencies/IERC20.sol"; 7 | 8 | 9 | contract TokenScript is CheckContract { 10 | string constant public NAME = "TokenScript"; 11 | 12 | IERC20 immutable token; 13 | 14 | constructor(address _tokenAddress) public { 15 | checkContract(_tokenAddress); 16 | token = IERC20(_tokenAddress); 17 | } 18 | 19 | function transfer(address recipient, uint256 amount) external returns (bool) { 20 | token.transfer(recipient, amount); 21 | } 22 | 23 | function allowance(address owner, address spender) external view returns (uint256) { 24 | token.allowance(owner, spender); 25 | } 26 | 27 | function approve(address spender, uint256 amount) external returns (bool) { 28 | token.approve(spender, amount); 29 | } 30 | 31 | function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { 32 | token.transferFrom(sender, recipient, amount); 33 | } 34 | 35 | function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { 36 | token.increaseAllowance(spender, addedValue); 37 | } 38 | 39 | function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { 40 | token.decreaseAllowance(spender, subtractedValue); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/Proxy/TroveManagerScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/CheckContract.sol"; 6 | import "../Interfaces/ITroveManager.sol"; 7 | 8 | 9 | contract TroveManagerScript is CheckContract { 10 | string constant public NAME = "TroveManagerScript"; 11 | 12 | ITroveManager immutable troveManager; 13 | 14 | constructor(ITroveManager _troveManager) public { 15 | checkContract(address(_troveManager)); 16 | troveManager = _troveManager; 17 | } 18 | 19 | function redeemCollateral( 20 | address _collateral, 21 | uint _LUSDAmount, 22 | address _firstRedemptionHint, 23 | address _upperPartialRedemptionHint, 24 | address _lowerPartialRedemptionHint, 25 | uint _partialRedemptionHintNICR, 26 | uint _maxIterations, 27 | uint _maxFee 28 | ) external returns (uint) { 29 | troveManager.redeemCollateral( 30 | _collateral, 31 | _LUSDAmount, 32 | _firstRedemptionHint, 33 | _upperPartialRedemptionHint, 34 | _lowerPartialRedemptionHint, 35 | _partialRedemptionHintNICR, 36 | _maxIterations, 37 | _maxFee 38 | ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/ActivePoolTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../ActivePool.sol"; 6 | 7 | contract ActivePoolTester is ActivePool { 8 | 9 | function unprotectedIncreaseLUSDDebt(address _collateral, uint _amount) external { 10 | LUSDDebt[_collateral] = LUSDDebt[_collateral].add(_amount); 11 | } 12 | 13 | function unprotectedPullCollateral(address _collateral, uint _amount) external { 14 | collAmount[_collateral] = collAmount[_collateral].add(_amount); 15 | IERC20(_collateral).safeTransferFrom(msg.sender, address(this), _amount); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/CommunityIssuanceTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../LQTY/CommunityIssuance.sol"; 6 | 7 | contract CommunityIssuanceTester is CommunityIssuance { 8 | function unprotectedIssueLQTY() external returns (uint issuance) { 9 | if (lastIssuanceTimestamp < lastDistributionTime) { 10 | uint256 endTimestamp = block.timestamp > lastDistributionTime ? lastDistributionTime : block.timestamp; 11 | uint256 timePassed = endTimestamp.sub(lastIssuanceTimestamp); 12 | issuance = timePassed.mul(rewardPerSecond); 13 | totalOATHIssued = totalOATHIssued.add(issuance); 14 | } 15 | 16 | lastIssuanceTimestamp = block.timestamp; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/DefaultPoolTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../DefaultPool.sol"; 6 | 7 | contract DefaultPoolTester is DefaultPool { 8 | 9 | function unprotectedIncreaseLUSDDebt(address _collateral, uint _amount) external { 10 | LUSDDebt[_collateral] = LUSDDebt[_collateral].add(_amount); 11 | } 12 | 13 | function unprotectedPullCollateral(address _collateral, uint _amount) external { 14 | collAmount[_collateral] = collAmount[_collateral].add(_amount); 15 | IERC20(_collateral).safeTransferFrom(msg.sender, address(this), _amount); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/Destructible.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | contract Destructible { 6 | 7 | receive() external payable {} 8 | 9 | function destruct(address payable _receiver) external { 10 | selfdestruct(_receiver); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 6 | 7 | 8 | // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.3.0/contracts/mocks/ERC20Mock.sol 9 | // mock class using ERC20 10 | contract ERC20Mock is ERC20 { 11 | constructor ( 12 | string memory name, 13 | string memory symbol, 14 | uint8 decimals, 15 | address initialAccount, 16 | uint256 initialBalance 17 | ) public payable ERC20(name, symbol) { 18 | _setupDecimals(decimals); 19 | _mint(initialAccount, initialBalance); 20 | } 21 | 22 | function mint(address account, uint256 amount) public { 23 | _mint(account, amount); 24 | } 25 | 26 | function burn(address account, uint256 amount) public { 27 | _burn(account, amount); 28 | } 29 | 30 | function transferInternal(address from, address to, uint256 value) public { 31 | _transfer(from, to, value); 32 | } 33 | 34 | function approveInternal(address owner, address spender, uint256 value) public { 35 | _approve(owner, spender, value); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/LQTYStakingTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../LQTY/LQTYStaking.sol"; 6 | 7 | 8 | contract LQTYStakingTester is LQTYStaking { 9 | function requireCallerIsTroveManager() external view { 10 | _requireCallerIsTroveManagerOrActivePool(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/LUSDTokenCaller.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Interfaces/ILUSDToken.sol"; 6 | 7 | contract LUSDTokenCaller { 8 | ILUSDToken LUSD; 9 | 10 | function setLUSD(ILUSDToken _LUSD) external { 11 | LUSD = _LUSD; 12 | } 13 | 14 | function lusdMint(address _account, uint _amount) external { 15 | LUSD.mint(_account, _amount); 16 | } 17 | 18 | function lusdBurn(address _account, uint _amount) external { 19 | LUSD.burn(_account, _amount); 20 | } 21 | 22 | function lusdSendToPool(address _sender, address _poolAddress, uint256 _amount) external { 23 | LUSD.sendToPool(_sender, _poolAddress, _amount); 24 | } 25 | 26 | function lusdReturnFromPool(address _poolAddress, address _receiver, uint256 _amount ) external { 27 | LUSD.returnFromPool(_poolAddress, _receiver, _amount); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/LiquityMathTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/LiquityMath.sol"; 6 | 7 | /* Tester contract for math functions in Math.sol library. */ 8 | 9 | contract LiquityMathTester { 10 | 11 | function callMax(uint _a, uint _b) external pure returns (uint) { 12 | return LiquityMath._max(_a, _b); 13 | } 14 | 15 | // Non-view wrapper for gas test 16 | function callDecPowTx(uint _base, uint _n) external pure returns (uint) { 17 | return LiquityMath._decPow(_base, _n); 18 | } 19 | 20 | // External wrapper 21 | function callDecPow(uint _base, uint _n) external pure returns (uint) { 22 | return LiquityMath._decPow(_base, _n); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/LiquitySafeMath128Tester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Dependencies/LiquitySafeMath128.sol"; 6 | 7 | /* Tester contract for math functions in LiquitySafeMath128.sol library. */ 8 | 9 | contract LiquitySafeMath128Tester { 10 | using LiquitySafeMath128 for uint128; 11 | 12 | function add(uint128 a, uint128 b) external pure returns (uint128) { 13 | return a.add(b); 14 | } 15 | 16 | function sub(uint128 a, uint128 b) external pure returns (uint128) { 17 | return a.sub(b); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/MockGovernance.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | contract MockGovernance { 6 | // copied from GnosisSafe 7 | enum Operation {Call, DelegateCall} 8 | function execute( 9 | address to, 10 | uint256 value, 11 | bytes memory data, 12 | Operation operation, 13 | uint256 txGas 14 | ) external returns (bool success) { 15 | if (operation == Operation.DelegateCall) { 16 | // solhint-disable-next-line no-inline-assembly 17 | assembly { 18 | success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0) 19 | } 20 | } else { 21 | // solhint-disable-next-line no-inline-assembly 22 | assembly { 23 | success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0) 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/MockGuardian.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | contract MockGuardian { 6 | // copied from GnosisSafe 7 | enum Operation {Call, DelegateCall} 8 | function execute( 9 | address to, 10 | uint256 value, 11 | bytes memory data, 12 | Operation operation, 13 | uint256 txGas 14 | ) external returns (bool success) { 15 | if (operation == Operation.DelegateCall) { 16 | // solhint-disable-next-line no-inline-assembly 17 | assembly { 18 | success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0) 19 | } 20 | } else { 21 | // solhint-disable-next-line no-inline-assembly 22 | assembly { 23 | success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0) 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/MockTellor.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | 6 | contract MockTellor { 7 | 8 | // --- Mock price data --- 9 | 10 | bool didRetrieve = true; // default to a positive retrieval 11 | uint private price; 12 | uint private updateTime; 13 | 14 | bool private revertRequest; 15 | 16 | // --- Setters for mock price data --- 17 | 18 | function setPrice(uint _price) external { 19 | price = _price; 20 | } 21 | 22 | function setDidRetrieve(bool _didRetrieve) external { 23 | didRetrieve = _didRetrieve; 24 | } 25 | 26 | function setUpdateTime(uint _updateTime) external { 27 | updateTime = _updateTime; 28 | } 29 | 30 | function setRevertRequest() external { 31 | revertRequest = !revertRequest; 32 | } 33 | 34 | // --- Mock data reporting functions --- 35 | 36 | function getDataBefore(bytes32 _queryId, uint256 _timestamp) 37 | external 38 | view 39 | returns ( 40 | bool _ifRetrieve, 41 | bytes memory _value, 42 | uint256 _timestampRetrieved 43 | ) 44 | { 45 | require(!revertRequest, "Tellor request reverted"); 46 | if (updateTime > _timestamp) return (false, bytes(""), uint256(0)); 47 | return (true, abi.encode(price), updateTime); 48 | } 49 | 50 | function getTimestampbyQueryIdandIndex(bytes32, uint) external view returns (uint) { 51 | return updateTime; 52 | } 53 | 54 | function getNewValueCountbyQueryId(bytes32) external view returns (uint) { 55 | if (revertRequest) {require (1 == 0, "Tellor request reverted");} 56 | return 1; 57 | } 58 | 59 | function retrieveData(bytes32, uint256) external view returns (bytes memory) { 60 | return abi.encode(price); 61 | } 62 | 63 | 64 | 65 | } 66 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/NonPayable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | //import "../Dependencies/console.sol"; 6 | 7 | 8 | contract NonPayable { 9 | bool isPayable; 10 | 11 | function setPayable(bool _isPayable) external { 12 | isPayable = _isPayable; 13 | } 14 | 15 | function forward(address _dest, bytes calldata _data) external payable { 16 | (bool success, bytes memory returnData) = _dest.call{ value: msg.value }(_data); 17 | //console.logBytes(returnData); 18 | require(success, string(returnData)); 19 | } 20 | 21 | receive() external payable { 22 | require(isPayable); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/PriceFeedTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../PriceFeed.sol"; 6 | 7 | contract PriceFeedTester is PriceFeed { 8 | 9 | function setLastGoodPrice(address _collateral, uint _lastGoodPrice) external { 10 | lastGoodPrice[_collateral] = _lastGoodPrice; 11 | } 12 | 13 | function setStatus(address _collateral, Status _status) external { 14 | status[_collateral] = _status; 15 | } 16 | } -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/PriceFeedTestnet.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Interfaces/IPriceFeed.sol"; 6 | 7 | /* 8 | * PriceFeed placeholder for testnet and development. The price is simply set manually and saved in a state 9 | * variable. The contract does not connect to a live Chainlink price feed. 10 | */ 11 | contract PriceFeedTestnet is IPriceFeed { 12 | 13 | mapping (address => uint256) private _price; 14 | 15 | // --- Functions --- 16 | 17 | // View price getter for simplicity in tests 18 | function getPrice(address _collateral) external view returns (uint256) { 19 | return _price[_collateral]; 20 | } 21 | 22 | function fetchPrice(address _collateral) external override returns (uint256) { 23 | // Fire an event just like the mainnet version would. 24 | // This lets the subgraph rely on events to get the latest price even when developing locally. 25 | emit LastGoodPriceUpdated(_collateral, _price[_collateral]); 26 | return _price[_collateral]; 27 | } 28 | 29 | // Manual external price setter. 30 | function setPrice(address _collateral, uint256 price) external returns (bool) { 31 | _price[_collateral] = price; 32 | return true; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/SortedTrovesTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../Interfaces/ISortedTroves.sol"; 6 | 7 | 8 | contract SortedTrovesTester { 9 | ISortedTroves sortedTroves; 10 | 11 | function setSortedTroves(address _sortedTrovesAddress) external { 12 | sortedTroves = ISortedTroves(_sortedTrovesAddress); 13 | } 14 | 15 | function insert(address _collateral, address _id, uint256 _NICR, address _prevId, address _nextId) external { 16 | sortedTroves.insert(_collateral, _id, _NICR, _prevId, _nextId); 17 | } 18 | 19 | function remove(address _collateral, address _id) external { 20 | sortedTroves.remove(_collateral, _id); 21 | } 22 | 23 | function reInsert(address _id, address _collateral, uint256 _newNICR, address _prevId, address _nextId) external { 24 | sortedTroves.reInsert(_id, _collateral, _newNICR, _prevId, _nextId); 25 | } 26 | 27 | function getNominalICR(address, address) external pure returns (uint) { 28 | return 1; 29 | } 30 | 31 | function getCurrentICR(address, address, uint) external pure returns (uint) { 32 | return 1; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Ethos-Core/contracts/TestContracts/StabilityPoolTester.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity 0.6.11; 4 | 5 | import "../StabilityPool.sol"; 6 | 7 | contract StabilityPoolTester is StabilityPool { 8 | 9 | function unprotectedPullCollateral(address _collateral, uint _amount) external { 10 | collAmounts[_collateral] = collAmounts[_collateral].add(_amount); 11 | IERC20(_collateral).safeTransferFrom(msg.sender, address(this), _amount); 12 | } 13 | 14 | function setCurrentScale(uint128 _currentScale) external { 15 | currentScale = _currentScale; 16 | } 17 | 18 | function setTotalDeposits(uint _totalLUSDDeposits) external { 19 | totalLUSDDeposits = _totalLUSDDeposits; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Ethos-Core/hardhat.config.echidna.js: -------------------------------------------------------------------------------- 1 | require("@nomiclabs/hardhat-truffle5"); 2 | require("@nomiclabs/hardhat-ethers"); 3 | require("solidity-coverage"); 4 | require("hardhat-gas-reporter"); 5 | 6 | const accountsList = [ 7 | { 8 | privateKey: "0x60ddFE7f579aB6867cbE7A2Dc03853dC141d7A4aB6DBEFc0Dae2d2B1Bd4e487F", 9 | balance: "0xffffffffffffffffffffffff" 10 | }, 11 | ] 12 | 13 | module.exports = { 14 | paths: { 15 | // contracts: "./contracts", 16 | // artifacts: "./artifacts" 17 | }, 18 | solc: { 19 | version: "0.6.11", 20 | optimizer: { 21 | enabled: true, 22 | runs: 100 23 | } 24 | }, 25 | networks: { 26 | buidlerevm: { 27 | accounts: accountsList, 28 | gas: 1000000000, // tx gas limit 29 | blockGasLimit: 1000000000, 30 | gasPrice: 20000000000, 31 | allowUnlimitedContractSize: true 32 | } 33 | }, 34 | mocha: { timeout: 12000000 }, 35 | rpc: { 36 | host: "localhost", 37 | port: 8545 38 | }, 39 | gasReporter: { 40 | enabled: (process.env.REPORT_GAS) ? true : false 41 | } 42 | }; 43 | -------------------------------------------------------------------------------- /Ethos-Core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@liquity/contracts", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "truffle-config.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "scripts": { 10 | "hardhat": "hardhat", 11 | "prepare": "run-s prepare:*", 12 | "prepare:compile": "hardhat compile", 13 | "prepare:set-version": "node scripts/set-version.js", 14 | "test": "hardhat test", 15 | "coverage": "hardhat coverage", 16 | "coveralls": "cat coverage/lcov.info | coveralls" 17 | }, 18 | "keywords": [], 19 | "author": "", 20 | "license": "ISC", 21 | "dependencies": { 22 | "decimal.js": "^10.2.0", 23 | "eth-mutants": "^0.1.1", 24 | "ethereumjs-util": "^7.0.9", 25 | "ethers": "^5.4.3", 26 | "solc": "^0.6.11", 27 | "xmlhttprequest": "^1.8.0" 28 | }, 29 | "devDependencies": { 30 | "@nomiclabs/hardhat-ethers": "^2.0.2", 31 | "@nomiclabs/hardhat-etherscan": "^2.1.2", 32 | "@nomiclabs/hardhat-truffle5": "^2.0.0", 33 | "@nomiclabs/hardhat-web3": "^2.0.0", 34 | "@openzeppelin/contracts": "^3.3.0", 35 | "@openzeppelin/test-helpers": "^0.5.10", 36 | "eth-gas-reporter": "^0.2.22", 37 | "hardhat": "^2.6.1", 38 | "hardhat-gas-reporter": "^1.0.1", 39 | "npm-run-all": "^4.1.5", 40 | "solidity-coverage": "^0.7.16", 41 | "web3": "^1.3.4" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Ethos-Core/scripts/set-version.js: -------------------------------------------------------------------------------- 1 | const { execSync } = require("child_process"); 2 | const { writeFileSync } = require("fs"); 3 | const path = require("path"); 4 | 5 | const commitHash = execSync("git rev-parse HEAD", { encoding: "ascii" }); 6 | writeFileSync(path.join("artifacts", "version"), commitHash); 7 | -------------------------------------------------------------------------------- /Ethos-Core/secrets.js.template: -------------------------------------------------------------------------------- 1 | const secrets = { 2 | alchemyAPIKey: undefined, 3 | DEPLOYER_PRIVATEKEY: undefined, 4 | ACCOUNT2_PRIVATEKEY: undefined, 5 | alchemyAPIKeyRinkeby: undefined, 6 | alchemyAPIKeyOptimismGoerli: undefined, 7 | RINKEBY_DEPLOYER_PRIVATEKEY: undefined, 8 | ETHERSCAN_API_KEY: undefined, 9 | } 10 | 11 | module.exports = { 12 | secrets 13 | } 14 | -------------------------------------------------------------------------------- /Ethos-Core/slither.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "detectors_to_exclude": "naming-convention", 3 | "filter_paths": "node_modules|TestContracts|Dependencies|Migrations.sol|MultiTroveGetter.sol" 4 | } 5 | -------------------------------------------------------------------------------- /Ethos-Core/test/LiquityMathTest.js: -------------------------------------------------------------------------------- 1 | const LiquityMathTester = artifacts.require("./LiquityMathTester.sol") 2 | 3 | contract('LiquityMath', async accounts => { 4 | let liquityMathTester 5 | beforeEach('deploy tester', async () => { 6 | liquityMathTester = await LiquityMathTester.new() 7 | }) 8 | 9 | const checkFunction = async (func, cond, params) => { 10 | assert.equal(await liquityMathTester[func](...params), cond(...params)) 11 | } 12 | 13 | it('max works if a > b', async () => { 14 | await checkFunction('callMax', (a, b) => Math.max(a, b), [2, 1]) 15 | }) 16 | 17 | it('max works if a = b', async () => { 18 | await checkFunction('callMax', (a, b) => Math.max(a, b), [2, 2]) 19 | }) 20 | 21 | it('max works if a < b', async () => { 22 | await checkFunction('callMax', (a, b) => Math.max(a, b), [1, 2]) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /Ethos-Core/test/LiquitySafeMath128Test.js: -------------------------------------------------------------------------------- 1 | const testHelpers = require("../utils/testHelpers.js") 2 | const th = testHelpers.TestHelper 3 | 4 | const LiquitySafeMath128Tester = artifacts.require("LiquitySafeMath128Tester") 5 | 6 | contract('LiquitySafeMath128Tester', async accounts => { 7 | let mathTester 8 | 9 | beforeEach(async () => { 10 | mathTester = await LiquitySafeMath128Tester.new() 11 | }) 12 | 13 | it('add(): reverts if overflows', async () => { 14 | const MAX_UINT_128 = th.toBN(2).pow(th.toBN(128)).sub(th.toBN(1)) 15 | await th.assertRevert(mathTester.add(MAX_UINT_128, 1), 'LiquitySafeMath128: addition overflow') 16 | }) 17 | 18 | it('sub(): reverts if underflows', async () => { 19 | await th.assertRevert(mathTester.sub(1, 2), 'LiquitySafeMath128: subtraction overflow') 20 | }) 21 | }) 22 | -------------------------------------------------------------------------------- /Ethos-Core/truffle-config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | module.exports = { 4 | // See 5 | // to customize your Truffle configuration! 6 | networks: { 7 | develop: { 8 | port: 7545, 9 | gas: 9000000, 10 | network_id: 5777 11 | }, 12 | // test: { 13 | // port: 7545, 14 | // gas: 9000000, 15 | // network_id: 4447 16 | // }, 17 | vertigo_test_network_1: { 18 | host: "127.0.0.1", 19 | port: 8545, 20 | network_id: "*" 21 | }, 22 | vertigo_test_network_2: { 23 | host: "127.0.0.1", 24 | port: 8546, 25 | network_id: "*" 26 | } 27 | // test: { 28 | // gas: 9000000, 29 | // network_id: 4447 30 | // }, 31 | }, 32 | solc: { 33 | optimizer: { 34 | enabled: true, 35 | runs: 1000 36 | }, 37 | }, 38 | // use native binaries rather than solc.js 39 | compilers: { 40 | solc: { 41 | version: "0.6.11" 42 | } 43 | }, 44 | // plugins: [ 45 | // 'truffle-ganache-test' 46 | // ], 47 | // mocha: { 48 | // reporter: 'eth-gas-reporter' 49 | // } 50 | } 51 | -------------------------------------------------------------------------------- /Ethos-Core/utils/makeAccounts.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | // Make accounts with 1 trillion Ether 4 | const makeAccount = () => { 5 | acc = `{ privateKey: "${randomHex()}", balance: "'0xc097ce7bc90715b34b9f1000000000'" }` 6 | return acc 7 | } 8 | 9 | const randomHex = () => { 10 | const hexChars = "abcdefABCDEF0123456789" 11 | let hexCharArray = ["0x"] 12 | 13 | for (i = 0; i < 64; i++) { 14 | hexCharArray.push(randomChar(hexChars)) 15 | } 16 | // console.log("hexarray is" + hexCharArray) 17 | return hexCharArray.join("") 18 | } 19 | 20 | const randomChar = (chars) => { 21 | const len = chars.length 22 | const idx = Math.floor(len * Math.random()) 23 | 24 | return chars[idx] 25 | } 26 | 27 | const makeHardhatAccountsList = (n) => { 28 | accountsDict = {} 29 | accounts = [] 30 | 31 | let i = 0; 32 | let account; 33 | 34 | while (i < n) { 35 | console.log(i) 36 | account = makeAccount() 37 | // console.log("account is" + account) 38 | if (Object.keys(accountsDict).includes(account)) { 39 | i += 1 40 | continue 41 | } else { 42 | accounts.push(account) 43 | accountsDict[account] = true 44 | i += 1 45 | } 46 | } 47 | 48 | return( 49 | `const accountsList = \n 50 | [ ${accounts.join(",\n")} ]\n 51 | module.exports = { 52 | accountsList: accountsList 53 | };`) 54 | } 55 | 56 | // Construct accounts array data 57 | const arrayList = makeHardhatAccountsList(80000) 58 | 59 | // console.log(arrayList) 60 | fs.appendFile('../accountsList.js', arrayList, (err) => { if (err) console.log(err) }) 61 | -------------------------------------------------------------------------------- /Ethos-Core/utils/processGasOutput.js: -------------------------------------------------------------------------------- 1 | /* Script for processing logged gas outputs from tests. 2 | 3 | Gas profiling logs the 'gas left', which includes the cost of the previous console.log call in the .sol file. 4 | 5 | A Hardhat console.log call of the form: 6 | 7 | console.log("01. gas left: %s", gasleft()); 8 | 9 | costs ~1900 gas in Solidity. 10 | 11 | This script converts gas left to gas used per step, accounting for and removing the logging gas costs. */ 12 | 13 | const fs = require('fs') 14 | 15 | data = fs.readFileSync('./gasTest/outputs/gasTestOutput.txt', 'utf8').split('\n') 16 | 17 | // Grab the step numbers and gas left at each step 18 | const gasUsed = [] 19 | 20 | for (line of data) { 21 | if (line.includes("gas left:")) { 22 | 23 | const newLine = line.slice(0, 4) + line.slice(14).trim() 24 | gasUsed.push(newLine) 25 | } 26 | } 27 | 28 | console.log("Logged gas data is") 29 | console.dir(gasUsed) 30 | 31 | // Convert 'gas left' at each step to to 'gas used' by each step 32 | processedData = [] 33 | totalGas = 0 34 | for (i = 0; i < gasUsed.length; i++) { 35 | line = gasUsed[i] 36 | prevLine = gasUsed[i-1] 37 | 38 | const step = line.slice(0,3) 39 | if (step === "00.") { 40 | continue 41 | } 42 | const gas = Number(prevLine.slice(4)) - Number(line.slice(4)) - 1900 43 | processedData.push(`Gas used at step ${step}: ${gas} \n`) 44 | totalGas += gas 45 | } 46 | 47 | console.log("Processed gas data is") 48 | console.log(processedData) 49 | console.log(`Total gas usage of all steps is ${totalGas}`) 50 | 51 | fs.writeFile('./gasTest/outputs/gasTestOutput.txt', processedData, (err) => { 52 | if (err) { console.log(err) } 53 | }) 54 | -------------------------------------------------------------------------------- /Ethos-Vault/.env.example: -------------------------------------------------------------------------------- 1 | DEPLOYER_PRIVATE_KEY=abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 2 | FTMSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 3 | -------------------------------------------------------------------------------- /Ethos-Vault/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | commonjs: true, 4 | es2021: true, 5 | node: true, 6 | mocha: true, 7 | }, 8 | extends: ['standard', 'plugin:prettier/recommended'], 9 | parserOptions: { 10 | ecmaVersion: 'latest', 11 | }, 12 | rules: {}, 13 | }; 14 | -------------------------------------------------------------------------------- /Ethos-Vault/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | .openzeppelin 8 | 9 | #Hardhat files 10 | cache 11 | artifacts 12 | -------------------------------------------------------------------------------- /Ethos-Vault/.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm run solhint 5 | npm run eslint 6 | npm run test 7 | -------------------------------------------------------------------------------- /Ethos-Vault/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "singleQuote": true, 4 | "bracketSpacing": false, 5 | "trailingComma": "all", 6 | "printWidth": 120, 7 | "overrides": [ 8 | { 9 | "files": "*.sol", 10 | "options": { 11 | "printWidth": 120, 12 | "tabWidth": 4, 13 | "useTabs": false, 14 | "singleQuote": false, 15 | "bracketSpacing": false, 16 | "explicitTypes": "always" 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /Ethos-Vault/.solhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "solhint:recommended", 3 | "plugins": ["prettier"], 4 | "rules": { 5 | "prettier/prettier": "error", 6 | "compiler-version": ["error", "^0.8.0"], 7 | "func-visibility": ["warn", { "ignoreConstructors":true }] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Ethos-Vault/README.md: -------------------------------------------------------------------------------- 1 | # Reaper multistrategy vault 2 | 3 | An [ERC4626](https://eips.ethereum.org/EIPS/eip-4626) compliant vault using multistrategy (Yearn V2 style) architecture. 4 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/interfaces/IERC20Minimal.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IERC20Minimal { 6 | function balanceOf(address account) external view returns (uint256); 7 | 8 | function allowance(address owner, address spender) external view returns (uint256); 9 | 10 | function approve(address spender, uint256 amount) external returns (bool); 11 | } 12 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/interfaces/IERC4626Events.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IERC4626Events { 6 | event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); 7 | event Withdraw( 8 | address indexed sender, 9 | address indexed receiver, 10 | address indexed owner, 11 | uint256 assets, 12 | uint256 shares 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/interfaces/IERC4626Functions.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IERC4626Functions { 6 | function asset() external view returns (address assetTokenAddress); 7 | 8 | function totalAssets() external view returns (uint256 totalManagedAssets); 9 | 10 | function convertToShares(uint256 assets) external view returns (uint256 shares); 11 | 12 | function convertToAssets(uint256 shares) external view returns (uint256 assets); 13 | 14 | function maxDeposit(address receiver) external view returns (uint256 maxAssets); 15 | 16 | function previewDeposit(uint256 assets) external view returns (uint256 shares); 17 | 18 | function deposit(uint256 assets, address receiver) external returns (uint256 shares); 19 | 20 | function maxMint(address receiver) external view returns (uint256 maxShares); 21 | 22 | function previewMint(uint256 shares) external view returns (uint256 assets); 23 | 24 | function mint(uint256 shares, address receiver) external returns (uint256 assets); 25 | 26 | function maxWithdraw(address owner) external view returns (uint256 maxAssets); 27 | 28 | function previewWithdraw(uint256 assets) external view returns (uint256 shares); 29 | 30 | function withdraw( 31 | uint256 assets, 32 | address receiver, 33 | address owner 34 | ) external returns (uint256 shares); 35 | 36 | function maxRedeem(address owner) external view returns (uint256 maxShares); 37 | 38 | function previewRedeem(uint256 shares) external view returns (uint256 assets); 39 | 40 | function redeem( 41 | uint256 shares, 42 | address receiver, 43 | address owner 44 | ) external returns (uint256 assets); 45 | } 46 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/interfaces/IScaledBalanceToken.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IScaledBalanceToken { 6 | /** 7 | * @dev Returns the scaled balance of the user. The scaled balance is the sum of all the 8 | * updated stored balance divided by the reserve's liquidity index at the moment of the update 9 | * @param user The user whose balance is calculated 10 | * @return The scaled balance of the user 11 | **/ 12 | function scaledBalanceOf(address user) external view returns (uint256); 13 | 14 | /** 15 | * @dev Returns the scaled balance of the user and the scaled total supply. 16 | * @param user The address of the user 17 | * @return The scaled balance of the user 18 | * @return The scaled balance and the scaled total supply 19 | **/ 20 | function getScaledUserBalanceAndSupply(address user) external view returns (uint256, uint256); 21 | 22 | /** 23 | * @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index) 24 | * @return The scaled total supply 25 | **/ 26 | function scaledTotalSupply() external view returns (uint256); 27 | } 28 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/interfaces/IStrategy.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IStrategy { 6 | //vault only - withdraws funds from the strategy 7 | function withdraw(uint256 _amount) external returns (uint256 loss); 8 | 9 | //claims rewards, charges fees, and re-deposits; returns roi (+ve for profit, -ve for loss). 10 | function harvest() external returns (int256 roi); 11 | 12 | //returns the balance of all tokens managed by the strategy 13 | function balanceOf() external view returns (uint256); 14 | 15 | //returns the address of the vault that the strategy is serving 16 | function vault() external view returns (address); 17 | 18 | //returns the address of the token that the strategy needs to operate 19 | function want() external view returns (address); 20 | } 21 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/interfaces/IVeloPair.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity ^0.8.0; 3 | 4 | interface IVeloPair { 5 | function claimFees() external returns (uint256 claimed0, uint256 claimed1); 6 | 7 | function claimable0(address) external view returns (uint256); 8 | 9 | function claimable1(address) external view returns (uint256); 10 | 11 | function stable() external view returns (bool); 12 | 13 | function tokens() external view returns (address, address); 14 | 15 | function getAmountOut(uint256 amountIn, address tokenIn) external view returns (uint256); 16 | 17 | function getReserves() 18 | external 19 | view 20 | returns ( 21 | uint256 _reserve0, 22 | uint256 _reserve1, 23 | uint256 _blockTimestampLast 24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/libraries/Babylonian.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: agpl-3.0 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | // computes square roots using the babylonian method 6 | // https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method 7 | library Babylonian { 8 | // credit for this implementation goes to 9 | // https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol#L687 10 | function sqrt(uint256 x) internal pure returns (uint256) { 11 | if (x == 0) { 12 | return 0; 13 | } 14 | // this block is equivalent to r = uint256(1) << (BitMath.mostSignificantBit(x) / 2); 15 | // however that code costs significantly more gas 16 | uint256 xx = x; 17 | uint256 r = 1; 18 | if (xx >= 0x100000000000000000000000000000000) { 19 | xx >>= 128; 20 | r <<= 64; 21 | } 22 | if (xx >= 0x10000000000000000) { 23 | xx >>= 64; 24 | r <<= 32; 25 | } 26 | if (xx >= 0x100000000) { 27 | xx >>= 32; 28 | r <<= 16; 29 | } 30 | if (xx >= 0x10000) { 31 | xx >>= 16; 32 | r <<= 8; 33 | } 34 | if (xx >= 0x100) { 35 | xx >>= 8; 36 | r <<= 4; 37 | } 38 | if (xx >= 0x10) { 39 | xx >>= 4; 40 | r <<= 2; 41 | } 42 | if (xx >= 0x8) { 43 | r <<= 1; 44 | } 45 | r = (r + x / r) >> 1; 46 | r = (r + x / r) >> 1; 47 | r = (r + x / r) >> 1; 48 | r = (r + x / r) >> 1; 49 | r = (r + x / r) >> 1; 50 | r = (r + x / r) >> 1; 51 | r = (r + x / r) >> 1; // Seven iterations should be enough 52 | uint256 r1 = x / r; 53 | return (r < r1 ? r : r1); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/libraries/DistributionTypes.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.11; 3 | pragma experimental ABIEncoderV2; 4 | 5 | library DistributionTypes { 6 | struct RewardsConfigInput { 7 | uint88 emissionPerSecond; 8 | uint256 totalSupply; 9 | uint32 distributionEnd; 10 | address asset; 11 | address reward; 12 | } 13 | 14 | struct UserAssetInput { 15 | address underlyingAsset; 16 | uint256 userBalance; 17 | uint256 totalSupply; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/libraries/ReaperMathUtils.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | library ReaperMathUtils { 6 | /** 7 | * @notice For doing an unchecked increment of an index for gas optimization purposes 8 | * @param _i - The number to increment 9 | * @return The incremented number 10 | */ 11 | function uncheckedInc(uint256 _i) internal pure returns (uint256) { 12 | unchecked { 13 | return _i + 1; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Ethos-Vault/contracts/libraries/SafeERC20Minimal.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: agpl-3.0 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../interfaces/IERC20Minimal.sol"; 6 | 7 | library SafeERC20Minimal { 8 | // Wrapper over IERC20Minimal#approve() to revert on false return value 9 | function _safeIncreaseAllowance( 10 | IERC20Minimal _token, 11 | address _account, 12 | uint256 _amount 13 | ) internal { 14 | uint256 newAllowance = _token.allowance(address(this), _account) + _amount; 15 | require(_token.approve(_account, newAllowance), "Safe increase allowance failed"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Ethos-Vault/hardhat.config.js: -------------------------------------------------------------------------------- 1 | require("@nomicfoundation/hardhat-toolbox"); 2 | require('dotenv').config(); 3 | require('@openzeppelin/hardhat-upgrades'); 4 | require("hardhat-gas-reporter"); 5 | 6 | const PRIVATE_KEY = process.env.DEPLOYER_PRIVATE_KEY; 7 | const FTMSCAN_KEY = process.env.FTMSCAN_API_KEY; 8 | 9 | /** @type import('hardhat/config').HardhatUserConfig */ 10 | module.exports = { 11 | solidity: { 12 | compilers: [ 13 | { 14 | version: "0.8.11", 15 | settings: { 16 | optimizer: { 17 | enabled: true, 18 | runs: 200, 19 | }, 20 | }, 21 | }, 22 | ], 23 | }, 24 | networks: { 25 | mainnet: { 26 | url: `https://rpc.ftm.tools`, 27 | chainId: 250, 28 | accounts: [`0x${PRIVATE_KEY}`], 29 | }, 30 | testnet: { 31 | url: `https://rpcapi-tracing.testnet.fantom.network`, 32 | chainId: 4002, 33 | accounts: [`0x${PRIVATE_KEY}`], 34 | }, 35 | }, 36 | etherscan: { 37 | apiKey: FTMSCAN_KEY, 38 | }, 39 | mocha: { 40 | timeout: 1200000, 41 | }, 42 | gasReporter: { 43 | enabled: true 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /Ethos-Vault/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "strategy-starter-kit", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "solhint": "npx solhint 'contracts/**/*.sol'", 8 | "eslint": "npx eslint scripts/ && npx eslint test/", 9 | "test": "npx hardhat test" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/Byte-Masons/strategy-starter-kit.git" 14 | }, 15 | "keywords": [], 16 | "author": "", 17 | "license": "AGPL-3.0-only", 18 | "bugs": { 19 | "url": "https://github.com/Byte-Masons/strategy-starter-kit/issues" 20 | }, 21 | "homepage": "https://github.com/Byte-Masons/strategy-starter-kit#readme", 22 | "devDependencies": { 23 | "@nomicfoundation/hardhat-toolbox": "^1.0.2", 24 | "@openzeppelin/hardhat-upgrades": "^1.20.0", 25 | "eslint": "^8.22.0", 26 | "eslint-config-prettier": "^8.5.0", 27 | "eslint-config-standard": "^17.0.0", 28 | "eslint-plugin-import": "^2.26.0", 29 | "eslint-plugin-n": "^15.2.4", 30 | "eslint-plugin-prettier": "^4.2.1", 31 | "eslint-plugin-promise": "^6.0.0", 32 | "hardhat": "^2.10.2", 33 | "hardhat-gas-reporter": "^1.0.9", 34 | "husky": "^8.0.1", 35 | "prettier": "^2.7.1", 36 | "prettier-plugin-solidity": "^1.0.0-beta.24", 37 | "solhint": "^3.3.7", 38 | "solhint-plugin-prettier": "^0.0.5" 39 | }, 40 | "dependencies": { 41 | "@openzeppelin/contracts": "^4.7.3", 42 | "@openzeppelin/contracts-upgradeable": "^4.7.3", 43 | "dotenv": "^16.0.1" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Ethos-Vault/scripts/deploy/1-vault.js: -------------------------------------------------------------------------------- 1 | const {ethers} = require('hardhat'); 2 | 3 | async function main() { 4 | const Vault = await ethers.getContractFactory('ReaperVaultv1_4'); 5 | 6 | const wantAddress = '0x45f4682B560d4e3B8FF1F1b3A38FDBe775C7177b'; 7 | const tokenName = 'TOMB-MAI Tomb Crypt'; 8 | const tokenSymbol = 'rf-TOMB-MAI'; 9 | const depositFee = 0; 10 | const tvlCap = ethers.constants.MaxUint256; 11 | 12 | const vault = await Vault.deploy(wantAddress, tokenName, tokenSymbol, depositFee, tvlCap); 13 | 14 | await vault.deployed(); 15 | console.log('Vault deployed to:', vault.address); 16 | } 17 | 18 | main() 19 | .then(() => process.exit(0)) 20 | .catch((error) => { 21 | console.error(error); 22 | process.exit(1); 23 | }); 24 | -------------------------------------------------------------------------------- /Ethos-Vault/scripts/deploy/2-strategy.js: -------------------------------------------------------------------------------- 1 | const {ethers, upgrades} = require('hardhat'); 2 | 3 | async function main() { 4 | const vaultAddress = 'TODO'; 5 | 6 | const Strategy = await ethers.getContractFactory('ReaperStrategyTombMai'); 7 | const treasuryAddress = '0x0e7c5313E9BB80b654734d9b7aB1FB01468deE3b'; 8 | const paymentSplitterAddress = '0x63cbd4134c2253041F370472c130e92daE4Ff174'; 9 | const strategist1 = '0x1E71AEE6081f62053123140aacC7a06021D77348'; 10 | const strategist2 = '0x81876677843D00a7D792E1617459aC2E93202576'; 11 | const strategist3 = '0x1A20D7A31e5B3Bc5f02c8A146EF6f394502a10c4'; 12 | const superAdmin = '0x04C710a1E8a738CDf7cAD3a52Ba77A784C35d8CE'; 13 | const admin = '0x539eF36C804e4D735d8cAb69e8e441c12d4B88E0'; 14 | const guardian = '0xf20E25f2AB644C8ecBFc992a6829478a85A98F2c'; 15 | 16 | const strategy = await upgrades.deployProxy( 17 | Strategy, 18 | [ 19 | vaultAddress, 20 | [treasuryAddress, paymentSplitterAddress], 21 | [strategist1, strategist2, strategist3], 22 | [superAdmin, admin, guardian], 23 | ], 24 | {kind: 'uups', timeout: 0}, 25 | ); 26 | 27 | await strategy.deployed(); 28 | console.log('Strategy deployed to:', strategy.address); 29 | } 30 | 31 | main() 32 | .then(() => process.exit(0)) 33 | .catch((error) => { 34 | console.error(error); 35 | process.exit(1); 36 | }); 37 | -------------------------------------------------------------------------------- /Ethos-Vault/scripts/deploy/3-initialize.js: -------------------------------------------------------------------------------- 1 | const {ethers} = require('hardhat'); 2 | 3 | async function main() { 4 | const vaultAddress = 'TODO'; 5 | const strategyAddress = 'TODO'; 6 | 7 | const Vault = await ethers.getContractFactory('ReaperVaultv1_4'); 8 | const vault = Vault.attach(vaultAddress); 9 | 10 | await vault.initialize(strategyAddress); 11 | console.log('Vault initialized'); 12 | } 13 | 14 | main() 15 | .then(() => process.exit(0)) 16 | .catch((error) => { 17 | console.error(error); 18 | process.exit(1); 19 | }); 20 | -------------------------------------------------------------------------------- /Ethos-Vault/slither.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "detectors_to_exclude": "naming-convention", 3 | "filter_paths": "node_modules" 4 | } 5 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0-EB806.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0-EB806.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/02410a37de8a54f8cfb7a8842a2dd162-D2755.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/02410a37de8a54f8cfb7a8842a2dd162-D2755.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0732b88680cd25f6d5e141aae0807aac-A3856.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0732b88680cd25f6d5e141aae0807aac-A3856.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0afc1ac766d7759ba3df429cccb8f500-074A6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0afc1ac766d7759ba3df429cccb8f500-074A6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0bfce954f01a89faf77cf4344f557d71-E0190.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0bfce954f01a89faf77cf4344f557d71-E0190.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0d68144a83d0d1e6c6c6c068571b0fe6-D5B49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/0d68144a83d0d1e6c6c6c068571b0fe6-D5B49.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1-B2132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1-B2132.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1080667809002037320-8957D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1080667809002037320-8957D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1083068770823721071-EE4F6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1083068770823721071-EE4F6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/137d3e15fa9d5b9b5e5dbbd3fc432191-201D6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/137d3e15fa9d5b9b5e5dbbd3fc432191-201D6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1c21b55b70f62969097fe6429e141919-ED8F9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1c21b55b70f62969097fe6429e141919-ED8F9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f3c1-445DC.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f3c6-621A1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f3fc-4884A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f427-DA043.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f440-6C64D.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f446-9CC34.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f44b-1f3fb-E6912.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f44b-8A059.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f44d-1f3fb-ED2AA.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f44d-1f3fc-EAB0D.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f44d-27259.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f451-B565E.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f49a-E8B01.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f49c-71A75.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f4aa-2FD27.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f4af-4CFF5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f4dc-AC641.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f50d-195C0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f525-8FE4F.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f5c814293e8b9e942d51e84358d0eec-7016C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f5c814293e8b9e942d51e84358d0eec-7016C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f600-F7528.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f602-168C5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f604-BF863.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f605-42B43.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f608-C031D.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f609-9EC67.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f60d-BEAFF.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f626-91074.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f62c-CE43C.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f632-D2B7E.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f642-83E8A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f64f-1f3fc-34E32.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f64f-22B8D.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f680-A35CE.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f6a8-A8AB3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f914-15707.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f91a-46549.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f928-6E613.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f929-12865.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f972-F415D.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f9be-DDCD0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1f9d1-5BC80.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1fac2-960B6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/1fae1-B19DE.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2-ADBB4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2-ADBB4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/255bb497f3e2b0149aa09b375d70b884-1E8AF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/255bb497f3e2b0149aa09b375d70b884-1E8AF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/261d-1f3fb-08F0C.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2696-15F4A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2705-0589F.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2764-A3D25.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/298683a190026937bb9033ded53b8aa3-EEC98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/298683a190026937bb9033ded53b8aa3-EEC98.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2a9faff195fe333526cfe6ae6fce1420-49B98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/2a9faff195fe333526cfe6ae6fce1420-49B98.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3-FB033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3-FB033.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/310bb104d49148a05def03fa039fef92-D894A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/310bb104d49148a05def03fa039fef92-D894A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3270d963d3ddad601eced253ef8486c0-41F1F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3270d963d3ddad601eced253ef8486c0-41F1F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/34e6bfee9fb587793cf81548262a0941-2A38B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/34e6bfee9fb587793cf81548262a0941-2A38B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3a08cba67feac2ee28688587f3e38aed-8A06A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3a08cba67feac2ee28688587f3e38aed-8A06A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3b01c38b7c5b905fd8e8a1d72f7d7492-53427.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3b01c38b7c5b905fd8e8a1d72f7d7492-53427.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3ccc4d04c7b24badc56c3a0edc6ab47f-5CF99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/3ccc4d04c7b24badc56c3a0edc6ab47f-5CF99.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4-4551A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4-4551A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/402b68164a51455e395a06ad04fc04b5-D7A38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/402b68164a51455e395a06ad04fc04b5-D7A38.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4155d983056d861c045620cf8e11d612-A5980.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4155d983056d861c045620cf8e11d612-A5980.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/42a6344ce063bedf07629f2cfc25a973-6B1A9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/42a6344ce063bedf07629f2cfc25a973-6B1A9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/43d4de17430aed2a2ecc19ffe96fbf29-9CFFA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/43d4de17430aed2a2ecc19ffe96fbf29-9CFFA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/43dd9f8f0417e33ee6819ac321769e40-ED5ED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/43dd9f8f0417e33ee6819ac321769e40-ED5ED.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/45f63d884cbf231e2ca665be01155e18-68113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/45f63d884cbf231e2ca665be01155e18-68113.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/47c22349beb07ff08b7d61406da2c1a8-6AC2E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/47c22349beb07ff08b7d61406da2c1a8-6AC2E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4c09efd6f261e591962c64479d356065-FEEF3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4c09efd6f261e591962c64479d356065-FEEF3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4de0a7f237fde45d02ba1266af3cbf19-81483.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4de0a7f237fde45d02ba1266af3cbf19-81483.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4e9282a50f2a3ed6b40048e5212b1769-CCF1B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4e9282a50f2a3ed6b40048e5212b1769-CCF1B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4fc87fcfb254cf58d3b7bab5f1844eb9-F34FC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/4fc87fcfb254cf58d3b7bab5f1844eb9-F34FC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/520534c5d8407c48744b2a2c8eb20ab3-02152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/520534c5d8407c48744b2a2c8eb20ab3-02152.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/52ea91685ed5ee0476335eaccbfe8104-65557.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/52ea91685ed5ee0476335eaccbfe8104-65557.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/538794d25bb901dbb49cd72395c045b0-40A3B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/538794d25bb901dbb49cd72395c045b0-40A3B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/55afac51a32db1ff015fd3a7d901e67a-A5862.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/55afac51a32db1ff015fd3a7d901e67a-A5862.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/5e3fb61df91ed29c573265a690af4600-E824E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/5e3fb61df91ed29c573265a690af4600-E824E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6073716808be3a805321bd4d035b85a4-606CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6073716808be3a805321bd4d035b85a4-606CD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/641ea524f5de8dcf2fc726fa3ef176b9-E98DB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/641ea524f5de8dcf2fc726fa3ef176b9-E98DB.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/67594ee4b4d1fc03bca468327a0d145b-BD76A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/67594ee4b4d1fc03bca468327a0d145b-BD76A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6b6b95378deaa6ca113f8fbef333b051-0B6D4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6b6b95378deaa6ca113f8fbef333b051-0B6D4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6bd36f153db0689fe67d47ceb253ca6c-DA0E8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6bd36f153db0689fe67d47ceb253ca6c-DA0E8.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6e53c2d72f93e345a64684197d266a06-AF973.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/6e53c2d72f93e345a64684197d266a06-AF973.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/71abe85c3597a3e523c007ae867d7e3c-4DDE9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/71abe85c3597a3e523c007ae867d7e3c-4DDE9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7271940694076a1b74df95338eb1ddf7-AD066.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7271940694076a1b74df95338eb1ddf7-AD066.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/754852085123776523-2FF64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/754852085123776523-2FF64.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/754c60f4d2cd433f04b08f2e0b8aa798-E95F1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/754c60f4d2cd433f04b08f2e0b8aa798-E95F1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/755912753830559785-DBB45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/755912753830559785-DBB45.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/773490663245348864-8086D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/773490663245348864-8086D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/785c0b7123c292fe05d43e8dbf0d7044-B46B9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/785c0b7123c292fe05d43e8dbf0d7044-B46B9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7b7b1265bb80105efc0c077e7748a28d-F4A60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7b7b1265bb80105efc0c077e7748a28d-F4A60.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7cbfcd6df2ea8a4d476d784ad1e77534-EF7B1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7cbfcd6df2ea8a4d476d784ad1e77534-EF7B1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7fb5758c5d2db4cd84defb760f0de04b-E0EA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/7fb5758c5d2db4cd84defb760f0de04b-E0EA1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/82287b4212a9854e5730462bd70677ae-E8BF4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/82287b4212a9854e5730462bd70677ae-E8BF4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/827962529187102760-BF28A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/827962529187102760-BF28A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/844356250778599465-3192F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/844356250778599465-3192F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827027075142-F23DF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827027075142-F23DF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827089727568-5FD38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827089727568-5FD38.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827315826708-F59C0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827315826708-F59C0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827409412118-10EE9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893827409412118-10EE9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893828280909886-FBF42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/851893828280909886-FBF42.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/853015931310702642-0E00F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/853015931310702642-0E00F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/856236751861448705-2BFCB.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/856236751861448705-2BFCB.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/866147853562675230-9F671.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/866147853562675230-9F671.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/874085353554866197-24EAE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/874085353554866197-24EAE.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/877982099355877457-205B9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/877982099355877457-205B9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/878779c168e7bfa39e7181e57f9afd29-5320A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/878779c168e7bfa39e7181e57f9afd29-5320A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/881735755439939666-4D94E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/881735755439939666-4D94E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/8817fd8ba40654b1081a3df74efdb7c3-65D01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/8817fd8ba40654b1081a3df74efdb7c3-65D01.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/89e3fbd21924c4a21a21a80cdec753b1-00F3B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/89e3fbd21924c4a21a21a80cdec753b1-00F3B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/8HuePg3x_400x400-CB835.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/8HuePg3x_400x400-CB835.jpg -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/903291788750647376-8704A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/903291788750647376-8704A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/907282449598406696-84D3D.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/907282449598406696-84D3D.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/910676187288846397-518CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/910676187288846397-518CD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/918262047433691247-911FE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/918262047433691247-911FE.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/93334ad034acb95a4cdc51c9bf2a5151-5883A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/93334ad034acb95a4cdc51c9bf2a5151-5883A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946117525316460616-3CCAE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946117525316460616-3CCAE.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946117525324824596-92F5F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946117525324824596-92F5F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946117525496791091-E19DC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946117525496791091-E19DC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946118120400126023-76D27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/946118120400126023-76D27.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/96119e14c860edbac5f4d243e683a992-3E151.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/96119e14c860edbac5f4d243e683a992-3E151.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/966eaf1aafcae6abcb9e0db823947e2f-96F55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/966eaf1aafcae6abcb9e0db823947e2f-96F55.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/970d2e2f00cd7ef2134a1a3f21326349-404EA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/970d2e2f00cd7ef2134a1a3f21326349-404EA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/977133670429261884-CA8EA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/977133670429261884-CA8EA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/97efd9f7d02c37a237365308cac0858d-BEA6A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/97efd9f7d02c37a237365308cac0858d-BEA6A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/98a7d867a5207a54b43c4edc1a097f3c-41435.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/98a7d867a5207a54b43c4edc1a097f3c-41435.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/995fd0bd0a84a2bccb63987868d11575-CB8B5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/995fd0bd0a84a2bccb63987868d11575-CB8B5.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/9bf2181404e658cab4039c07df56213f-E3E89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/9bf2181404e658cab4039c07df56213f-E3E89.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/9c068826a94f6e1d158939c8f708ded9-52A19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/9c068826a94f6e1d158939c8f708ded9-52A19.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/9dcd9056a512c901f677da933fd9f073-EDC78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/9dcd9056a512c901f677da933fd9f073-EDC78.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/C4-banner-7C19B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/C4-banner-7C19B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/Ef_p6-ZS_400x400-BB59D.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/Ef_p6-ZS_400x400-BB59D.jpg -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/Ethos_Audit_Report-2B885.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/Ethos_Audit_Report-2B885.pdf -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/IMG_20230220_164748_053-54412.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/IMG_20230220_164748_053-54412.jpg -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/Screenshot_from_2023-02-23_18-19-50-22D4C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/Screenshot_from_2023-02-23_18-19-50-22D4C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a0457d118b6579a0106b86d86660fd78-D29A1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a0457d118b6579a0106b86d86660fd78-D29A1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a2137aad94eca43e965735f01ae6b491-C6B0B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a2137aad94eca43e965735f01ae6b491-C6B0B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a46a59d6636619f3cc132c12dba469a6-7A310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a46a59d6636619f3cc132c12dba469a6-7A310.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a5e0feda0373c38597c374e1beaad37c-94BB3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a5e0feda0373c38597c374e1beaad37c-94BB3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a681a986fc31a9739459ccc096516151-9053D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a681a986fc31a9739459ccc096516151-9053D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a_6ba88d1c43592a629c6b3b31c0900ea3-B17AD.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a_6ba88d1c43592a629c6b3b31c0900ea3-B17AD.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a_bca0879461d4c6a590bc5e04f6d900e6-9565D.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/a_bca0879461d4c6a590bc5e04f6d900e6-9565D.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ac4bbcb3c0b85e2a4e614559bf696e56-6C05D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ac4bbcb3c0b85e2a4e614559bf696e56-6C05D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ad1bdf970e39199a645d59618f8426cc-F4141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ad1bdf970e39199a645d59618f8426cc-F4141.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ad5f2ada72627b32551e77343b0f04bb-1F0DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ad5f2ada72627b32551e77343b0f04bb-1F0DE.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ae3160cda6795ff893cfe8ef7bab8d2c-8C8E7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ae3160cda6795ff893cfe8ef7bab8d2c-8C8E7.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ae55bccd105a97e5e171c290822eab04-394BB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ae55bccd105a97e5e171c290822eab04-394BB.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/apple-touch-icon-192x192-E344C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/apple-touch-icon-192x192-E344C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/b3d5d3da563b7729f8aa7670add199d8-FC63A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/b3d5d3da563b7729f8aa7670add199d8-FC63A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/b65274f940e95fed4fe6240822c5e5be-FF508.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/b65274f940e95fed4fe6240822c5e5be-FF508.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/b84ee6d242a731cab60874693c9e4e63-64587.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/b84ee6d242a731cab60874693c9e4e63-64587.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c3db5dc6fabeb28dbf345a29a4efed9b-4E977.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c3db5dc6fabeb28dbf345a29a4efed9b-4E977.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c4-og-banner-0FCFA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c4-og-banner-0FCFA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c47d52c806aea627c7b227b287ce8808-40688.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c47d52c806aea627c7b227b287ce8808-40688.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c5c9cae9cd193f1eb0c18644d30be95c-B5DEB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c5c9cae9cd193f1eb0c18644d30be95c-B5DEB.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c6b85a4a6ca07ab15a30a24f570be5b8-72985.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c6b85a4a6ca07ab15a30a24f570be5b8-72985.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c6dfa3135b62e742ac7e28c3e14714f9-90F20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c6dfa3135b62e742ac7e28c3e14714f9-90F20.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c98757e55697709f153f37422c6f4687-52C59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c98757e55697709f153f37422c6f4687-52C59.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c9cb30134c634c9e02d0c64df4922803-98E33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/c9cb30134c634c9e02d0c64df4922803-98E33.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/cb23e87e4eb33d228ed3294f90188951-76405.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/cb23e87e4eb33d228ed3294f90188951-76405.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/d2a162ea47f3840acf3a61c2542af236-3CFFE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/d2a162ea47f3840acf3a61c2542af236-3CFFE.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/d6043278f422ca086a0e4a72f49ada43-4C1F6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/d6043278f422ca086a0e4a72f49ada43-4C1F6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/d61e2dd3154e69042813d2049f3f6ae5-68F9C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/d61e2dd3154e69042813d2049f3f6ae5-68F9C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dance-445F7.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dance-445F7.mp4 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/db6e41bc98856f0b66c82ddf629bb78d-A6979.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/db6e41bc98856f0b66c82ddf629bb78d-A6979.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dc3f31b93aae412697eb105724a8d327-E1FFD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dc3f31b93aae412697eb105724a8d327-E1FFD -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dec5cd0a8b13987bf086a9419d11bedf-27E4F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dec5cd0a8b13987bf086a9419d11bedf-27E4F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-1A6A9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-1A6A9 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-30287: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-30287 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-BE2B8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-BE2B8 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-D03B3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/dev-D03B3 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/df2bfc03fb506f5ea3972c4121b8ffcc-949FA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/df2bfc03fb506f5ea3972c4121b8ffcc-949FA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/e75f1d2172fb8759b8c2afdc4fe0a9ca-831F0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/e75f1d2172fb8759b8c2afdc4fe0a9ca-831F0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/e8067e29333e48dd8b8632737d02e622-3F21A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/e8067e29333e48dd8b8632737d02e622-3F21A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ec906ee29b2bacd49cd7e28a849ef04b-F54DF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ec906ee29b2bacd49cd7e28a849ef04b-F54DF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ed3bcd3fb52ff9076013f9003b317ec7-BB18F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ed3bcd3fb52ff9076013f9003b317ec7-BB18F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ee6c31750f46b7cd080ab8b84efae1c2-9E926.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ee6c31750f46b7cd080ab8b84efae1c2-9E926.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/f7147bfadb72a2afd2401e5071b39609-7268B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/f7147bfadb72a2afd2401e5071b39609-7268B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/f866712af10980f137a46327d964bf33-5E52D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/f866712af10980f137a46327d964bf33-5E52D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/f8939cf60e6c24c4da47448b0c3c932c-C246F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/f8939cf60e6c24c4da47448b0c3c932c-C246F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/fa9f75131f9a6c7e348ab24a14c24609-3E467.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/fa9f75131f9a6c7e348ab24a14c24609-3E467.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ff3fa3f8-9c74-450e-9309-0c1d315e2339-53152: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ff3fa3f8-9c74-450e-9309-0c1d315e2339-53152 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-400-E988B.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-400-E988B.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-500-0777F.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-500-0777F.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-600-CB411.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-600-CB411.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-700-891AC.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-700-891AC.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-800-D36B0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-italic-800-D36B0.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-400-1456D.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-400-1456D.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-500-89CE5.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-500-89CE5.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-600-C1EA8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-600-C1EA8.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-700-1949A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-700-1949A.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-800-58487.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/ggsans-normal-800-58487.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/gist-og-image-17482.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/gist-og-image-17482.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/https___master.d2d2stxuuhsjdw.amplifyapp.c-1BA4A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/https___master.d2d2stxuuhsjdw.amplifyapp.c-1BA4A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-00028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-00028.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-01D99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-01D99.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-0AEA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-0AEA1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-17191.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-17191.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-3335B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-3335B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-68CEA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-68CEA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-6CF9A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-6CF9A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-75D58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-75D58.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-C8F67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/image-C8F67.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/solarized-dark.min-BA98F.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-comment,.hljs-quote{color:#586e75}.hljs-keyword,.hljs-selector-tag,.hljs-addition{color:#859900}.hljs-number,.hljs-string,.hljs-meta .hljs-meta-string,.hljs-literal,.hljs-doctag,.hljs-regexp{color:#2aa198}.hljs-title,.hljs-section,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#268bd2}.hljs-attribute,.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-class .hljs-title,.hljs-type{color:#b58900}.hljs-symbol,.hljs-bullet,.hljs-subst,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-link{color:#cb4b16}.hljs-built_in,.hljs-deletion{color:#dc322f}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/yearn-vaults-12442: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/yearn-vaults-12442 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/yearn-vaults-41299: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].html_Files/yearn-vaults-41299 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/C4-banner-7C19B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/C4-banner-7C19B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/Ethos_Audit_Report-2B885.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/Ethos_Audit_Report-2B885.pdf -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/IMG_20230220_164748_053-54412.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/IMG_20230220_164748_053-54412.jpg -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/Screenshot_from_2023-02-23_18-19-50-22D4C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/Screenshot_from_2023-02-23_18-19-50-22D4C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/c4-og-banner-0FCFA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/c4-og-banner-0FCFA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dance-62FB3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dance-62FB3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dc3f31b93aae412697eb105724a8d327-00001-D2ADA.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dc3f31b93aae412697eb105724a8d327-00001-D2ADA.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-1A6A9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-1A6A9 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-30287: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-30287 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-BE2B8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-BE2B8 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-D03B3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/dev-D03B3 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/ff3fa3f8-9c74-450e-9309-0c1d315e2339-53152: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/ff3fa3f8-9c74-450e-9309-0c1d315e2339-53152 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/gist-og-image-17482.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/gist-og-image-17482.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/https___master.d2d2stxuuhsjdw.amplifyapp.c-1BA4A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/https___master.d2d2stxuuhsjdw.amplifyapp.c-1BA4A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-00028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-00028.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-01D99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-01D99.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-0AEA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-0AEA1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-17191.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-17191.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-3335B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-3335B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-68CEA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-68CEA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-6CF9A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-6CF9A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-75D58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-75D58.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-C8F67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/image-C8F67.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/yearn-vaults-12442: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/yearn-vaults-12442 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/yearn-vaults-41299: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-02-ethos/f6ed106a105ed8299a9d38aaf490c391e200a8f3/discord-export/Code4rena - ARCHIVE-Q1-2023 - ethos-feb16 [1075513398688743524].txt_Files/yearn-vaults-41299 -------------------------------------------------------------------------------- /remappings.txt: -------------------------------------------------------------------------------- 1 | @openzeppelin=Ethos-Vault/node_modules/@openzeppelin --------------------------------------------------------------------------------