Skip to content

Commit

Permalink
modified scripts for quick deployment and verification on base
Browse files Browse the repository at this point in the history
  • Loading branch information
voith committed Dec 16, 2024
1 parent 8fdbc2d commit 53cf683
Show file tree
Hide file tree
Showing 11 changed files with 5,868 additions and 30 deletions.
1,038 changes: 1,038 additions & 0 deletions broadcast/DeployPockets.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

520 changes: 520 additions & 0 deletions broadcast/DeployTCAP.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

846 changes: 846 additions & 0 deletions broadcast/DeployVaults.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

1,696 changes: 1,696 additions & 0 deletions broadcast/SetupSystem.s.sol/8453/run-1734371463.json

Large diffs are not rendered by default.

1,696 changes: 1,696 additions & 0 deletions broadcast/SetupSystem.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

24 changes: 22 additions & 2 deletions script/DeployPockets.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ import {PocketDeployParams, PocketData} from "./deployers/PocketDeployParams.sol
import {AggregatedChainlinkOracle} from "../src/oracle/AggregatedChainlinkOracle.sol";
import {DefaultPocketDeployer} from "./deployers/DefaultPocketDeployer.s.sol";
import {AaveV3PocketDeployer} from "./deployers/AaveV3PocketDeployer.s.sol";
import "src/pockets/DefaultPocket.sol";
import "src/pockets/AaveV3Pocket.sol";
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";

