Commit 6f47ab07 authored by Kelvin Fichter's avatar Kelvin Fichter

fix(ctb): L2OutputOracle event order bug

Fixes a small bug where event parameters were being emitted in the wrong
order. Adds a test to confirm correct ordering.
parent 2fa33162
This diff is collapsed.
...@@ -139,11 +139,11 @@ L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 168905) ...@@ -139,11 +139,11 @@ L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 168905)
L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37184) L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37184)
L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70717) L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70717)
L2OutputOracleTest:test_constructor_succeeds() (gas: 33760) L2OutputOracleTest:test_constructor_succeeds() (gas: 33760)
L2OutputOracleTest:test_deleteL2Outputs_afterLatest_reverts() (gas: 200230) L2OutputOracleTest:test_deleteL2Outputs_afterLatest_reverts() (gas: 211900)
L2OutputOracleTest:test_deleteL2Outputs_ifNotChallenger_reverts() (gas: 18883) L2OutputOracleTest:test_deleteL2Outputs_ifNotChallenger_reverts() (gas: 18883)
L2OutputOracleTest:test_deleteL2Outputs_nonExistent_reverts() (gas: 103402) L2OutputOracleTest:test_deleteL2Outputs_nonExistent_reverts() (gas: 107292)
L2OutputOracleTest:test_deleteOutputs_multipleOutputs_succeeds() (gas: 286560) L2OutputOracleTest:test_deleteOutputs_multipleOutputs_succeeds() (gas: 302121)
L2OutputOracleTest:test_deleteOutputs_singleOutput_succeeds() (gas: 172876) L2OutputOracleTest:test_deleteOutputs_singleOutput_succeeds() (gas: 180656)
L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 267182) L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 267182)
L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExis_reverts() (gas: 17914) L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExis_reverts() (gas: 17914)
L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 96086) L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 96086)
...@@ -154,7 +154,7 @@ L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 17468) ...@@ -154,7 +154,7 @@ L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 17468)
L2OutputOracleTest:test_proposeL2Output_emptyOutput_reverts() (gas: 26688) L2OutputOracleTest:test_proposeL2Output_emptyOutput_reverts() (gas: 26688)
L2OutputOracleTest:test_proposeL2Output_futureTimetamp_reverts() (gas: 28646) L2OutputOracleTest:test_proposeL2Output_futureTimetamp_reverts() (gas: 28646)
L2OutputOracleTest:test_proposeL2Output_notProposer_reverts() (gas: 25782) L2OutputOracleTest:test_proposeL2Output_notProposer_reverts() (gas: 25782)
L2OutputOracleTest:test_proposeL2Output_proposeAnotherOutput_succeeds() (gas: 97137) L2OutputOracleTest:test_proposeL2Output_proposeAnotherOutput_succeeds() (gas: 101027)
L2OutputOracleTest:test_proposeL2Output_unexpectedBlockNumber_reverts() (gas: 28402) L2OutputOracleTest:test_proposeL2Output_unexpectedBlockNumber_reverts() (gas: 28402)
L2OutputOracleTest:test_proposeL2Output_unmatchedBlockhash_reverts() (gas: 29446) L2OutputOracleTest:test_proposeL2Output_unmatchedBlockhash_reverts() (gas: 29446)
L2OutputOracleTest:test_proposeL2Output_wrongFork_reverts() (gas: 29005) L2OutputOracleTest:test_proposeL2Output_wrongFork_reverts() (gas: 29005)
......
...@@ -198,7 +198,7 @@ contract L2OutputOracle is Initializable, Semver { ...@@ -198,7 +198,7 @@ contract L2OutputOracle is Initializable, Semver {
); );
} }
emit OutputProposed(_outputRoot, nextOutputIndex(), block.timestamp, _l2BlockNumber); emit OutputProposed(_outputRoot, nextOutputIndex(), _l2BlockNumber, block.timestamp);
l2Outputs.push( l2Outputs.push(
Types.OutputProposal({ Types.OutputProposal({
......
...@@ -10,6 +10,13 @@ import { Types } from "../libraries/Types.sol"; ...@@ -10,6 +10,13 @@ import { Types } from "../libraries/Types.sol";
contract L2OutputOracleTest is L2OutputOracle_Initializer { contract L2OutputOracleTest is L2OutputOracle_Initializer {
bytes32 proposedOutput1 = keccak256(abi.encode(1)); bytes32 proposedOutput1 = keccak256(abi.encode(1));
event OutputProposed(
bytes32 indexed outputRoot,
uint256 indexed l2OutputIndex,
uint256 indexed l2BlockNumber,
uint256 l1Timestamp
);
function setUp() public override { function setUp() public override {
super.setUp(); super.setUp();
} }
...@@ -180,6 +187,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer { ...@@ -180,6 +187,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
function test_proposeL2Output_proposeAnotherOutput_succeeds() public { function test_proposeL2Output_proposeAnotherOutput_succeeds() public {
bytes32 proposedOutput2 = keccak256(abi.encode()); bytes32 proposedOutput2 = keccak256(abi.encode());
uint256 nextBlockNumber = oracle.nextBlockNumber(); uint256 nextBlockNumber = oracle.nextBlockNumber();
uint256 nextOutputIndex = oracle.nextOutputIndex();
warpToProposeTime(nextBlockNumber); warpToProposeTime(nextBlockNumber);
uint256 proposedNumber = oracle.latestBlockNumber(); uint256 proposedNumber = oracle.latestBlockNumber();
...@@ -187,6 +195,10 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer { ...@@ -187,6 +195,10 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
assertEq(nextBlockNumber, proposedNumber + submissionInterval); assertEq(nextBlockNumber, proposedNumber + submissionInterval);
vm.roll(nextBlockNumber + 1); vm.roll(nextBlockNumber + 1);
vm.expectEmit(true, true, true, true);
emit OutputProposed(proposedOutput2, nextOutputIndex, nextBlockNumber, block.timestamp);
vm.prank(proposer); vm.prank(proposer);
oracle.proposeL2Output(proposedOutput2, nextBlockNumber, 0, 0); oracle.proposeL2Output(proposedOutput2, nextBlockNumber, 0, 0);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment