// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../contracts/compound-v2-fork/WhitePaperInterestRateModel.sol"; import "../../contracts/compound-v2-fork/ComptrollerInterface.sol"; import "../../contracts/compound-v2-fork/CErc20Delegator.sol"; import "../../contracts/compound-v2-fork/CErc20Delegate.sol"; import "../../contracts/compound-v2-fork/Comptroller.sol"; import "../../contracts/utilities/MarketAidFactory.sol"; import "../../contracts/periphery/TokenWithFaucet.sol"; import "../../contracts/utilities/MarketAid.sol"; import "../../contracts/periphery/WETH9.sol"; import "../../contracts/RubiconMarket.sol"; import "../../contracts/proxy/RubiconProxy.sol"; import "../../contracts/utilities/RubiconRouter.sol"; import "forge-std/Test.sol"; import "forge-std/StdStorage.sol"; import "farnsworth/Cheatcodes.sol"; // CheatCodes interface from https://book.getfoundry.sh/cheatcodes/ contract RubiconTest is Test { using stdStorage for StdStorage; bytes32 constant PROXY_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; address constant CHEAT_CODES_ADDRESS = 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D; address constant MARKET_PROXY_ADDRESS = 0x7a512d3609211e719737E82c7bb7271eC05Da70d; address constant ROUTER_PROXY_ADDRESS = 0x7Af14ADc8Aea70f063c7eA3B2C1AD0D7A59C4bFf; CheatCodes cheats; address proxyAdmin; address marketOwner; RubiconMarket market; RubiconRouter router; function setUp() public { // Fork Optimism mainnet cheats = CheatCodes(CHEAT_CODES_ADDRESS); cheats.createSelectFork("optimism"); // Impersonate as a proxy admin proxyAdmin = address(uint160(uint256(vm.load(MARKET_PROXY_ADDRESS, PROXY_ADMIN_SLOT)))); vm.startPrank(proxyAdmin); // Deploy RubiconMarketV2 and set as a new proxy implementation RubiconMarket _market = new RubiconMarket(); TransparentUpgradeableProxy(payable(MARKET_PROXY_ADDRESS)).upgradeTo(address(_market)); market = RubiconMarket(payable(MARKET_PROXY_ADDRESS)); // Deploy RubiconRouterV2 and set as a new proxy implementation RubiconRouter _router = new RubiconRouter(); TransparentUpgradeableProxy(payable(ROUTER_PROXY_ADDRESS)).upgradeTo(address(_router)); router = RubiconRouter(payable(ROUTER_PROXY_ADDRESS)); // Stop impersonating as a proxy admin vm.stopPrank(); // Impersonate as a RubiconMarketV2 owner marketOwner = market.owner(); vm.prank(marketOwner); market.setFeeBPS(10); } function testTemp() public { console.log("getFeeTo", market.getFeeTo()); } }
0.4.18