contract Deploy is DefaultPocketDeployer, AaveV3PocketDeployer, PocketDeployParams {
using stdJson for string;
Expand All @@ -21,11 +25,27 @@ contract Deploy is DefaultPocketDeployer, AaveV3PocketDeployer, PocketDeployPara
if (vault_ == address(0)) revert("Vault address not set");
PocketData memory params = pockets[block.chainid][token];
if (params.deployDefault) {
deployDefaultPocketTransparent(params.admin, vault_, token);

bytes memory initData = abi.encodeCall(DefaultPocket.initialize, ());
defaultPocketImplementation = address(new DefaultPocket(vault_, token));
defaultPocket = DefaultPocket(address(new TransparentUpgradeableProxy(defaultPocketImplementation, params.admin, initData)));
defaultPocketProxyAdmin =
ProxyAdmin(address(uint160(uint256(vm.load(address(defaultPocket), hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103")))));
console.log("Collateral address, default pocket address:", address(token), address(defaultPocket));
console.log("pocket address, ProxyAdmin address:", address(defaultPocket), address(defaultPocketProxyAdmin));

}
if (params.deployAave) {
if (params.aavePool == address(0)) revert("Aave pool address not set");
deployAaveV3PocketTransparent(params.admin, vault_, token, params.aavePool);

bytes memory initData = abi.encodeCall(AaveV3Pocket.initialize, ());
aaveV3PocketImplementation = address(new AaveV3Pocket(vault_, token, params.aavePool));
aaveV3Pocket = AaveV3Pocket(address(new TransparentUpgradeableProxy(aaveV3PocketImplementation, params.admin, initData)));
aaveV3PocketProxyAdmin =
ProxyAdmin(address(uint160(uint256(vm.load(address(aaveV3Pocket), hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103")))));
console.log("Collateral address, aave pocket address:", address(token), address(aaveV3Pocket));
console.log("aave address, ProxyAdmin address:", address(aaveV3Pocket), address(defaultPocketProxyAdmin));

}
}
vm.stopBroadcast();
Expand Down
21 changes: 20 additions & 1 deletion script/DeployTCAP.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,34 @@ import {TCAPV2, ITCAPV2} from "../src/TCAPV2.sol";

contract Deploy is Script {
using stdJson for string;
event Deployed(address indexed tcap, address indexed implementation);

function run() public {
address proxyAdminOwner = 0x570f581D23a2AB09FD1990279D9DB6f5DcE18F4A;
address admin = 0x6BF125D25cC4d00FAB06C30095f8DCBe2617bBBD;
AggregatorV3Interface oracleFeed = AggregatorV3Interface(0x962C0Df8Ca7f7C682B3872ccA31Ea9c8999ab23c);

vm.startBroadcast(vm.envUint("PRIVATE_KEY"));
new TCAPDeployer(proxyAdminOwner, admin, oracleFeed);

bytes memory initData = abi.encodeCall(TCAPV2.initialize, (proxyAdminOwner));

address implementation = address(new TCAPV2());
TCAPV2 tcap = TCAPV2(address(new TransparentUpgradeableProxy(implementation, proxyAdminOwner, initData)));
console.log("deployed TCAP at: ", address(tcap));

TCAPV2(tcap).grantRole(Roles.DEFAULT_ADMIN_ROLE, admin);
TCAPV2(tcap).grantRole(Roles.ORACLE_SETTER_ROLE, admin);
TCAPV2(tcap).grantRole(Roles.ORACLE_SETTER_ROLE, proxyAdminOwner);

TCAPTargetOracle oracle = new TCAPTargetOracle(ITCAPV2(tcap), address(oracleFeed), 5 days);
TCAPV2(tcap).setOracle(address(oracle));
TCAPV2(tcap).revokeRole(Roles.ORACLE_SETTER_ROLE, proxyAdminOwner);
emit Deployed(address(tcap), implementation);

vm.stopBroadcast();
}


}

/// @dev ensures that the contracts and permissions are set up correctly
Expand Down
29 changes: 16 additions & 13 deletions script/DeployVaults.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,37 @@ import "forge-std/Script.sol";
import {VaultDeployParams, Params} from "./deployers/VaultDeployParams.sol";
import {AggregatedChainlinkOracle} from "../src/oracle/AggregatedChainlinkOracle.sol";
import {VaultDeployer, ITCAPV2, IERC20, IPermit2} from "./deployers/VaultDeployer.s.sol";
import "src/Vault.sol";
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";

contract Deploy is VaultDeployer, VaultDeployParams {
using stdJson for string;

// Vault internal vault;
// ProxyAdmin internal vaultProxyAdmin;
// address internal vaultImplementation;

address[] vaultsToDeployTokens =
[0x4200000000000000000000000000000000000006, 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf, 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913];

function run() public {
vm.startBroadcast(vm.envUint("PRIVATE_KEY"));
for (uint256 i = 0; i < vaultsToDeployTokens.length; i++) {
if (tcap[block.chainid] == address(0)) revert("TCAP address not set");
address token = vaultsToDeployTokens[i];
Params memory params = _params[block.chainid][token];
if (!params.exists) revert("Config for token not found");
vm.startBroadcast(vm.envUint("PRIVATE_KEY"));
AggregatedChainlinkOracle oracle = new AggregatedChainlinkOracle(params.oracleParams.priceFeed, token, params.oracleParams.heartbeat * 10);
vm.stopBroadcast();
deployVaultTransparent(
params.admin,
ITCAPV2(tcap[block.chainid]),
IERC20(token),
IPermit2(0x000000000022D473030F116dDEE9F6B43aC78BA3),
params.admin,
params.initialFee,
address(oracle),
params.feeRecipient,
params.liquidationParams
);

bytes memory initData = abi.encodeCall(Vault.initialize, (params.admin, params.initialFee, address(oracle), params.feeRecipient, params.liquidationParams));
vaultImplementation = address(new Vault(ITCAPV2(tcap[block.chainid]), IERC20(token), IPermit2(0x000000000022D473030F116dDEE9F6B43aC78BA3)));
vault = Vault(address(new TransparentUpgradeableProxy(vaultImplementation, params.admin, initData)));
vaultProxyAdmin = ProxyAdmin(address(uint160(uint256(vm.load(address(vault), hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103")))));
console.log("Collateral address, vault address:", address(IERC20(token)), address(vault));
console.log("vault address:, proxyadmin address", address(vault), address(vaultProxyAdmin));
}
vm.stopBroadcast();

}
}
20 changes: 10 additions & 10 deletions script/SetupSystem.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,23 @@ import {TCAPV2, ITCAPV2} from "src/TCAPV2.sol";
contract SetupSystem is Script {
address admin = 0x6BF125D25cC4d00FAB06C30095f8DCBe2617bBBD;
address proxyAdmin = 0x570f581D23a2AB09FD1990279D9DB6f5DcE18F4A;
address wETHVaultAddress = address(0); // TODO: set address
address cbBTCVaultAddress = address(0); // TODO: set address
address usdcVaultAddress = address(0); // TODO: set address
address wETHVaultAddress = 0x4F94C14440ef38B7e551CCFB7A2ce4E464E20F14;
address cbBTCVaultAddress = 0xA6afc2be04a1c2ED8bEC7F924307b6254fAFF750;
address usdcVaultAddress = 0x1857e926BB5e5b12e9275818B03F79cdfd799999;

TCAPV2 tcapV2 = TCAPV2(address(0)); // TODO: set TCAP address
TCAPV2 tcapV2 = TCAPV2(0x4e99472385a2522aa292b008Da294a78F420A367);

IVault wETHVault = IVault(wETHVaultAddress);
IVault cbBTCVault = IVault(cbBTCVaultAddress);
IVault usdcVault = IVault(usdcVaultAddress);

IPocket wETHDefaultPocket = IPocket(address(0)); // TODO: set address
IPocket cbBTCDefaultPocket = IPocket(address(0)); // TODO: set address
IPocket usdcDefaultPocket = IPocket(address(0)); // TODO: set address
IPocket wETHDefaultPocket = IPocket(0x75E78d6659BBc2c1599464e153607a21947A466B);
IPocket cbBTCDefaultPocket = IPocket(0x806c81138A52524Ce218E3C6C19873F53334BF94);
IPocket usdcDefaultPocket = IPocket(0xb0fC91A11d770bD7a6312944199E3a9De85057A3);

IPocket wETHAavePocket = IPocket(address(0)); // TODO: set address
IPocket cbBTCAavePocket = IPocket(address(0)); // TODO: set address
IPocket usdcAavePocket = IPocket(address(0)); // TODO: set address
IPocket wETHAavePocket = IPocket(0x134ba1c4E7443fC5c0bE8Ca675DF0bE611bd589C);
IPocket cbBTCAavePocket = IPocket(0xCf041E8c66785c7BC41284C66b8aDe5A02094a6e);
IPocket usdcAavePocket = IPocket(0x9a0A963ce5CD1C9e5Ef5df862b42143E82f6412C);

function run() external {
vm.startBroadcast(vm.envUint("PROXY_ADMIN_PRIVATE_KEY"));
Expand Down
6 changes: 3 additions & 3 deletions script/deployers/PocketDeployParams.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,23 @@ contract PocketDeployParams {

constructor() {
// WETH
vault[8453][0x4200000000000000000000000000000000000006] = 0x8707513F7790Aa55466089b72af14212D4761B12;
vault[8453][0x4200000000000000000000000000000000000006] = 0x4F94C14440ef38B7e551CCFB7A2ce4E464E20F14;
pockets[8453][0x4200000000000000000000000000000000000006] = PocketData({
admin: 0x570f581D23a2AB09FD1990279D9DB6f5DcE18F4A,
deployDefault: true,
deployAave: true,
aavePool: 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5
});
// cbBTC
vault[8453][0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf] = 0xfD4f5D1C592286c2CcFea6faB7A8Eac2CFb8828e;
vault[8453][0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf] = 0xA6afc2be04a1c2ED8bEC7F924307b6254fAFF750;
pockets[8453][0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf] = PocketData({
admin: 0x570f581D23a2AB09FD1990279D9DB6f5DcE18F4A,
deployDefault: true,
deployAave: true,
aavePool: 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5
});
// USDC
vault[8453][0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913] = 0x2c8EC0Cd240D86900d3ca412B79d0564e2d30006;
vault[8453][0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913] = 0x1857e926BB5e5b12e9275818B03F79cdfd799999;
pockets[8453][0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913] = PocketData({
admin: 0x570f581D23a2AB09FD1990279D9DB6f5DcE18F4A,
deployDefault: true,
Expand Down
2 changes: 1 addition & 1 deletion script/deployers/VaultDeployParams.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ contract VaultDeployParams {

constructor() {
// Base
tcap[8453] = 0xA97e49a1a5d9C9b9D991C3900f4238720e17B4D1;
tcap[8453] = 0x4e99472385a2522aa292b008Da294a78F420A367;
// WETH
_params[8453][0x4200000000000000000000000000000000000006] = Params({
exists: true,
Expand Down

0 comments on commit 53cf683

Please sign in to comment.