From aef6697e25333d0a0dd52cb0b648be977453f670 Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:34:38 +0200 Subject: [PATCH 1/8] chore: add deploy scripts for FuelChainState redeploy --- .../deploy/devnet/012.state_redeploy.ts | 39 +++++++++++++++++++ .../deploy/testnet/010.state_redeploy.ts | 39 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts create mode 100644 packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts diff --git a/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts b/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts new file mode 100644 index 00000000..c8feba30 --- /dev/null +++ b/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts @@ -0,0 +1,39 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelChainState__factory as FuelChainState } from '../../typechain'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + ethers, + upgrades: { deployProxy, erc1967 }, + deployments: { save, execute }, + } = hre; + const [deployer] = await ethers.getSigners(); + + const contract = await deployProxy(new FuelChainState(deployer), [], { + initializer: 'initialize', + }); + await contract.waitForDeployment(); + const address = await contract.getAddress(); + const implementation = await erc1967.getImplementationAddress(address); + + console.log('Deployed FuelChainState at', address); + await save('FuelChainState', { + address, + abi: [...FuelChainState.abi], + implementation, + }); + + await execute( + 'FuelChainState', + { log: true, from: deployer.address }, + 'pause' + ); + + return true; +}; + +func.tags = ['state', 'chain-state', 'chain_state', 'FuelChainState']; +func.id = 'chain_state_redeploy'; +export default func; diff --git a/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts b/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts new file mode 100644 index 00000000..c8feba30 --- /dev/null +++ b/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts @@ -0,0 +1,39 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelChainState__factory as FuelChainState } from '../../typechain'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { + ethers, + upgrades: { deployProxy, erc1967 }, + deployments: { save, execute }, + } = hre; + const [deployer] = await ethers.getSigners(); + + const contract = await deployProxy(new FuelChainState(deployer), [], { + initializer: 'initialize', + }); + await contract.waitForDeployment(); + const address = await contract.getAddress(); + const implementation = await erc1967.getImplementationAddress(address); + + console.log('Deployed FuelChainState at', address); + await save('FuelChainState', { + address, + abi: [...FuelChainState.abi], + implementation, + }); + + await execute( + 'FuelChainState', + { log: true, from: deployer.address }, + 'pause' + ); + + return true; +}; + +func.tags = ['state', 'chain-state', 'chain_state', 'FuelChainState']; +func.id = 'chain_state_redeploy'; +export default func; From 82c0b3e8cb924d6a2a4efb28689ed7576c67a14b Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:36:56 +0200 Subject: [PATCH 2/8] chore: add parameters to redeploy scripts --- .../deploy/devnet/012.state_redeploy.ts | 9 +++++++++ .../deploy/testnet/010.state_redeploy.ts | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts b/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts index c8feba30..273dc804 100644 --- a/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts +++ b/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts @@ -3,6 +3,10 @@ import type { DeployFunction } from 'hardhat-deploy/dist/types'; import { FuelChainState__factory as FuelChainState } from '../../typechain'; +const BLOCKS_PER_COMMIT_INTERVAL = 10800; +const TIME_TO_FINALIZE = 3600 * 24 * 7; // 7 days of finalization +const COMMIT_COOLDOWN = TIME_TO_FINALIZE; + const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { ethers, @@ -13,6 +17,11 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const contract = await deployProxy(new FuelChainState(deployer), [], { initializer: 'initialize', + constructorArgs: [ + TIME_TO_FINALIZE, + BLOCKS_PER_COMMIT_INTERVAL, + COMMIT_COOLDOWN, + ], }); await contract.waitForDeployment(); const address = await contract.getAddress(); diff --git a/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts b/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts index c8feba30..273dc804 100644 --- a/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts +++ b/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts @@ -3,6 +3,10 @@ import type { DeployFunction } from 'hardhat-deploy/dist/types'; import { FuelChainState__factory as FuelChainState } from '../../typechain'; +const BLOCKS_PER_COMMIT_INTERVAL = 10800; +const TIME_TO_FINALIZE = 3600 * 24 * 7; // 7 days of finalization +const COMMIT_COOLDOWN = TIME_TO_FINALIZE; + const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { ethers, @@ -13,6 +17,11 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const contract = await deployProxy(new FuelChainState(deployer), [], { initializer: 'initialize', + constructorArgs: [ + TIME_TO_FINALIZE, + BLOCKS_PER_COMMIT_INTERVAL, + COMMIT_COOLDOWN, + ], }); await contract.waitForDeployment(); const address = await contract.getAddress(); From 333538c511a2f54b348b3c5a5493ddadd0097bd6 Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:38:19 +0200 Subject: [PATCH 3/8] chore: remove pausing from redeploy scripts --- .../deploy/devnet/012.state_redeploy.ts | 8 +------- .../deploy/testnet/010.state_redeploy.ts | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts b/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts index 273dc804..72a1d8ca 100644 --- a/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts +++ b/packages/solidity-contracts/deploy/devnet/012.state_redeploy.ts @@ -11,7 +11,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { ethers, upgrades: { deployProxy, erc1967 }, - deployments: { save, execute }, + deployments: { save }, } = hre; const [deployer] = await ethers.getSigners(); @@ -34,12 +34,6 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { implementation, }); - await execute( - 'FuelChainState', - { log: true, from: deployer.address }, - 'pause' - ); - return true; }; diff --git a/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts b/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts index 273dc804..72a1d8ca 100644 --- a/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts +++ b/packages/solidity-contracts/deploy/testnet/010.state_redeploy.ts @@ -11,7 +11,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { ethers, upgrades: { deployProxy, erc1967 }, - deployments: { save, execute }, + deployments: { save }, } = hre; const [deployer] = await ethers.getSigners(); @@ -34,12 +34,6 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { implementation, }); - await execute( - 'FuelChainState', - { log: true, from: deployer.address }, - 'pause' - ); - return true; }; From 31363562f50d71d1a9b322b8730e5e4f9e5174cd Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:41:38 +0200 Subject: [PATCH 4/8] chore: deploy new FuelChainState on devnet --- .../.openzeppelin/sepolia.json | 5 +++ .../deployments/devnet/.migrations.json | 5 ++- .../deployments/devnet/FuelChainState.json | 41 ++++++++++++++++--- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/packages/solidity-contracts/.openzeppelin/sepolia.json b/packages/solidity-contracts/.openzeppelin/sepolia.json index 05dfe06e..c9a06c8f 100644 --- a/packages/solidity-contracts/.openzeppelin/sepolia.json +++ b/packages/solidity-contracts/.openzeppelin/sepolia.json @@ -130,6 +130,11 @@ "address": "0xa97200022c7aDb1b15f0f61f374E3A0c90e2Efa0", "txHash": "0x78839dcc8bd48354a7f678f95ed1b4dc07439c2fa64f5e7dde48f80e5676c6ce", "kind": "uups" + }, + { + "address": "0x2e87c41C9B3d932b6DA3C805baEfB7bbe863fCc6", + "txHash": "0x62366b1fb7f457c24a7096d2266abf97238e3271b0a0d41dd54dfdb37ac83018", + "kind": "uups" } ], "impls": { diff --git a/packages/solidity-contracts/deployments/devnet/.migrations.json b/packages/solidity-contracts/deployments/devnet/.migrations.json index 2c95f6e6..b607baac 100644 --- a/packages/solidity-contracts/deployments/devnet/.migrations.json +++ b/packages/solidity-contracts/deployments/devnet/.migrations.json @@ -9,5 +9,6 @@ "state_redeploy": 1715107035, "state_unpause": 1715107035, "portal_upgrade": 1716102431, - "state_upgrade": 1716102805 -} + "state_upgrade": 1716102805, + "chain_state_redeploy": 1723732789 +} \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/devnet/FuelChainState.json b/packages/solidity-contracts/deployments/devnet/FuelChainState.json index 541ed483..77c55138 100644 --- a/packages/solidity-contracts/deployments/devnet/FuelChainState.json +++ b/packages/solidity-contracts/deployments/devnet/FuelChainState.json @@ -1,8 +1,24 @@ { - "address": "0x8097500F4168240f4334589170d99fE8797b6fF8", + "address": "0x2e87c41C9B3d932b6DA3C805baEfB7bbe863fCc6", "abi": [ { - "inputs": [], + "inputs": [ + { + "internalType": "uint256", + "name": "timeToFinalize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blocksPerCommitInterval", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "commitCooldown", + "type": "uint32" + } + ], "stateMutability": "nonpayable", "type": "constructor" }, @@ -11,6 +27,21 @@ "name": "CannotRecommit", "type": "error" }, + { + "inputs": [], + "name": "CommitCooldownTooLarge", + "type": "error" + }, + { + "inputs": [], + "name": "FinalizationIsGtCooldown", + "type": "error" + }, + { + "inputs": [], + "name": "TimeToFinalizeTooLarge", + "type": "error" + }, { "inputs": [], "name": "UnknownBlock", @@ -541,6 +572,6 @@ "type": "function" } ], - "numDeployments": 3, - "implementation": "0x99448d0C551a9B2A5c6280E586c36A8A33BAA968" -} + "numDeployments": 4, + "implementation": "0xdCF1bdBF5341c15e9C1285202f6F6bEA70Db6172" +} \ No newline at end of file From fb72ceb3d5c4c2af5d44a7f5465a07a8dd334221 Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:46:52 +0200 Subject: [PATCH 5/8] chore: deploy new FuelChainState contract on testnet --- packages/solidity-contracts/.openzeppelin/sepolia.json | 5 +++++ .../solidity-contracts/deployments/testnet/.migrations.json | 3 ++- .../deployments/testnet/FuelChainState.json | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/solidity-contracts/.openzeppelin/sepolia.json b/packages/solidity-contracts/.openzeppelin/sepolia.json index c9a06c8f..2e5a365d 100644 --- a/packages/solidity-contracts/.openzeppelin/sepolia.json +++ b/packages/solidity-contracts/.openzeppelin/sepolia.json @@ -135,6 +135,11 @@ "address": "0x2e87c41C9B3d932b6DA3C805baEfB7bbe863fCc6", "txHash": "0x62366b1fb7f457c24a7096d2266abf97238e3271b0a0d41dd54dfdb37ac83018", "kind": "uups" + }, + { + "address": "0xf38F1e65adc58fc74BaaA132f645Aa5307F2d304", + "txHash": "0xed885a7b39592bda396e87dee34915d227b02d3bea4cb82bb4c4815b80c47025", + "kind": "uups" } ], "impls": { diff --git a/packages/solidity-contracts/deployments/testnet/.migrations.json b/packages/solidity-contracts/deployments/testnet/.migrations.json index 4ef03ed8..6659bdd2 100644 --- a/packages/solidity-contracts/deployments/testnet/.migrations.json +++ b/packages/solidity-contracts/deployments/testnet/.migrations.json @@ -8,5 +8,6 @@ "state_upgrade": 1716102786, "register_committer_2": 1716192530, "set_asset_issuer": 1716373143, - "state_upgrade_2": 1717775334 + "state_upgrade_2": 1717775334, + "chain_state_redeploy": 1723732933 } \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/testnet/FuelChainState.json b/packages/solidity-contracts/deployments/testnet/FuelChainState.json index 2b122ab7..51e7627a 100644 --- a/packages/solidity-contracts/deployments/testnet/FuelChainState.json +++ b/packages/solidity-contracts/deployments/testnet/FuelChainState.json @@ -1,5 +1,5 @@ { - "address": "0x404F391F96798B14C5e99BBB4a9C858da9Cf63b5", + "address": "0xf38F1e65adc58fc74BaaA132f645Aa5307F2d304", "abi": [ { "inputs": [ @@ -572,6 +572,6 @@ "type": "function" } ], - "numDeployments": 3, + "numDeployments": 4, "implementation": "0xdCF1bdBF5341c15e9C1285202f6F6bEA70Db6172" -} +} \ No newline at end of file From 742ee153faa77fdb770d9881ddee476a06c51aac Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:49:37 +0200 Subject: [PATCH 6/8] chore: add committer registry scripts --- ...state_redeploy_register_block_committer.ts | 28 +++++++++++++++++++ ...state_redeploy_register_block_committer.ts | 28 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 packages/solidity-contracts/deploy/devnet/013.state_redeploy_register_block_committer.ts create mode 100644 packages/solidity-contracts/deploy/testnet/013.state_redeploy_register_block_committer.ts diff --git a/packages/solidity-contracts/deploy/devnet/013.state_redeploy_register_block_committer.ts b/packages/solidity-contracts/deploy/devnet/013.state_redeploy_register_block_committer.ts new file mode 100644 index 00000000..bf1984b4 --- /dev/null +++ b/packages/solidity-contracts/deploy/devnet/013.state_redeploy_register_block_committer.ts @@ -0,0 +1,28 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelChainState__factory } from '../../typechain'; + +const COMMITTER_ADDRESS = '0x2100240626d914AC448525B721D9C5b48b64F674'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { ethers, deployments } = hre; + const [deployer] = await ethers.getSigners(); + + const { address } = await deployments.get('FuelChainState'); + + const fuelChainState = FuelChainState__factory.connect(address, deployer); + const COMMITTER_ROLE = await fuelChainState.COMMITTER_ROLE(); + + await fuelChainState + .grantRole(COMMITTER_ROLE, COMMITTER_ADDRESS) + .then((tx) => tx.wait()); + + console.log('Granted role COMMITTER_ROLE to', COMMITTER_ADDRESS); + + return true; +}; + +func.tags = ['redeploy_register_committer']; +func.id = 'redeploy_register_committer'; +export default func; diff --git a/packages/solidity-contracts/deploy/testnet/013.state_redeploy_register_block_committer.ts b/packages/solidity-contracts/deploy/testnet/013.state_redeploy_register_block_committer.ts new file mode 100644 index 00000000..b89d816d --- /dev/null +++ b/packages/solidity-contracts/deploy/testnet/013.state_redeploy_register_block_committer.ts @@ -0,0 +1,28 @@ +import type { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { DeployFunction } from 'hardhat-deploy/dist/types'; + +import { FuelChainState__factory } from '../../typechain'; + +const COMMITTER_ADDRESS = '0x802f534Fe839fbE6a5FeD2F9eD5120FB1646C9df'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { ethers, deployments } = hre; + const [deployer] = await ethers.getSigners(); + + const { address } = await deployments.get('FuelChainState'); + + const fuelChainState = FuelChainState__factory.connect(address, deployer); + const COMMITTER_ROLE = await fuelChainState.COMMITTER_ROLE(); + + await fuelChainState + .grantRole(COMMITTER_ROLE, COMMITTER_ADDRESS) + .then((tx) => tx.wait()); + + console.log('Granted role COMMITTER_ROLE to', COMMITTER_ADDRESS); + + return true; +}; + +func.tags = ['redeploy_register_committer']; +func.id = 'redeploy_register_committer'; +export default func; From 5d1d30497131288f074bcd67c56d05518c424d56 Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 16:54:33 +0200 Subject: [PATCH 7/8] chore: send committer register txs --- .../solidity-contracts/deployments/devnet/.migrations.json | 3 ++- .../solidity-contracts/deployments/testnet/.migrations.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/solidity-contracts/deployments/devnet/.migrations.json b/packages/solidity-contracts/deployments/devnet/.migrations.json index b607baac..3a305458 100644 --- a/packages/solidity-contracts/deployments/devnet/.migrations.json +++ b/packages/solidity-contracts/deployments/devnet/.migrations.json @@ -10,5 +10,6 @@ "state_unpause": 1715107035, "portal_upgrade": 1716102431, "state_upgrade": 1716102805, - "chain_state_redeploy": 1723732789 + "chain_state_redeploy": 1723732789, + "redeploy_register_committer": 1723733641 } \ No newline at end of file diff --git a/packages/solidity-contracts/deployments/testnet/.migrations.json b/packages/solidity-contracts/deployments/testnet/.migrations.json index 6659bdd2..efb16fb9 100644 --- a/packages/solidity-contracts/deployments/testnet/.migrations.json +++ b/packages/solidity-contracts/deployments/testnet/.migrations.json @@ -9,5 +9,6 @@ "register_committer_2": 1716192530, "set_asset_issuer": 1716373143, "state_upgrade_2": 1717775334, - "chain_state_redeploy": 1723732933 + "chain_state_redeploy": 1723732933, + "redeploy_register_committer": 1723733653 } \ No newline at end of file From a6e826c0bbbcf3adeeaf8b20859dbd093ac218ac Mon Sep 17 00:00:00 2001 From: DefiCake Date: Thu, 15 Aug 2024 17:01:48 +0200 Subject: [PATCH 8/8] chore: add changeset --- .changeset/quick-games-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quick-games-smile.md diff --git a/.changeset/quick-games-smile.md b/.changeset/quick-games-smile.md new file mode 100644 index 00000000..23b30ae5 --- /dev/null +++ b/.changeset/quick-games-smile.md @@ -0,0 +1,5 @@ +--- +'@fuel-bridge/solidity-contracts': patch +--- + +Added FuelChainState devnet and testnet redeploy artifacts