From c96fae31dec1c6b24e823451e814428b117062dc Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Fri, 9 Feb 2024 13:19:14 +0800 Subject: [PATCH] reserve 2 slots for TaikoData.Transition This reverts commit 08c0ae2f21b680135c1b71458d0343e2d14e7777. --- packages/protocol/contracts/L1/TaikoData.sol | 1 + .../contracts/signal/SignalService.sol | 4 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 10 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 10 +- .../test/verifiers/GuardianVerifier.t.sol | 16 +-- .../test/verifiers/PseZkVerifier.t.sol | 113 ++++++++---------- .../protocol/test/verifiers/SgxVerifier.t.sol | 66 +++++----- 7 files changed, 90 insertions(+), 130 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index e66625c9894..d838b51025e 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -121,6 +121,7 @@ library TaikoData { bytes32 blockHash; bytes32 stateRoot; bytes32 graffiti; + bytes32[2] __reserved; } /// @dev Struct representing state transition data. diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 1e6bdc42716..763b68401e0 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -140,9 +140,7 @@ contract SignalService is AuthorizableContract, ISignalService { uint64 hopChainId = uint256(label).toUint64(); - verifyMerkleProof( - stateRoot, hopChainId, hop.relay, hop.stateRoot, hop.merkleProof - ); + verifyMerkleProof(stateRoot, hopChainId, hop.relay, hop.stateRoot, hop.merkleProof); stateRoot = hop.stateRoot; } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index a1d35e73d61..1d8194cda46 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -786,12 +786,10 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // Let's say the 10th block is unprovable so prove accordingly if (blockId == 10) { - TaikoData.Transition memory tran = TaikoData.Transition({ - parentHash: parentHash, - blockHash: blockHash, - stateRoot: stateRoot, - graffiti: 0x0 - }); + TaikoData.Transition memory tran; + tran.parentHash = parentHash; + tran.blockHash = blockHash; + tran.stateRoot = stateRoot; TaikoData.TierProof memory proof; proof.tier = LibTiers.TIER_GUARDIAN; diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 6350071286a..3952755ff1b 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -245,12 +245,10 @@ abstract contract TaikoL1TestBase is TaikoTest { ) internal { - TaikoData.Transition memory tran = TaikoData.Transition({ - parentHash: parentHash, - blockHash: blockHash, - stateRoot: stateRoot, - graffiti: 0x0 - }); + TaikoData.Transition memory tran; + tran.parentHash = parentHash; + tran.blockHash = blockHash; + tran.stateRoot = stateRoot; bytes32 instance = pv.calcInstance(tran, prover, keccak256(abi.encode(meta)), meta.blobHash, 0); diff --git a/packages/protocol/test/verifiers/GuardianVerifier.t.sol b/packages/protocol/test/verifiers/GuardianVerifier.t.sol index f3e11893fad..3f551046f8a 100644 --- a/packages/protocol/test/verifiers/GuardianVerifier.t.sol +++ b/packages/protocol/test/verifiers/GuardianVerifier.t.sol @@ -28,12 +28,7 @@ contract TestGuardianVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32(0), - blockHash: bytes32(0), - stateRoot: bytes32(0), - graffiti: bytes32(0) - }); + TaikoData.Transition memory transition; // TierProof TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: "" }); @@ -43,7 +38,7 @@ contract TestGuardianVerifier is TaikoL1TestBase { } // Tests `verifyProof()` with the wrong prover - function test_verifyProof_invalidProver() public { + function test_verifyProof_invalidProver() public { // Context IVerifier.Context memory ctx = IVerifier.Context({ metaHash: bytes32(0), @@ -55,12 +50,7 @@ contract TestGuardianVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32(0), - blockHash: bytes32(0), - stateRoot: bytes32(0), - graffiti: bytes32(0) - }); + TaikoData.Transition memory transition; // TierProof TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: "" }); diff --git a/packages/protocol/test/verifiers/PseZkVerifier.t.sol b/packages/protocol/test/verifiers/PseZkVerifier.t.sol index 9225394fd80..787fd550992 100644 --- a/packages/protocol/test/verifiers/PseZkVerifier.t.sol +++ b/packages/protocol/test/verifiers/PseZkVerifier.t.sol @@ -46,12 +46,7 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32(0), - blockHash: bytes32(0), - stateRoot: bytes32(0), - graffiti: bytes32(0) - }); + TaikoData.Transition memory transition; // TierProof TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: "" }); @@ -73,12 +68,7 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32(0), - blockHash: bytes32(0), - stateRoot: bytes32(0), - graffiti: bytes32(0) - }); + TaikoData.Transition memory transition; // TierProof bytes1[48] memory point; @@ -124,12 +114,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); @@ -161,12 +150,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof TaikoData.TierProof memory proof = @@ -190,12 +178,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); @@ -228,12 +215,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); @@ -265,12 +251,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes memory zkp = abi.encodePacked("invalid"); @@ -299,12 +284,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); @@ -340,12 +324,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); @@ -381,12 +364,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); @@ -419,12 +401,11 @@ contract TestPseZkVerifier is TaikoL1TestBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("23"), - stateRoot: bytes32("34"), - graffiti: bytes32("1234") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("23"); + transition.stateRoot = bytes32("34"); + transition.graffiti = bytes32("1234"); // TierProof bytes32 instance = pv.calcInstance(transition, ctx.prover, ctx.metaHash, ctx.blobHash, 0); diff --git a/packages/protocol/test/verifiers/SgxVerifier.t.sol b/packages/protocol/test/verifiers/SgxVerifier.t.sol index 8382a3f3209..86e59050b82 100644 --- a/packages/protocol/test/verifiers/SgxVerifier.t.sol +++ b/packages/protocol/test/verifiers/SgxVerifier.t.sol @@ -191,12 +191,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("34"), - stateRoot: bytes32("56"), - graffiti: bytes32("78") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("34"); + transition.stateRoot = bytes32("56"); + transition.graffiti = bytes32("78"); // TierProof address newInstance = address(0x33); @@ -239,12 +238,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("34"), - stateRoot: bytes32("56"), - graffiti: bytes32("78") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("34"); + transition.stateRoot = bytes32("56"); + transition.graffiti = bytes32("78"); // TierProof TaikoData.TierProof memory proof = TaikoData.TierProof({ tier: 0, data: "" }); @@ -270,12 +268,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("34"), - stateRoot: bytes32("56"), - graffiti: bytes32("78") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("34"); + transition.stateRoot = bytes32("56"); + transition.graffiti = bytes32("78"); // TierProof TaikoData.TierProof memory proof = TaikoData.TierProof({ @@ -303,12 +300,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("34"), - stateRoot: bytes32("56"), - graffiti: bytes32("78") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("34"); + transition.stateRoot = bytes32("56"); + transition.graffiti = bytes32("78"); // TierProof uint32 id = 0; @@ -341,12 +337,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("34"), - stateRoot: bytes32("56"), - graffiti: bytes32("78") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("34"); + transition.stateRoot = bytes32("56"); + transition.graffiti = bytes32("78"); // TierProof address newInstance = address(0x33); @@ -380,12 +375,11 @@ contract TestSgxVerifier is TaikoL1TestBase, AttestationBase { }); // Transition - TaikoData.Transition memory transition = TaikoData.Transition({ - parentHash: bytes32("12"), - blockHash: bytes32("34"), - stateRoot: bytes32("56"), - graffiti: bytes32("78") - }); + TaikoData.Transition memory transition; + transition.parentHash = bytes32("12"); + transition.blockHash = bytes32("34"); + transition.stateRoot = bytes32("56"); + transition.graffiti = bytes32("78"); // TierProof uint32 id = 0;