Skip to content

Commit

Permalink
Make fork preparation time configurable (#118)
Browse files Browse the repository at this point in the history
* making fork preparation time configurable

* linting
  • Loading branch information
josojo authored Dec 11, 2023
1 parent dbf131d commit 168025b
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 19 deletions.
14 changes: 9 additions & 5 deletions contracts/ForkingManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ contract ForkingManager is IForkingManager, ForkableStructure {
DisputeData public disputeData;
NewImplementations public proposedImplementations;
uint256 public executionTimeForProposal;
uint256 public constant FORK_PREPARATION_TIME = 1 weeks;
uint256 public forkPreparationTime;

/// @inheritdoc IForkingManager
function initialize(
Expand All @@ -51,7 +51,8 @@ contract ForkingManager is IForkingManager, ForkableStructure {
address _parentContract,
address _globalExitRoot,
uint256 _arbitrationFee,
address _chainIdManager
address _chainIdManager,
uint256 _forkPreparationTime
) external initializer {
zkEVM = _zkEVM;
bridge = _bridge;
Expand All @@ -61,6 +62,7 @@ contract ForkingManager is IForkingManager, ForkableStructure {
arbitrationFee = _arbitrationFee;
chainIdManager = _chainIdManager;
executionTimeForProposal = 0;
forkPreparationTime = _forkPreparationTime;
ForkableStructure.initialize(address(this), _parentContract);
}

Expand Down Expand Up @@ -97,7 +99,7 @@ contract ForkingManager is IForkingManager, ForkableStructure {
disputeData = _disputeData;
proposedImplementations = _newImplementations;
// solhint-disable-next-line not-rely-on-time
executionTimeForProposal = (block.timestamp + FORK_PREPARATION_TIME);
executionTimeForProposal = (block.timestamp + forkPreparationTime);
}

/**
Expand Down Expand Up @@ -206,7 +208,8 @@ contract ForkingManager is IForkingManager, ForkableStructure {
address(this),
newInstances.globalExitRoot.one,
arbitrationFee,
chainIdManager
chainIdManager,
forkPreparationTime
);

//Initialize the global exit root contracts
Expand Down Expand Up @@ -319,7 +322,8 @@ contract ForkingManager is IForkingManager, ForkableStructure {
address(this),
newInstances.globalExitRoot.two,
arbitrationFee,
chainIdManager
chainIdManager,
forkPreparationTime
);

//Initialize the global exit root contracts
Expand Down
3 changes: 2 additions & 1 deletion contracts/interfaces/IForkingManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ interface IForkingManager is IForkableStructure {
address _parentContract,
address _globalExitRoot,
uint256 _arbitrationFee,
address _chainIdManager
address _chainIdManager,
uint256 _executionTimeForProposal
) external;

function initiateFork(
Expand Down
18 changes: 10 additions & 8 deletions test/ForkingManager.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ contract ForkingManagerTest is Test {
address public forkonomicTokenImplementation;
address public globalExitRootImplementation;
address public chainIdManagerAddress;
uint256 public forkPreparationTime = 1000;
bytes32 internal constant _IMPLEMENTATION_SLOT =
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

Expand Down Expand Up @@ -186,7 +187,8 @@ contract ForkingManagerTest is Test {
address(0x0),
address(globalExitRoot),
arbitrationFee,
chainIdManagerAddress
chainIdManagerAddress,
forkPreparationTime
);
forkonomicToken.initialize(
address(forkmanager),
Expand Down Expand Up @@ -235,7 +237,7 @@ contract ForkingManagerTest is Test {
assertFalse(forkmanager.isForkingExecuted());
assertFalse(forkmanager.canFork());

vm.warp(block.timestamp + forkmanager.FORK_PREPARATION_TIME() + 1);
vm.warp(block.timestamp + forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();

Expand Down Expand Up @@ -313,7 +315,7 @@ contract ForkingManagerTest is Test {
forkID: newForkID
})
);
vm.warp(block.timestamp + forkmanager.FORK_PREPARATION_TIME() + 1);
vm.warp(block.timestamp + forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();

Expand Down Expand Up @@ -463,7 +465,7 @@ contract ForkingManagerTest is Test {
IForkingManager.NewImplementations memory noNewImplementations;
// Call the initiateFork function to create a new fork
forkmanager.initiateFork(disputeData, noNewImplementations);
vm.warp(block.timestamp + forkmanager.FORK_PREPARATION_TIME() + 1);
vm.warp(block.timestamp + forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();

Expand Down Expand Up @@ -626,7 +628,7 @@ contract ForkingManagerTest is Test {
forkID: newForkID
})
);
skip(forkmanager.FORK_PREPARATION_TIME() + 1);
skip(forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();

Expand All @@ -644,7 +646,7 @@ contract ForkingManagerTest is Test {
assertEq(receivedIsL1, isL1);
assertEq(
receivedExecutionTime,
testTimestamp + forkmanager.FORK_PREPARATION_TIME()
testTimestamp + forkmanager.forkPreparationTime()
);
}

Expand Down Expand Up @@ -676,7 +678,7 @@ contract ForkingManagerTest is Test {

vm.expectRevert("ForkingManager: fork not ready");
forkmanager.executeFork1();
vm.warp(testTimestamp + forkmanager.FORK_PREPARATION_TIME() + 1);
vm.warp(testTimestamp + forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
}

Expand All @@ -701,7 +703,7 @@ contract ForkingManagerTest is Test {
forkID: newForkID
})
);
skip(forkmanager.FORK_PREPARATION_TIME() + 1);
skip(forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();
vm.expectRevert("No changes after forking");
Expand Down
8 changes: 5 additions & 3 deletions test/L1GlobalChainInfoPublisher.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ contract L1GlobalChainInfoPublisherTest is Test {
address public forkonomicTokenImplementation;
address public globalExitRootImplementation;
address public chainIdManagerAddress;
uint256 public forkPreparationTime = 1000;
bytes32 internal constant _IMPLEMENTATION_SLOT =
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

Expand Down Expand Up @@ -224,7 +225,8 @@ contract L1GlobalChainInfoPublisherTest is Test {
address(0x0),
address(globalExitRoot),
arbitrationFee,
chainIdManagerAddress
chainIdManagerAddress,
forkPreparationTime
);
forkonomicToken.initialize(
address(forkmanager),
Expand Down Expand Up @@ -291,7 +293,7 @@ contract L1GlobalChainInfoPublisherTest is Test {
forkID: newForkID
})
);
skip(forkmanager.FORK_PREPARATION_TIME() + 1);
skip(forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();

Expand Down Expand Up @@ -357,7 +359,7 @@ contract L1GlobalChainInfoPublisherTest is Test {

// Call the initiateFork function to create a new fork
forkmanager2.initiateFork(disputeData2, newImplementations2);
skip(forkmanager.FORK_PREPARATION_TIME() + 1);
skip(forkmanager.forkPreparationTime() + 1);
forkmanager2.executeFork1();
forkmanager2.executeFork2();

Expand Down
6 changes: 4 additions & 2 deletions test/L1GlobalForkRequester.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ contract L1GlobalForkRequesterTest is Test {
address public forkonomicTokenImplementation;
address public globalExitRootImplementation;
address public chainIdManager;
uint256 public forkPreparationTime = 1000;
bytes32 internal constant _IMPLEMENTATION_SLOT =
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

Expand Down Expand Up @@ -188,7 +189,8 @@ contract L1GlobalForkRequesterTest is Test {
address(0x0),
address(globalExitRoot),
arbitrationFee,
chainIdManager
chainIdManager,
forkPreparationTime
);
forkonomicToken.initialize(
address(forkmanager),
Expand Down Expand Up @@ -362,7 +364,7 @@ contract L1GlobalForkRequesterTest is Test {
);

// Execute the other guy's fork
skip(forkmanager.FORK_PREPARATION_TIME() + 1);
skip(forkmanager.forkPreparationTime() + 1);
forkmanager.executeFork1();
forkmanager.executeFork2();

Expand Down

0 comments on commit 168025b

Please sign in to comment.