2023-06-19 00:08:10 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html lang = "en" >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >
< title > LCOV - lcov.info - proposals/InfrastructureUpgradeProposal.sol< / title >
< link rel = "stylesheet" type = "text/css" href = "../gcov.css" >
< / head >
< body >
< table width = "100%" border = 0 cellspacing = 0 cellpadding = 0 >
< tr > < td class = "title" > LCOV - code coverage report< / td > < / tr >
< tr > < td class = "ruler" > < img src = "../glass.png" width = 3 height = 3 alt = "" > < / td > < / tr >
< tr >
< td width = "100%" >
< table cellpadding = 1 border = 0 width = "100%" >
< tr >
< td width = "10%" class = "headerItem" > Current view:< / td >
< td width = "35%" class = "headerValue" > < a href = "../index.html" > top level< / a > - < a href = "index.html" > proposals< / a > - InfrastructureUpgradeProposal.sol< span style = "font-size: 80%;" > (source / < a href = "InfrastructureUpgradeProposal.sol.func-sort-c.html" > functions< / a > )< / span > < / td >
< td width = "5%" > < / td >
< td width = "15%" > < / td >
< td width = "10%" class = "headerCovTableHead" > Hit< / td >
< td width = "10%" class = "headerCovTableHead" > Total< / td >
< td width = "15%" class = "headerCovTableHead" > Coverage< / td >
< / tr >
< tr >
< td class = "headerItem" > Test:< / td >
< td class = "headerValue" > lcov.info< / td >
< td > < / td >
< td class = "headerItem" > Lines:< / td >
2023-06-20 21:04:29 +00:00
< td class = "headerCovTableEntry" > 75< / td >
< td class = "headerCovTableEntry" > 75< / td >
2023-06-19 00:08:10 +00:00
< td class = "headerCovTableEntryHi" > 100.0 %< / td >
< / tr >
< tr >
< td class = "headerItem" > Date:< / td >
2023-06-20 21:04:29 +00:00
< td class = "headerValue" > 2023-06-20 21:04:08< / td >
2023-06-19 00:08:10 +00:00
< td > < / td >
< td class = "headerItem" > Functions:< / td >
2023-06-20 21:04:29 +00:00
< td class = "headerCovTableEntry" > 6< / td >
< td class = "headerCovTableEntry" > 6< / td >
2023-06-19 00:08:10 +00:00
< td class = "headerCovTableEntryHi" > 100.0 %< / td >
< / tr >
< tr >
< td class = "headerItem" > Legend:< / td >
< td class = "headerValueLeg" > Lines:
< span class = "coverLegendCov" > hit< / span >
< span class = "coverLegendNoCov" > not hit< / span >
< / td >
< td > < / td >
< / tr >
< tr > < td > < img src = "../glass.png" width = 3 height = 3 alt = "" > < / td > < / tr >
< / table >
< / td >
< / tr >
< tr > < td class = "ruler" > < img src = "../glass.png" width = 3 height = 3 alt = "" > < / td > < / tr >
< / table >
< table cellpadding = 0 cellspacing = 0 border = 0 >
< tr >
< td > < br > < / td >
< / tr >
< tr >
< td >
< pre class = "sourceHeading" > Line data Source code< / pre >
< pre class = "source" >
< a name = "1" > < span class = "lineNum" > 1 < / span > : // SPDX-License-Identifier: MIT< / a >
< a name = "2" > < span class = "lineNum" > 2 < / span > : < / a >
< a name = "3" > < span class = "lineNum" > 3 < / span > : pragma solidity ^0.6.12;< / a >
< a name = "4" > < span class = "lineNum" > 4 < / span > : pragma experimental ABIEncoderV2;< / a >
< a name = "5" > < span class = "lineNum" > 5 < / span > : < / a >
< a name = "6" > < span class = "lineNum" > 6 < / span > : // OZ Imports< / a >
< a name = "7" > < span class = "lineNum" > 7 < / span > : < / a >
< a name = "8" > < span class = "lineNum" > 8 < / span > : import { AdminUpgradeableProxy } from " ../common/AdminUpgradeableProxy.sol" ;< / a >
< a name = "9" > < span class = "lineNum" > 9 < / span > : import { IERC20 } from " @openzeppelin/contracts/token/ERC20/IERC20.sol" ;< / a >
< a name = "10" > < span class = "lineNum" > 10 < / span > : < / a >
< a name = "11" > < span class = "lineNum" > 11 < / span > : // Tornado imports< / a >
< a name = "12" > < span class = "lineNum" > 12 < / span > : < / a >
< a name = "13" > < span class = "lineNum" > 13 < / span > : import { ITornadoInstance } from " tornado-anonymity-mining/contracts/interfaces/ITornadoInstance.sol" ;< / a >
< a name = "14" > < span class = "lineNum" > 14 < / span > : < / a >
< a name = "15" > < span class = "lineNum" > 15 < / span > : // Local V2 imports< / a >
< a name = "16" > < span class = "lineNum" > 16 < / span > : < / a >
< a name = "17" > < span class = "lineNum" > 17 < / span > : import { RelayerRegistry } from " ../v2/RelayerRegistry.sol" ;< / a >
< a name = "18" > < span class = "lineNum" > 18 < / span > : < / a >
< a name = "19" > < span class = "lineNum" > 19 < / span > : import { FeeOracleManager } from " ../v2/FeeOracleManager.sol" ;< / a >
< a name = "20" > < span class = "lineNum" > 20 < / span > : < / a >
< a name = "21" > < span class = "lineNum" > 21 < / span > : import { InstanceRegistry } from " ../v2/InstanceRegistry.sol" ;< / a >
< a name = "22" > < span class = "lineNum" > 22 < / span > : < / a >
< a name = "23" > < span class = "lineNum" > 23 < / span > : import { UniswapFeeOracle, UniswapV3OracleHelper } from " ../v2/UniswapFeeOracle.sol" ;< / a >
< a name = "24" > < span class = "lineNum" > 24 < / span > : < / a >
< a name = "25" > < span class = "lineNum" > 25 < / span > : import { TornadoRouter } from " ../v2/TornadoRouter.sol" ;< / a >
< a name = "26" > < span class = "lineNum" > 26 < / span > : < / a >
< a name = "27" > < span class = "lineNum" > 27 < / span > : /**< / a >
< a name = "28" > < span class = "lineNum" > 28 < / span > : * @title InfrastructureUpgradeProposal< / a >
< a name = "29" > < span class = "lineNum" > 29 < / span > : * @author AlienTornadosaurusHex< / a >
< a name = "30" > < span class = "lineNum" > 30 < / span > : * @notice Proposal which will upgrade only the SURROUNDING infrastrucure in connection with the relayer< / a >
< a name = "31" > < span class = "lineNum" > 31 < / span > : * registry such that multiple oracles can be used and so the DAO can add more instances.< / a >
< a name = "32" > < span class = "lineNum" > 32 < / span > : */< / a >
< a name = "33" > < span class = "lineNum" > 33 < / span > : contract InfrastructureUpgradeProposal {< / a >
2023-06-20 21:04:29 +00:00
< a name = "34" > < span class = "lineNum" > 34 < / span > : /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ADDRESSES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */< / a >
2023-06-19 00:08:10 +00:00
< a name = "35" > < span class = "lineNum" > 35 < / span > : < / a >
< a name = "36" > < span class = "lineNum" > 36 < / span > : /* @dev The address of the current FeeManager proxy, future FeeOracleManager */< / a >
< a name = "37" > < span class = "lineNum" > 37 < / span > : address payable public constant feeManagerProxyAddress = 0x5f6c97C6AD7bdd0AE7E0Dd4ca33A4ED3fDabD4D7;< / a >
< a name = "38" > < span class = "lineNum" > 38 < / span > : < / a >
< a name = "39" > < span class = "lineNum" > 39 < / span > : /* @dev The address of the current InstanceRegistry proxy, this will be upgraded */< / a >
< a name = "40" > < span class = "lineNum" > 40 < / span > : address payable public constant instanceRegistryProxyAddress = 0xB20c66C4DE72433F3cE747b58B86830c459CA911;< / a >
< a name = "41" > < span class = "lineNum" > 41 < / span > : < / a >
< a name = "42" > < span class = "lineNum" > 42 < / span > : /* @dev The address of the current RelayerRegistry proxy, this will be upgraded */< / a >
< a name = "43" > < span class = "lineNum" > 43 < / span > : address payable public constant relayerRegistryProxyAddress = 0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2;< / a >
< a name = "44" > < span class = "lineNum" > 44 < / span > : < / a >
< a name = "45" > < span class = "lineNum" > 45 < / span > : /* @dev The address of the current TornadoStakingRewards proxy, this will be upgraded */< / a >
< a name = "46" > < span class = "lineNum" > 46 < / span > : address payable public constant stakingProxyAddress = 0x5B3f656C80E8ddb9ec01Dd9018815576E9238c29;< / a >
< a name = "47" > < span class = "lineNum" > 47 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "48" > < span class = "lineNum" > 48 < / span > : /* @dev This is the Uniswap Oracle which we will use for all of our traditional instances, but it will< / a >
< a name = "49" > < span class = "lineNum" > 49 < / span > : also help the CurveFeeOracle, the former must have been deployed witht the address of this */< / a >
< a name = "50" > < span class = "lineNum" > 50 < / span > : address public immutable deployedUniswapFeeOracleAddress;< / a >
< a name = "51" > < span class = "lineNum" > 51 < / span > : < / a >
< a name = "52" > < span class = "lineNum" > 52 < / span > : /* @dev The implementation address of the RelayerRegistry upgrade contract */< / a >
< a name = "53" > < span class = "lineNum" > 53 < / span > : address public immutable deployedRelayerRegistryImplementationAddress;< / a >
2023-06-19 00:08:10 +00:00
< a name = "54" > < span class = "lineNum" > 54 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "55" > < span class = "lineNum" > 55 < / span > : /* @dev The implementation address of the TornadoStakingRewards upgrade contract */< / a >
< a name = "56" > < span class = "lineNum" > 56 < / span > : address public immutable deployedStakingRewardsImplementationAddress;< / a >
2023-06-19 00:08:10 +00:00
< a name = "57" > < span class = "lineNum" > 57 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "58" > < span class = "lineNum" > 58 < / span > : /* @dev The implementation address of the FeeManager upgrade contract */< / a >
< a name = "59" > < span class = "lineNum" > 59 < / span > : address public immutable deployedFeeOracleManagerImplementationAddress;< / a >
2023-06-19 00:08:10 +00:00
< a name = "60" > < span class = "lineNum" > 60 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "61" > < span class = "lineNum" > 61 < / span > : /* @dev The implementation address of the InstanceRegistry upgrade contract */< / a >
< a name = "62" > < span class = "lineNum" > 62 < / span > : address public immutable deployedInstanceRegistryImplementationAddress;< / a >
2023-06-19 00:08:10 +00:00
< a name = "63" > < span class = "lineNum" > 63 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "64" > < span class = "lineNum" > 64 < / span > : /* @dev The address of the new, cleaner, better TornadoRouter */< / a >
< a name = "65" > < span class = "lineNum" > 65 < / span > : address public immutable deployedTornadoRouterAddress;< / a >
2023-06-19 00:08:10 +00:00
< a name = "66" > < span class = "lineNum" > 66 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "67" > < span class = "lineNum" > 67 < / span > : /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LOGIC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */< / a >
< a name = "68" > < span class = "lineNum" > 68 < / span > : < / a >
< a name = "69" > < span class = "lineNum" > 69 < / span > : constructor(< / a >
< a name = "70" > < span class = "lineNum" > 70 < / span > : address _deployedUniswapFeeOracleAddress,< / a >
< a name = "71" > < span class = "lineNum" > 71 < / span > : address _deployedRelayerRegistryImplementationAddress,< / a >
< a name = "72" > < span class = "lineNum" > 72 < / span > : address _deployedStakingRewardsImplementationAddress,< / a >
< a name = "73" > < span class = "lineNum" > 73 < / span > : address _deployedFeeOracleManagerImplementationAddress,< / a >
< a name = "74" > < span class = "lineNum" > 74 < / span > : address _deployedInstanceRegistryImplementationAddress,< / a >
< a name = "75" > < span class = "lineNum" > 75 < / span > : address _deployedTornadoRouterAddress< / a >
< a name = "76" > < span class = "lineNum" > 76 < / span > : ) public {< / a >
< a name = "77" > < span class = "lineNum" > 77 < / span > : deployedUniswapFeeOracleAddress = _deployedUniswapFeeOracleAddress;< / a >
< a name = "78" > < span class = "lineNum" > 78 < / span > : deployedRelayerRegistryImplementationAddress = _deployedRelayerRegistryImplementationAddress;< / a >
< a name = "79" > < span class = "lineNum" > 79 < / span > : deployedStakingRewardsImplementationAddress = _deployedStakingRewardsImplementationAddress;< / a >
< a name = "80" > < span class = "lineNum" > 80 < / span > : deployedFeeOracleManagerImplementationAddress = _deployedFeeOracleManagerImplementationAddress;< / a >
< a name = "81" > < span class = "lineNum" > 81 < / span > : deployedInstanceRegistryImplementationAddress = _deployedInstanceRegistryImplementationAddress;< / a >
< a name = "82" > < span class = "lineNum" > 82 < / span > : deployedTornadoRouterAddress = _deployedTornadoRouterAddress;< / a >
< a name = "83" > < span class = "lineNum" > 83 < / span > : }< / a >
< a name = "84" > < span class = "lineNum" > 84 < / span > : < / a >
< a name = "85" > < span class = "lineNum" > 85 < / span > : /**< / a >
< a name = "86" > < span class = "lineNum" > 86 < / span > : * @dev This function also executes further internal functions inlined below.< / a >
< a name = "87" > < span class = "lineNum" > 87 < / span > : */< / a >
< a name = "88" > < span class = "lineNum" > 88 < / span > : function executeProposal() external {< / a >
< a name = "89" > < span class = "lineNum" > 89 < / span > : // We need to prepare the new TornadoRouter contract by setting the instance registry and relayer< / a >
< a name = "90" > < span class = "lineNum" > 90 < / span > : // registry addresses.< / a >
< a name = "91" > < span class = "lineNum" > 91 < / span > : < / a >
< a name = "92" > < span class = "lineNum" > 92 < / span > < span class = "lineCov" > 4 : TornadoRouter router = TornadoRouter(deployedTornadoRouterAddress);< / span > < / a >
< a name = "93" > < span class = "lineNum" > 93 < / span > : < / a >
< a name = "94" > < span class = "lineNum" > 94 < / span > < span class = "lineCov" > 4 : router.initialize(< / span > < / a >
< a name = "95" > < span class = "lineNum" > 95 < / span > : instanceRegistryProxyAddress,< / a >
< a name = "96" > < span class = "lineNum" > 96 < / span > : relayerRegistryProxyAddress,< / a >
< a name = "97" > < span class = "lineNum" > 97 < / span > : feeManagerProxyAddress,< / a >
< a name = "98" > < span class = "lineNum" > 98 < / span > : stakingProxyAddress< / a >
< a name = "99" > < span class = "lineNum" > 99 < / span > : );< / a >
< a name = "100" > < span class = "lineNum" > 100 < / span > : < / a >
< a name = "101" > < span class = "lineNum" > 101 < / span > : // We need to upgrade and re-initialize (storage layout has been accounted for, check repository) the< / a >
< a name = "102" > < span class = "lineNum" > 102 < / span > : // RelayerRegistry to support slashing relayers and such< / a >
2023-06-19 00:08:10 +00:00
< a name = "103" > < span class = "lineNum" > 103 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "104" > < span class = "lineNum" > 104 < / span > : // Upgrade RelayerRegistry (V1) Proxy to RelayerRegistry (V2)< / a >
< a name = "105" > < span class = "lineNum" > 105 < / span > : < / a >
< a name = "106" > < span class = "lineNum" > 106 < / span > < span class = "lineCov" > 4 : AdminUpgradeableProxy(relayerRegistryProxyAddress).upgradeTo(< / span > < / a >
< a name = "107" > < span class = "lineNum" > 107 < / span > : deployedRelayerRegistryImplementationAddress< / a >
< a name = "108" > < span class = "lineNum" > 108 < / span > : );< / a >
2023-06-19 00:08:10 +00:00
< a name = "109" > < span class = "lineNum" > 109 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "110" > < span class = "lineNum" > 110 < / span > : // Initialize V2< / a >
< a name = "111" > < span class = "lineNum" > 111 < / span > : < / a >
< a name = "112" > < span class = "lineNum" > 112 < / span > < span class = "lineCov" > 4 : RelayerRegistry(relayerRegistryProxyAddress).initialize(< / span > < / a >
< a name = "113" > < span class = "lineNum" > 113 < / span > : deployedTornadoRouterAddress, stakingProxyAddress, bytes20(_getMinimumStakeAmount())< / a >
< a name = "114" > < span class = "lineNum" > 114 < / span > : );< / a >
< a name = "115" > < span class = "lineNum" > 115 < / span > : < / a >
< a name = "116" > < span class = "lineNum" > 116 < / span > : // Upgrade TornadoStakingRewards (V1) Proxy to TornadoStakingRewards (V2)< / a >
< a name = "117" > < span class = "lineNum" > 117 < / span > : // We need this for `rewardSlasher`, it's just a function so no state touched< / a >
2023-06-19 00:08:10 +00:00
< a name = "118" > < span class = "lineNum" > 118 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "119" > < span class = "lineNum" > 119 < / span > < span class = "lineCov" > 4 : AdminUpgradeableProxy(stakingProxyAddress).upgradeTo(deployedStakingRewardsImplementationAddress);< / span > < / a >
< a name = "120" > < span class = "lineNum" > 120 < / span > : < / a >
< a name = "121" > < span class = "lineNum" > 121 < / span > : // Upgrade FeeManager (V1) Proxy to FeeOracleManager (V2)< / a >
< a name = "122" > < span class = "lineNum" > 122 < / span > : // The below is a total overhaul, layout has been accounted for< / a >
2023-06-19 00:08:10 +00:00
< a name = "123" > < span class = "lineNum" > 123 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "124" > < span class = "lineNum" > 124 < / span > < span class = "lineCov" > 4 : AdminUpgradeableProxy(feeManagerProxyAddress).upgradeTo(deployedFeeOracleManagerImplementationAddress);< / span > < / a >
< a name = "125" > < span class = "lineNum" > 125 < / span > : < / a >
< a name = "126" > < span class = "lineNum" > 126 < / span > : // Now initialize the FeeOracleManager immediately, this initialization will record the old legacy< / a >
< a name = "127" > < span class = "lineNum" > 127 < / span > : // data in combination with the new oracle (which returns a fee value compatible with legacy) and in< / a >
< a name = "128" > < span class = "lineNum" > 128 < / span > : // accordance with the new data structures being used, which are more logical and segmented than what< / a >
< a name = "129" > < span class = "lineNum" > 129 < / span > : // the original implementation was using. The data which is used in the internal functions was read< / a >
< a name = "130" > < span class = "lineNum" > 130 < / span > : // out from the on-chain instance registry.< / a >
< a name = "131" > < span class = "lineNum" > 131 < / span > : < / a >
< a name = "132" > < span class = "lineNum" > 132 < / span > < span class = "lineCov" > 4 : FeeOracleManager(feeManagerProxyAddress).initialize(< / span > < / a >
< a name = "133" > < span class = "lineNum" > 133 < / span > : deployedUniswapFeeOracleAddress,< / a >
< a name = "134" > < span class = "lineNum" > 134 < / span > : instanceRegistryProxyAddress,< / a >
< a name = "135" > < span class = "lineNum" > 135 < / span > : _getTWAPUpdateInterval(),< / a >
< a name = "136" > < span class = "lineNum" > 136 < / span > : _getAllInstances(),< / a >
< a name = "137" > < span class = "lineNum" > 137 < / span > : _getAllInstanceFeePercents()< / a >
< a name = "138" > < span class = "lineNum" > 138 < / span > : );< / a >
< a name = "139" > < span class = "lineNum" > 139 < / span > : < / a >
< a name = "140" > < span class = "lineNum" > 140 < / span > : // We only allow the Tornado Router to touch the update function< / a >
2023-06-19 00:08:10 +00:00
< a name = "141" > < span class = "lineNum" > 141 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "142" > < span class = "lineNum" > 142 < / span > < span class = "lineCov" > 4 : FeeOracleManager(feeManagerProxyAddress).setFeeUpdater(deployedTornadoRouterAddress);< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "143" > < span class = "lineNum" > 143 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "144" > < span class = "lineNum" > 144 < / span > : // Upgrade InstanceRegistry (V1) Proxy to InstanceRegistry (V2)< / a >
< a name = "145" > < span class = "lineNum" > 145 < / span > : // There is not many changes here, but we made it more logical and clear. Future developers should not< / a >
< a name = "146" > < span class = "lineNum" > 146 < / span > : // have a problem understanding what these contracts do.< / a >
< a name = "147" > < span class = "lineNum" > 147 < / span > : < / a >
< a name = "148" > < span class = "lineNum" > 148 < / span > < span class = "lineCov" > 4 : AdminUpgradeableProxy(instanceRegistryProxyAddress).upgradeTo(< / span > < / a >
< a name = "149" > < span class = "lineNum" > 149 < / span > : deployedInstanceRegistryImplementationAddress< / a >
< a name = "150" > < span class = "lineNum" > 150 < / span > : );< / a >
< a name = "151" > < span class = "lineNum" > 151 < / span > : < / a >
< a name = "152" > < span class = "lineNum" > 152 < / span > : // Initialize this one too, we are abandoning all of the older data here because either the data< / a >
< a name = "153" > < span class = "lineNum" > 153 < / span > : // structures don't fit or we can't do a clean addition of all instances, it is better to add the< / a >
< a name = "154" > < span class = "lineNum" > 154 < / span > : // instances as fresh data because it's anyways a simple contract, it just stores some basic data on< / a >
< a name = "155" > < span class = "lineNum" > 155 < / span > : // instances which isn't mutable for them, instead only determined for each. The new Tornado Router is< / a >
< a name = "156" > < span class = "lineNum" > 156 < / span > : // also set.< / a >
< a name = "157" > < span class = "lineNum" > 157 < / span > : < / a >
< a name = "158" > < span class = "lineNum" > 158 < / span > < span class = "lineCov" > 4 : InstanceRegistry(instanceRegistryProxyAddress).initialize(_getAllInstances(), router);< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "159" > < span class = "lineNum" > 159 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "160" > < span class = "lineNum" > 160 < / span > : // It's been show recently that Uniswap V2 is providing better conditions for TORN liquidity than< / a >
< a name = "161" > < span class = "lineNum" > 161 < / span > : // Uniswap V3, probably due to the simplicity of managing positions and the fact that with a coming V4< / a >
< a name = "162" > < span class = "lineNum" > 162 < / span > : // upgrade, Uniswap is just moving to fragment their liquidity further. Until a Curve migration is not< / a >
< a name = "163" > < span class = "lineNum" > 163 < / span > : // fulfilled, we will use the Uniswap V2 pool for TORN, and if we also see that other token liquidity< / a >
< a name = "164" > < span class = "lineNum" > 164 < / span > : // is becoming an issue, we will move it all to V2 until we don't move stuff over to Curve fully.< / a >
< a name = "165" > < span class = "lineNum" > 165 < / span > : < / a >
< a name = "166" > < span class = "lineNum" > 166 < / span > < span class = "lineCov" > 4 : UniswapFeeOracle uniswapFeeOracle = UniswapFeeOracle(deployedUniswapFeeOracleAddress);< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "167" > < span class = "lineNum" > 167 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "168" > < span class = "lineNum" > 168 < / span > < span class = "lineCov" > 4 : uniswapFeeOracle.setMinObservationCardinality(1); // Set it to minimum so cDAI passes, see below< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "169" > < span class = "lineNum" > 169 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "170" > < span class = "lineNum" > 170 < / span > : // Each of the instances are going to require a Uniswap Pool Fee to be set such that we actually know< / a >
< a name = "171" > < span class = "lineNum" > 171 < / span > : // what pools to lookup when querying for Oracle data. This data has also been read out from the< / a >
< a name = "172" > < span class = "lineNum" > 172 < / span > : // instance registry and it basically has the 3000 (0.3%) and 500 (0.05%) non-stable and stable< / a >
< a name = "173" > < span class = "lineNum" > 173 < / span > : // respectively " default" pool fees. This is not to be confused with pool protocol fees, these have< / a >
< a name = "174" > < span class = "lineNum" > 174 < / span > : // been recorded in the (first) legacy initialization above< / a >
< a name = "175" > < span class = "lineNum" > 175 < / span > : < / a >
< a name = "176" > < span class = "lineNum" > 176 < / span > < span class = "lineCov" > 4 : _setAllInstancePoolFeesInOracle(uniswapFeeOracle);< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "177" > < span class = "lineNum" > 177 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "178" > < span class = "lineNum" > 178 < / span > < span class = "lineCov" > 4 : uniswapFeeOracle.setMinObservationCardinality(10); // Now set the cardinality to a reasonable value< / span > < / a >
< a name = "179" > < span class = "lineNum" > 179 < / span > : }< / a >
< a name = "180" > < span class = "lineNum" > 180 < / span > : < / a >
< a name = "181" > < span class = "lineNum" > 181 < / span > : function _setAllInstancePoolFeesInOracle(UniswapFeeOracle _uniswapFeeOracle) internal {< / a >
< a name = "182" > < span class = "lineNum" > 182 < / span > < span class = "lineCov" > 4 : ITornadoInstance[] memory instances = _getAllInstances();< / span > < / a >
< a name = "183" > < span class = "lineNum" > 183 < / span > : < / a >
< a name = "184" > < span class = "lineNum" > 184 < / span > < span class = "lineCov" > 4 : IERC20 weth = IERC20(UniswapV3OracleHelper.WETH);< / span > < / a >
< a name = "185" > < span class = "lineNum" > 185 < / span > < span class = "lineCov" > 4 : IERC20 dai = IERC20(instances[4].token());< / span > < / a >
< a name = "186" > < span class = "lineNum" > 186 < / span > < span class = "lineCov" > 4 : IERC20 cdai = IERC20(instances[8].token());< / span > < / a >
< a name = "187" > < span class = "lineNum" > 187 < / span > < span class = "lineCov" > 4 : IERC20 usdt = IERC20(instances[12].token());< / span > < / a >
< a name = "188" > < span class = "lineNum" > 188 < / span > < span class = "lineCov" > 4 : IERC20 wbtc = IERC20(instances[14].token());< / span > < / a >
< a name = "189" > < span class = "lineNum" > 189 < / span > : < / a >
< a name = "190" > < span class = "lineNum" > 190 < / span > : /* ETH instances */< / a >
< a name = "191" > < span class = "lineNum" > 191 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(weth, uint24(0x000));< / span > < / a >
< a name = "192" > < span class = "lineNum" > 192 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(weth, uint24(0x000));< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "193" > < span class = "lineNum" > 193 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(weth, uint24(0x000));< / span > < / a >
< a name = "194" > < span class = "lineNum" > 194 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(weth, uint24(0x000));< / span > < / a >
2023-06-20 21:04:29 +00:00
< a name = "195" > < span class = "lineNum" > 195 < / span > : < / a >
< a name = "196" > < span class = "lineNum" > 196 < / span > : /* DAI instances */< / a >
< a name = "197" > < span class = "lineNum" > 197 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(dai, uint24(0xbb8));< / span > < / a >
< a name = "198" > < span class = "lineNum" > 198 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(dai, uint24(0xbb8));< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "199" > < span class = "lineNum" > 199 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(dai, uint24(0xbb8));< / span > < / a >
< a name = "200" > < span class = "lineNum" > 200 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(dai, uint24(0xbb8));< / span > < / a >
2023-06-20 21:04:29 +00:00
< a name = "201" > < span class = "lineNum" > 201 < / span > : < / a >
< a name = "202" > < span class = "lineNum" > 202 < / span > : /* cDAI instances */< / a >
< a name = "203" > < span class = "lineNum" > 203 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(cdai, uint24(0xbb8));< / span > < / a >
< a name = "204" > < span class = "lineNum" > 204 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(cdai, uint24(0xbb8));< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "205" > < span class = "lineNum" > 205 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(cdai, uint24(0xbb8));< / span > < / a >
< a name = "206" > < span class = "lineNum" > 206 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(cdai, uint24(0xbb8));< / span > < / a >
2023-06-20 21:04:29 +00:00
< a name = "207" > < span class = "lineNum" > 207 < / span > : < / a >
< a name = "208" > < span class = "lineNum" > 208 < / span > : /* USDT instances */< / a >
< a name = "209" > < span class = "lineNum" > 209 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(usdt, uint24(0x1f4));< / span > < / a >
< a name = "210" > < span class = "lineNum" > 210 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(usdt, uint24(0x1f4));< / span > < / a >
< a name = "211" > < span class = "lineNum" > 211 < / span > : < / a >
< a name = "212" > < span class = "lineNum" > 212 < / span > : /* WBTC instances */< / a >
< a name = "213" > < span class = "lineNum" > 213 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(wbtc, uint24(0xbb8));< / span > < / a >
< a name = "214" > < span class = "lineNum" > 214 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(wbtc, uint24(0xbb8));< / span > < / a >
2023-06-19 00:08:10 +00:00
< a name = "215" > < span class = "lineNum" > 215 < / span > < span class = "lineCov" > 4 : _uniswapFeeOracle.setPoolFeeForToken(wbtc, uint24(0xbb8));< / span > < / a >
2023-06-20 21:04:29 +00:00
< a name = "216" > < span class = "lineNum" > 216 < / span > : }< / a >
< a name = "217" > < span class = "lineNum" > 217 < / span > : < / a >
< a name = "218" > < span class = "lineNum" > 218 < / span > : /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PARAMETERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */< / a >
2023-06-19 00:08:10 +00:00
< a name = "219" > < span class = "lineNum" > 219 < / span > : < / a >
2023-06-20 21:04:29 +00:00
< a name = "220" > < span class = "lineNum" > 220 < / span > : function _getMinimumStakeAmount() internal pure returns (uint160) {< / a >
< a name = "221" > < span class = "lineNum" > 221 < / span > < span class = "lineCov" > 4 : return 2000 ether;< / span > < / a >
< a name = "222" > < span class = "lineNum" > 222 < / span > : }< / a >
< a name = "223" > < span class = "lineNum" > 223 < / span > : < / a >
< a name = "224" > < span class = "lineNum" > 224 < / span > : function _getTWAPUpdateInterval() internal pure returns (uint32) {< / a >
< a name = "225" > < span class = "lineNum" > 225 < / span > < span class = "lineCov" > 4 : return 6 hours;< / span > < / a >
< a name = "226" > < span class = "lineNum" > 226 < / span > : }< / a >
< a name = "227" > < span class = "lineNum" > 227 < / span > : < / a >
< a name = "228" > < span class = "lineNum" > 228 < / span > : function _getAllInstances() internal pure returns (ITornadoInstance[] memory _addresses) {< / a >
< a name = "229" > < span class = "lineNum" > 229 < / span > < span class = "lineCov" > 12 : _addresses = new ITornadoInstance[](17);< / span > < / a >
< a name = "230" > < span class = "lineNum" > 230 < / span > : < / a >
< a name = "231" > < span class = "lineNum" > 231 < / span > : /* ETH instances */< / a >
< a name = "232" > < span class = "lineNum" > 232 < / span > < span class = "lineCov" > 12 : _addresses[0] = ITornadoInstance(0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc);< / span > < / a >
< a name = "233" > < span class = "lineNum" > 233 < / span > < span class = "lineCov" > 12 : _addresses[1] = ITornadoInstance(0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936);< / span > < / a >
< a name = "234" > < span class = "lineNum" > 234 < / span > < span class = "lineCov" > 12 : _addresses[2] = ITornadoInstance(0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF);< / span > < / a >
< a name = "235" > < span class = "lineNum" > 235 < / span > < span class = "lineCov" > 12 : _addresses[3] = ITornadoInstance(0xA160cdAB225685dA1d56aa342Ad8841c3b53f291);< / span > < / a >
< a name = "236" > < span class = "lineNum" > 236 < / span > : < / a >
< a name = "237" > < span class = "lineNum" > 237 < / span > : /* DAI instances */< / a >
< a name = "238" > < span class = "lineNum" > 238 < / span > < span class = "lineCov" > 12 : _addresses[4] = ITornadoInstance(0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3);< / span > < / a >
< a name = "239" > < span class = "lineNum" > 239 < / span > < span class = "lineCov" > 12 : _addresses[5] = ITornadoInstance(0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144);< / span > < / a >
< a name = "240" > < span class = "lineNum" > 240 < / span > < span class = "lineCov" > 12 : _addresses[6] = ITornadoInstance(0x07687e702b410Fa43f4cB4Af7FA097918ffD2730);< / span > < / a >
< a name = "241" > < span class = "lineNum" > 241 < / span > < span class = "lineCov" > 12 : _addresses[7] = ITornadoInstance(0x23773E65ed146A459791799d01336DB287f25334);< / span > < / a >
< a name = "242" > < span class = "lineNum" > 242 < / span > : < / a >
< a name = "243" > < span class = "lineNum" > 243 < / span > : /* cDAI instances */< / a >
< a name = "244" > < span class = "lineNum" > 244 < / span > < span class = "lineCov" > 12 : _addresses[8] = ITornadoInstance(0x22aaA7720ddd5388A3c0A3333430953C68f1849b);< / span > < / a >
< a name = "245" > < span class = "lineNum" > 245 < / span > < span class = "lineCov" > 12 : _addresses[9] = ITornadoInstance(0x03893a7c7463AE47D46bc7f091665f1893656003);< / span > < / a >
< a name = "246" > < span class = "lineNum" > 246 < / span > < span class = "lineCov" > 12 : _addresses[10] = ITornadoInstance(0x2717c5e28cf931547B621a5dddb772Ab6A35B701);< / span > < / a >
< a name = "247" > < span class = "lineNum" > 247 < / span > < span class = "lineCov" > 12 : _addresses[11] = ITornadoInstance(0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af);< / span > < / a >
< a name = "248" > < span class = "lineNum" > 248 < / span > : < / a >
< a name = "249" > < span class = "lineNum" > 249 < / span > : /* USDT instances */< / a >
< a name = "250" > < span class = "lineNum" > 250 < / span > < span class = "lineCov" > 12 : _addresses[12] = ITornadoInstance(0x169AD27A470D064DEDE56a2D3ff727986b15D52B);< / span > < / a >
< a name = "251" > < span class = "lineNum" > 251 < / span > < span class = "lineCov" > 12 : _addresses[13] = ITornadoInstance(0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f);< / span > < / a >
< a name = "252" > < span class = "lineNum" > 252 < / span > : < / a >
< a name = "253" > < span class = "lineNum" > 253 < / span > : /* WBTC instances */< / a >
< a name = "254" > < span class = "lineNum" > 254 < / span > < span class = "lineCov" > 12 : _addresses[14] = ITornadoInstance(0x178169B423a011fff22B9e3F3abeA13414dDD0F1);< / span > < / a >
< a name = "255" > < span class = "lineNum" > 255 < / span > < span class = "lineCov" > 12 : _addresses[15] = ITornadoInstance(0x610B717796ad172B316836AC95a2ffad065CeaB4);< / span > < / a >
< a name = "256" > < span class = "lineNum" > 256 < / span > < span class = "lineCov" > 12 : _addresses[16] = ITornadoInstance(0xbB93e510BbCD0B7beb5A853875f9eC60275CF498);< / span > < / a >
< a name = "257" > < span class = "lineNum" > 257 < / span > : }< / a >
< a name = "258" > < span class = "lineNum" > 258 < / span > : < / a >
< a name = "259" > < span class = "lineNum" > 259 < / span > : function _getAllInstanceFeePercents() internal pure returns (uint256[] memory _percents) {< / a >
< a name = "260" > < span class = "lineNum" > 260 < / span > < span class = "lineCov" > 4 : _percents = new uint256[](17);< / span > < / a >
< a name = "261" > < span class = "lineNum" > 261 < / span > : < / a >
< a name = "262" > < span class = "lineNum" > 262 < / span > : /* ETH instances */< / a >
< a name = "263" > < span class = "lineNum" > 263 < / span > < span class = "lineCov" > 4 : _percents[0] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "264" > < span class = "lineNum" > 264 < / span > < span class = "lineCov" > 4 : _percents[1] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "265" > < span class = "lineNum" > 265 < / span > < span class = "lineCov" > 4 : _percents[2] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "266" > < span class = "lineNum" > 266 < / span > < span class = "lineCov" > 4 : _percents[3] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "267" > < span class = "lineNum" > 267 < / span > : < / a >
< a name = "268" > < span class = "lineNum" > 268 < / span > : /* DAI instances */< / a >
< a name = "269" > < span class = "lineNum" > 269 < / span > < span class = "lineCov" > 4 : _percents[4] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "270" > < span class = "lineNum" > 270 < / span > < span class = "lineCov" > 4 : _percents[5] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "271" > < span class = "lineNum" > 271 < / span > < span class = "lineCov" > 4 : _percents[6] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "272" > < span class = "lineNum" > 272 < / span > < span class = "lineCov" > 4 : _percents[7] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "273" > < span class = "lineNum" > 273 < / span > : < / a >
< a name = "274" > < span class = "lineNum" > 274 < / span > : /* cDAI instances */< / a >
< a name = "275" > < span class = "lineNum" > 275 < / span > < span class = "lineCov" > 4 : _percents[8] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "276" > < span class = "lineNum" > 276 < / span > < span class = "lineCov" > 4 : _percents[9] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "277" > < span class = "lineNum" > 277 < / span > < span class = "lineCov" > 4 : _percents[10] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "278" > < span class = "lineNum" > 278 < / span > < span class = "lineCov" > 4 : _percents[11] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "279" > < span class = "lineNum" > 279 < / span > : < / a >
< a name = "280" > < span class = "lineNum" > 280 < / span > : /* USDT instances */< / a >
< a name = "281" > < span class = "lineNum" > 281 < / span > < span class = "lineCov" > 4 : _percents[12] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "282" > < span class = "lineNum" > 282 < / span > < span class = "lineCov" > 4 : _percents[13] = uint256(0x0000000000000000000000000000000000000000000000000000000000000000);< / span > < / a >
< a name = "283" > < span class = "lineNum" > 283 < / span > : < / a >
< a name = "284" > < span class = "lineNum" > 284 < / span > : /* WBTC instances */< / a >
< a name = "285" > < span class = "lineNum" > 285 < / span > < span class = "lineCov" > 4 : _percents[14] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "286" > < span class = "lineNum" > 286 < / span > < span class = "lineCov" > 4 : _percents[15] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "287" > < span class = "lineNum" > 287 < / span > < span class = "lineCov" > 4 : _percents[16] = uint256(0x000000000000000000000000000000000000000000000000000000000000001e);< / span > < / a >
< a name = "288" > < span class = "lineNum" > 288 < / span > : }< / a >
< a name = "289" > < span class = "lineNum" > 289 < / span > : }< / a >
2023-06-19 00:08:10 +00:00
< / pre >
< / td >
< / tr >
< / table >
< br >
< table width = "100%" border = 0 cellspacing = 0 cellpadding = 0 >
< tr > < td class = "ruler" > < img src = "../glass.png" width = 3 height = 3 alt = "" > < / td > < / tr >
< tr > < td class = "versionInfo" > Generated by: < a href = "https://github.com/linux-test-project/lcov" target = "_parent" > LCOV version 1.16< / a > < / td > < / tr >
< / table >
< br >
< / body >
< / html >