Skip to content

Commit e58a4ed

Browse files
add additional ZK hash, range and aggregate
1 parent e0ab4f4 commit e58a4ed

7 files changed

Lines changed: 33 additions & 22 deletions

File tree

scripts/deploy/DeployImplementations.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,7 @@ contract DeployImplementations is Script {
736736
IVerifier(teeVerifierImpl),
737737
IVerifier(zkVerifier),
738738
_input.teeImageHash,
739-
bytes32(0),
739+
AggregateVerifier.ZkHashes(bytes32(0), bytes32(0)),
740740
_input.multiproofConfigHash,
741741
_input.l2ChainID,
742742
_input.multiproofBlockInterval,

scripts/multiproof/DeployDevNoNitro.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ contract DeployDevNoNitro is Script {
194194
IVerifier(teeVerifier),
195195
IVerifier(zkVerifier),
196196
cfg.teeImageHash(),
197-
bytes32(0),
197+
AggregateVerifier.ZkHashes(bytes32(0), bytes32(0)),
198198
cfg.multiproofConfigHash(),
199199
8453,
200200
BLOCK_INTERVAL,

scripts/multiproof/DeployDevWithNitro.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ contract DeployDevWithNitro is Script {
229229
IVerifier(teeVerifier),
230230
IVerifier(zkVerifier),
231231
cfg.teeImageHash(),
232-
bytes32(0),
232+
AggregateVerifier.ZkHashes(bytes32(0), bytes32(0)),
233233
cfg.multiproofConfigHash(),
234234
8453,
235235
BLOCK_INTERVAL,

snapshots/semver-lock.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,15 +240,15 @@
240240
"sourceCodeHash": "0x955bd0c9b47e43219865e4e92abf28d916c96de20cbdf2f94c8ab14d02083759"
241241
},
242242
"src/multiproof/AggregateVerifier.sol:AggregateVerifier": {
243-
"initCodeHash": "0xe631e0c2e8e86711f83cb97884065ce38d1ff519e0d2dbf8704e7e4c183a56cc",
244-
"sourceCodeHash": "0xfa0464c07c06fddc98ba20e9a362ba10ecf94496556d0f7ac88d1986f79a8a6b"
243+
"initCodeHash": "0x720595c92e78d68910ee2c853ffafa828e390f0db87285bd5f6fc2efc46cef23",
244+
"sourceCodeHash": "0x829e926bac073d6754e7dd7003c25d562d6281eb4155b47e2538cfc1b2e39481"
245245
},
246246
"src/multiproof/AggregateVerifier.sol:AggregateVerifier:dispute": {
247-
"initCodeHash": "0x89f15344142ede7ca9d6af3c998fb3ffec84293105b28daa8427aa0608dd1d9e",
248-
"sourceCodeHash": "0xfa0464c07c06fddc98ba20e9a362ba10ecf94496556d0f7ac88d1986f79a8a6b"
247+
"initCodeHash": "0x99f1a7cde19973758521b30278bbb075ae1122c1628385fbf52d5c0671e9c51a",
248+
"sourceCodeHash": "0x829e926bac073d6754e7dd7003c25d562d6281eb4155b47e2538cfc1b2e39481"
249249
},
250250
"src/multiproof/tee/NitroEnclaveVerifier.sol:NitroEnclaveVerifier": {
251-
"initCodeHash": "0xf7659c1a42a51292c1e4be84ade2bbe76bca784152335fc9cb98a38f042a1eed",
251+
"initCodeHash": "0x4b5c38a2a3ddbb863c0dd76ee44b1e78b592d4bd2c8bdb03e0d78398159be875",
252252
"sourceCodeHash": "0xd0e5da001f950a9d7325b0ecdffd46ef1c361eb749133c30689853dbf9886ff5"
253253
},
254254
"src/multiproof/tee/TEEProverRegistry.sol:TEEProverRegistry": {

src/multiproof/AggregateVerifier.sol

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ contract AggregateVerifier is Clone, ReentrancyGuard, ISemver {
3737
ZK
3838
}
3939

40+
/// @notice Hashes for the ZK proving programs.
41+
struct ZkHashes {
42+
bytes32 rangeHash;
43+
bytes32 aggregateHash;
44+
}
45+
4046
////////////////////////////////////////////////////////////////
4147
// Constants //
4248
////////////////////////////////////////////////////////////////
@@ -77,8 +83,11 @@ contract AggregateVerifier is Clone, ReentrancyGuard, ISemver {
7783
/// @notice The ZK prover.
7884
IVerifier public immutable ZK_VERIFIER;
7985

80-
/// @notice The hash of the ZK image.
81-
bytes32 public immutable ZK_IMAGE_HASH;
86+
/// @notice The hash of the ZK range program.
87+
bytes32 public immutable ZK_RANGE_HASH;
88+
89+
/// @notice The hash of the ZK aggregate program.
90+
bytes32 public immutable ZK_AGGREGATE_HASH;
8291

8392
/// @notice The hash of the rollup configuration.
8493
bytes32 public immutable CONFIG_HASH;
@@ -247,7 +256,7 @@ contract AggregateVerifier is Clone, ReentrancyGuard, ISemver {
247256
/// @param teeVerifier The TEE verifier.
248257
/// @param zkVerifier The ZK verifier.
249258
/// @param teeImageHash The hash of the TEE image.
250-
/// @param zkImageHash The hash of the ZK image.
259+
/// @param zkHashes The hashes of the ZK range and aggregate programs.
251260
/// @param configHash The hash of the rollup configuration.
252261
/// @param l2ChainId The chain ID of the L2 network.
253262
/// @param blockInterval The block interval.
@@ -260,7 +269,7 @@ contract AggregateVerifier is Clone, ReentrancyGuard, ISemver {
260269
IVerifier teeVerifier,
261270
IVerifier zkVerifier,
262271
bytes32 teeImageHash,
263-
bytes32 zkImageHash,
272+
ZkHashes memory zkHashes,
264273
bytes32 configHash,
265274
uint256 l2ChainId,
266275
uint256 blockInterval,
@@ -283,7 +292,8 @@ contract AggregateVerifier is Clone, ReentrancyGuard, ISemver {
283292
TEE_VERIFIER = teeVerifier;
284293
ZK_VERIFIER = zkVerifier;
285294
TEE_IMAGE_HASH = teeImageHash;
286-
ZK_IMAGE_HASH = zkImageHash;
295+
ZK_RANGE_HASH = zkHashes.rangeHash;
296+
ZK_AGGREGATE_HASH = zkHashes.aggregateHash;
287297
CONFIG_HASH = configHash;
288298
L2_CHAIN_ID = l2ChainId;
289299
BLOCK_INTERVAL = blockInterval;
@@ -910,12 +920,12 @@ contract AggregateVerifier is Clone, ReentrancyGuard, ISemver {
910920
endingL2SequenceNumber,
911921
intermediateRoots,
912922
CONFIG_HASH,
913-
ZK_IMAGE_HASH
923+
ZK_RANGE_HASH
914924
)
915925
);
916926

917927
// Validate the proof.
918-
if (!ZK_VERIFIER.verify(proofBytes, ZK_IMAGE_HASH, journal)) revert InvalidProof();
928+
if (!ZK_VERIFIER.verify(proofBytes, ZK_AGGREGATE_HASH, journal)) revert InvalidProof();
919929
}
920930

921931
/// @notice Returns the status of the parent game.

test/multiproof/AggregateVerifier.t.sol

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ contract AggregateVerifierTest is BaseTest {
323323
IVerifier(address(teeVerifier)),
324324
IVerifier(address(zkVerifier)),
325325
TEE_IMAGE_HASH,
326-
ZK_IMAGE_HASH,
326+
AggregateVerifier.ZkHashes(ZK_RANGE_HASH, ZK_AGGREGATE_HASH),
327327
CONFIG_HASH,
328328
L2_CHAIN_ID,
329329
0,
@@ -340,7 +340,7 @@ contract AggregateVerifierTest is BaseTest {
340340
IVerifier(address(teeVerifier)),
341341
IVerifier(address(zkVerifier)),
342342
TEE_IMAGE_HASH,
343-
ZK_IMAGE_HASH,
343+
AggregateVerifier.ZkHashes(ZK_RANGE_HASH, ZK_AGGREGATE_HASH),
344344
CONFIG_HASH,
345345
L2_CHAIN_ID,
346346
BLOCK_INTERVAL,
@@ -357,7 +357,7 @@ contract AggregateVerifierTest is BaseTest {
357357
IVerifier(address(teeVerifier)),
358358
IVerifier(address(zkVerifier)),
359359
TEE_IMAGE_HASH,
360-
ZK_IMAGE_HASH,
360+
AggregateVerifier.ZkHashes(ZK_RANGE_HASH, ZK_AGGREGATE_HASH),
361361
CONFIG_HASH,
362362
L2_CHAIN_ID,
363363
3,
@@ -376,7 +376,7 @@ contract AggregateVerifierTest is BaseTest {
376376
IVerifier(address(teeVerifier)),
377377
IVerifier(address(zkVerifier)),
378378
TEE_IMAGE_HASH,
379-
ZK_IMAGE_HASH,
379+
AggregateVerifier.ZkHashes(ZK_RANGE_HASH, ZK_AGGREGATE_HASH),
380380
CONFIG_HASH,
381381
L2_CHAIN_ID,
382382
BLOCK_INTERVAL,
@@ -393,7 +393,7 @@ contract AggregateVerifierTest is BaseTest {
393393
IVerifier(address(teeVerifier)),
394394
IVerifier(address(zkVerifier)),
395395
TEE_IMAGE_HASH,
396-
ZK_IMAGE_HASH,
396+
AggregateVerifier.ZkHashes(ZK_RANGE_HASH, ZK_AGGREGATE_HASH),
397397
CONFIG_HASH,
398398
L2_CHAIN_ID,
399399
BLOCK_INTERVAL,

test/multiproof/BaseTest.t.sol

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ contract BaseTest is Test {
4646
address public immutable ATTACKER = makeAddr("attacker");
4747

4848
bytes32 public immutable TEE_IMAGE_HASH = keccak256("tee-image");
49-
bytes32 public immutable ZK_IMAGE_HASH = keccak256("zk-image");
49+
bytes32 public immutable ZK_RANGE_HASH = keccak256("zk-range");
50+
bytes32 public immutable ZK_AGGREGATE_HASH = keccak256("zk-aggregate");
5051
bytes32 public immutable CONFIG_HASH = keccak256("config");
5152

5253
ProxyAdmin public proxyAdmin;
@@ -128,7 +129,7 @@ contract BaseTest is Test {
128129
IVerifier(address(teeVerifier)),
129130
IVerifier(address(zkVerifier)),
130131
TEE_IMAGE_HASH,
131-
ZK_IMAGE_HASH,
132+
AggregateVerifier.ZkHashes(ZK_RANGE_HASH, ZK_AGGREGATE_HASH),
132133
CONFIG_HASH,
133134
L2_CHAIN_ID,
134135
BLOCK_INTERVAL,

0 commit comments

Comments
 (0)