diff --git a/Makefile b/Makefile index 3fa2765..c5f8faa 100644 --- a/Makefile +++ b/Makefile @@ -4,4 +4,10 @@ deploy-testnet: deploy-testnet-broadcast: op run --env-file="./.env" -- \ - forge script DeployKatanaOperationTestnet -f ronin-testnet --verify --verifier sourcify --verifier-url https://sourcify.roninchain.com/server/ --legacy --broadcast \ No newline at end of file + forge script DeployKatanaOperationTestnet -f ronin-testnet --verify --verifier sourcify --verifier-url https://sourcify.roninchain.com/server/ --legacy --broadcast + +deploy-mainnet: + forge script DeployKatanaOperationMainnet -f ronin-mainnet -t + +deploy-mainnet-broadcast: + forge script DeployKatanaOperationMainnet -f ronin-mainnet --verify --verifier sourcify --verifier-url https://sourcify.roninchain.com/server/ --legacy --broadcast -t diff --git a/lib/katana-v3-contracts b/lib/katana-v3-contracts index 03c8017..804cb2c 160000 --- a/lib/katana-v3-contracts +++ b/lib/katana-v3-contracts @@ -1 +1 @@ -Subproject commit 03c80179e04f40d96f06c451ea494bb18f2a58fc +Subproject commit 804cb2cc031f9fdd2cad94c148661b62848713bf diff --git a/lib/permit2x b/lib/permit2x index 499027f..6bf7814 160000 --- a/lib/permit2x +++ b/lib/permit2x @@ -1 +1 @@ -Subproject commit 499027fc8bf1d61aacdf1f7fe6cf0ec03a93eea4 +Subproject commit 6bf78141eb13a164ac202430fe6597dbcf8f07d6 diff --git a/script/UpgradeKatanaGovernance.s.sol b/script/UpgradeKatanaGovernance.s.sol index 3e3a996..0323ff1 100644 --- a/script/UpgradeKatanaGovernance.s.sol +++ b/script/UpgradeKatanaGovernance.s.sol @@ -4,6 +4,8 @@ pragma solidity ^0.8.17; import { Script, console } from "forge-std/Script.sol"; import { ITransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import { KatanaGovernance } from "@katana/operation-contracts/governance/KatanaGovernance.sol"; +import { ProxyAdmin } from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import { ISpenderPermit } from "permit2/src/interfaces/ISpenderPermit.sol"; import { DeployAggregateRouter } from "./DeployAggregateRouter.s.sol"; abstract contract UpgradeKatanaGovernance is DeployAggregateRouter { @@ -11,6 +13,7 @@ abstract contract UpgradeKatanaGovernance is DeployAggregateRouter { address public v3Migrator; address public legacyPermissionedRouter; address public katanaGovernanceProxy; + address public multisig; address public proxyAdmin; address public katanaGovernanceLogic; @@ -20,6 +23,7 @@ abstract contract UpgradeKatanaGovernance is DeployAggregateRouter { require(v3Migrator != address(0)); require(legacyPermissionedRouter != address(0)); require(katanaGovernanceProxy != address(0)); + require(multisig != address(0)); require(proxyAdmin != address(0)); super.setUp(); @@ -31,17 +35,35 @@ abstract contract UpgradeKatanaGovernance is DeployAggregateRouter { vm.broadcast(); katanaGovernanceLogic = address(new KatanaGovernance()); console.log("Katana Governance (logic) deployed:", katanaGovernanceLogic); + console.log(""); - console.log("Please upgrade to Katana Governance (logic) using ProxyAdmin", proxyAdmin); + console.log("----------------------------------------------------------------"); + console.log("[Proposal] Upgrade to Katana Governance"); + console.log("From:", multisig); + console.log("To:", proxyAdmin); console.log( "Data:", vm.toString( abi.encodeCall( - KatanaGovernance.initializeV2, - (params.v3Factory, nonfungiblePositionManager, v3Migrator, legacyPermissionedRouter, router) + ProxyAdmin.upgradeAndCall, + ( + ITransparentUpgradeableProxy(katanaGovernanceProxy), + katanaGovernanceLogic, + abi.encodeCall( + KatanaGovernance.initializeV2, + (params.v3Factory, nonfungiblePositionManager, v3Migrator, legacyPermissionedRouter, router) + ) + ) ) ) ); + console.log(""); + + console.log("----------------------------------------------------------------"); + console.log("[Proposal] Set AggregateRouter as a permitted spender in Permit2"); + console.log("From:", multisig); + console.log("To:", params.permit2); + console.log("Data:", vm.toString(abi.encodeCall(ISpenderPermit.permitSpender, (router, true)))); } function logParams() internal view override { diff --git a/script/ronin-mainnet/DeployKatanaOperationMainnet.s.sol b/script/ronin-mainnet/DeployKatanaOperationMainnet.s.sol index 6150477..d643c6c 100644 --- a/script/ronin-mainnet/DeployKatanaOperationMainnet.s.sol +++ b/script/ronin-mainnet/DeployKatanaOperationMainnet.s.sol @@ -7,22 +7,22 @@ import { UpgradeKatanaGovernance } from "../UpgradeKatanaGovernance.s.sol"; contract DeployKatanaOperationMainnet is UpgradeKatanaGovernance { function setUp() public override { params = RouterParameters({ - permit2: 0x000000000022D473030F116dDEE9F6B43aC78BA3, + permit2: 0x771CA29e483Df5447E20a89e0F00E1DAF09eF534, // Permit2 weth9: 0xe514d9DEB7966c8BE0ca922de8a064264eA6bcd4, // WRON - governance: 0x2C1726346d83cBF848bD3C2B208ec70d32a9E44a, + governance: 0x2C1726346d83cBF848bD3C2B208ec70d32a9E44a, // KatanaGovernance v2Factory: 0xB255D6A720BB7c39fee173cE22113397119cB930, // KatanaV2Factory - v3Factory: address(0), // TODO: To be deployed + v3Factory: 0x1f0B70d9A137e3cAEF0ceAcD312BC5f81Da0cC0c, // KatanaV3Factory pairInitCodeHash: 0xe85772d2fe4ad93037659afaee57751696456eb5dd99987e43f3cf11c6e255a2, poolInitCodeHash: 0xb381dabeb6037396a764deb39e57a4a3f75b641ce3e9944b1e4b18d036e322e1 }); - proxyAdmin = 0xA3e7d085E65CB0B916f6717da876b7bE5cC92f03; // Proxy Admin - nonfungiblePositionManager = address(0); // TODO: To be deployed - v3Migrator = address(0); // TODO: To be deployed - legacyPermissionedRouter = 0xC05AFC8c9353c1dd5f872EcCFaCD60fd5A2a9aC7; - katanaGovernanceProxy = 0x2C1726346d83cBF848bD3C2B208ec70d32a9E44a; + multisig = 0x9D05D1F5b0424F8fDE534BC196FFB6Dd211D902a; // Multisig + proxyAdmin = 0xA3e7d085E65CB0B916f6717da876b7bE5cC92f03; // ProxyAdmin - vm.rememberKey(vm.envUint("MAINNET_PK")); + nonfungiblePositionManager = 0x7cF0fb64d72b733695d77d197c664e90D07cF45A; // NonfungiblePositionManager + v3Migrator = 0x0124c9Ce7E77eD166f6d53AF679B491555b5C0F7; // V3Migrator + legacyPermissionedRouter = 0xC05AFC8c9353c1dd5f872EcCFaCD60fd5A2a9aC7; // Legacy PermissionedRouter + katanaGovernanceProxy = 0x2C1726346d83cBF848bD3C2B208ec70d32a9E44a; super.setUp(); } diff --git a/script/ronin-testnet/DeployKatanaOperationTestnet.s.sol b/script/ronin-testnet/DeployKatanaOperationTestnet.s.sol index 3c47622..2e1e9d9 100644 --- a/script/ronin-testnet/DeployKatanaOperationTestnet.s.sol +++ b/script/ronin-testnet/DeployKatanaOperationTestnet.s.sol @@ -16,6 +16,7 @@ contract DeployKatanaOperationTestnet is UpgradeKatanaGovernance { poolInitCodeHash: 0xb381dabeb6037396a764deb39e57a4a3f75b641ce3e9944b1e4b18d036e322e1 }); + multisig = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; proxyAdmin = 0x505d91E8fd2091794b45b27f86C045529fa92CD7; nonfungiblePositionManager = 0x7C2716803c09cd5eeD78Ba40117084af3c803565;