Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
5041935
initial commit
roger-bai-coinbase Dec 4, 2025
bd550fd
Refactor tests and simplify verifier
roger-bai-coinbase Dec 4, 2025
e1a7654
Refactor proof verification methods to consolidate TEE and ZK proof h…
roger-bai-coinbase Dec 8, 2025
2ea6dff
refactor tests and errors
roger-bai-coinbase Dec 9, 2025
70864f8
Prevent proofs from extending resolution time
roger-bai-coinbase Dec 9, 2025
2ef75e4
ZK proof allows game creator to immediately reclaim bond
roger-bai-coinbase Dec 9, 2025
7e70a75
Additional tests
roger-bai-coinbase Dec 9, 2025
ab2e400
Refactor test cases to standardize warp duration and improve naming c…
roger-bai-coinbase Dec 10, 2025
aa2518d
Add validation to ensure parent game has a proof before creating a ch…
roger-bai-coinbase Dec 10, 2025
1613646
Use calldata and remove unused variable
roger-bai-coinbase Dec 11, 2025
5ba6ed7
Make internal verify functions consistent
roger-bai-coinbase Dec 11, 2025
ab2d01b
fix: can claim bond after nullifying a challenge
roger-bai-coinbase Dec 11, 2025
8e38be6
prevent challenges if parent or game itself is invalid
roger-bai-coinbase Jan 6, 2026
3a2b31c
Enhance AggregateVerifier to include hashes for TEE and ZK images, an…
roger-bai-coinbase Jan 12, 2026
0a053f1
Add ReentrancyGuard to AggregateVerifier and protect claimCredit func…
roger-bai-coinbase Jan 16, 2026
308f591
Add constant for initialize calldata size in AggregateVerifier and up…
roger-bai-coinbase Jan 16, 2026
9585f67
Add test to validate failure on invalid calldata size in AggregateVer…
roger-bai-coinbase Jan 16, 2026
45c47f6
Refactor l2BlockNumber function to l2SequenceNumber in AggregateVerif…
roger-bai-coinbase Jan 16, 2026
5cfe30b
Refactor visibility of state variables in AggregateVerifier from inte…
roger-bai-coinbase Jan 16, 2026
b2dd1ff
Moved wasRespectedGameTypeWhenCreated for storage optimization
roger-bai-coinbase Jan 16, 2026
f0d3f54
Remove underscores from constructor variables
roger-bai-coinbase Jan 16, 2026
5fcecd5
IDIsputeGame compliance
roger-bai-coinbase Jan 16, 2026
ba44e13
Remove implicit returns
roger-bai-coinbase Jan 16, 2026
54c4192
Add CreditClaimed event and update claimCredit logic in AggregateVeri…
roger-bai-coinbase Jan 16, 2026
49e2eea
Rename getParentGameStatus to _getParentGameStatus in AggregateVerifi…
roger-bai-coinbase Jan 16, 2026
2b3238d
Refactor return logic in getParentGameStatus to improve clarity by co…
roger-bai-coinbase Jan 16, 2026
8d47e48
solidity style guide
roger-bai-coinbase Jan 16, 2026
abe2710
forge fmt
roger-bai-coinbase Jan 16, 2026
c200cb7
Fix tests
roger-bai-coinbase Jan 16, 2026
3fbec56
remove unused imports
roger-bai-coinbase Jan 16, 2026
40b8bff
Named imports, reorganized imports, defined errors directly
roger-bai-coinbase Jan 16, 2026
59f58be
linter
roger-bai-coinbase Jan 16, 2026
79fbe48
Add underscores to deal with compiler warnings
roger-bai-coinbase Jan 20, 2026
7991678
Refactor and have consistent comments
roger-bai-coinbase Jan 22, 2026
b188c31
Update verifier interface to include image ID
roger-bai-coinbase Jan 30, 2026
e0dc966
Added feature where a proof is required for initialization
roger-bai-coinbase Feb 2, 2026
52d9845
Added feature where a proof is required for initialization
roger-bai-coinbase Feb 2, 2026
f099f9e
Add back in IDisputeGame inheritance
roger-bai-coinbase Feb 2, 2026
e4e32f7
forge fmt
roger-bai-coinbase Feb 2, 2026
6e1ed51
refactor proof format
roger-bai-coinbase Feb 3, 2026
3d1f480
game type validation on challenging game
roger-bai-coinbase Feb 3, 2026
fd2b88e
Add delayedWETH
roger-bai-coinbase Feb 5, 2026
faebf6e
forge fmt
roger-bai-coinbase Feb 5, 2026
9f4a3d9
Check challenging game validity when claiming credit
roger-bai-coinbase Feb 5, 2026
e9fa5a8
Add TEEVerifier and SystemConfigGlobal contracts and update Aggregate…
leopoldjoy Feb 5, 2026
d80610f
Merge branch 'main' of github.com:base/multiproof-dispute-game
leopoldjoy Feb 5, 2026
307b6fc
fix(TEEVerifier): use correct EIP-2935 address and raw calldata for b…
leopoldjoy Feb 5, 2026
98693e5
Refactor TEE contracts and deployment script based on PR review feedback
leopoldjoy Feb 7, 2026
b9e101d
Refactor TEE contracts and deployment script based on PR review feedback
leopoldjoy Feb 7, 2026
9ff1818
Remove underscore-prefixed parameters from mock contracts per style g…
leopoldjoy Feb 7, 2026
f57741c
Add comprehensive tests for TEEVerifier, SystemConfigGlobal, and DevS…
leopoldjoy Feb 7, 2026
01cd442
Update teeProposer to match proposer address
leopoldjoy Feb 8, 2026
db1107e
correct teeImageHash in Sepolia deploy config
leopoldjoy Feb 8, 2026
e0a9a4b
Merge pull request #1 from base/teeverifier-and-2e2-integration
leopoldjoy Feb 9, 2026
9e2690c
Merge pull request #1 from base/teeverifier-and-2e2-integration
leopoldjoy Feb 9, 2026
26eac98
Moving TEE proposer to TEEVerifier
roger-bai-coinbase Feb 9, 2026
b3e4392
fix TEE comment
roger-bai-coinbase Feb 10, 2026
e223802
Merge pull request #2 from base/move-tee-proposer-to-tee-verifier
roger-bai-coinbase Feb 11, 2026
c192c9b
feat: intermediate roots for nullification
roger-bai-coinbase Feb 17, 2026
f0b333f
move L1 origin hash check from TEEVerifier to AggregateVerifier
roger-bai-coinbase Feb 17, 2026
c7b1d81
fix tests
roger-bai-coinbase Feb 17, 2026
b38214b
forge fmt
roger-bai-coinbase Feb 17, 2026
f82f983
feat: split deploy configs and scripts into no-nitro and with-nitro v…
leopoldjoy Feb 19, 2026
8201c04
Merge branch 'main' into feat/split-deploy-configs-and-scripts
leopoldjoy Feb 19, 2026
1801c49
refactor _verifyProof
roger-bai-coinbase Feb 20, 2026
1c4e3fc
Merge pull request #3 from base/intermediate-roots
roger-bai-coinbase Feb 20, 2026
85918ee
added block interval tests and cleaned up some errors
roger-bai-coinbase Feb 20, 2026
d9732f3
forge fmt
roger-bai-coinbase Feb 20, 2026
6119424
verify proof earlier during initialize
roger-bai-coinbase Feb 20, 2026
db1268c
revert last commit
roger-bai-coinbase Feb 20, 2026
0633e55
refactor initialize
roger-bai-coinbase Feb 20, 2026
d3a3bc3
Merge branch 'main' into feat/split-deploy-configs-and-scripts
leopoldjoy Feb 20, 2026
50c088c
refactor
roger-bai-coinbase Feb 20, 2026
f59abd6
Merge branch 'simplify-storage-and-refactor' into feat/split-deploy-c…
leopoldjoy Feb 22, 2026
cf84877
Merge pull request #5 from base/simplify-storage-and-refactor
roger-bai-coinbase Feb 22, 2026
ccac6c3
fix: register TEE proposer during deployment and add intermediateBloc…
leopoldjoy Feb 22, 2026
d0c40f0
Merge pull request #4 from base/feat/split-deploy-configs-and-scripts
leopoldjoy Feb 22, 2026
6164a13
use l1head for proofs after initialization
roger-bai-coinbase Feb 24, 2026
fd779bc
forge fmt
roger-bai-coinbase Feb 25, 2026
780715d
Fix comments from PR feedback
roger-bai-coinbase Feb 26, 2026
2daabba
Merge pull request #6 from base/use-l1head-after-init
roger-bai-coinbase Feb 26, 2026
c2e9154
Merge branch 'main' into joby.thundil/CHAIN-3293-migrate-multiproof-c…
jjtny1 Feb 27, 2026
935b7eb
step 1 fix dependencies and op commit
jjtny1 Feb 27, 2026
b0726ae
Merge branch 'main' into joby.thundil/CHAIN-3293-migrate-multiproof-c…
jjtny1 Feb 27, 2026
920d6e4
make multiproof compatible with base contracts
jjtny1 Feb 28, 2026
351a9ba
fix imports in scripts
jjtny1 Feb 28, 2026
48c06f9
fix mocks
jjtny1 Feb 28, 2026
e986e12
format and seperate out multiproof tests
jjtny1 Feb 28, 2026
c0ee7ac
add tests to just and gen semver
jjtny1 Feb 28, 2026
7d94460
fix tests
jjtny1 Feb 28, 2026
d416a43
rm unecessary op commit
jjtny1 Feb 28, 2026
cb97431
apply optimism patch for multiproof
jjtny1 Feb 28, 2026
cae85a8
move multiproof tests
jjtny1 Mar 1, 2026
cb82112
move files and delete multiproof test usage and profile
jjtny1 Mar 1, 2026
ccf3601
remove remappings of nitro and op enclave
jjtny1 Mar 1, 2026
1b4343e
undo multiproof changes and solady import change
jjtny1 Mar 1, 2026
babc5ad
support AggregateVerifier in initalizer test
jjtny1 Mar 2, 2026
7b90711
fix import path
jjtny1 Mar 2, 2026
76335ba
semver
jjtny1 Mar 2, 2026
1e6412c
semver
jjtny1 Mar 2, 2026
5d90e6e
semver
jjtny1 Mar 2, 2026
4fd964b
deterministic semverlock
jjtny1 Mar 2, 2026
928cfe0
add comment
jjtny1 Mar 2, 2026
ee8c3b9
refactor multiproof patch changes. fix typo
jjtny1 Mar 2, 2026
3c6111b
semver
jjtny1 Mar 2, 2026
e7abb04
fmt
jjtny1 Mar 2, 2026
14ed45f
semver
jjtny1 Mar 2, 2026
9323dfd
fix tests
jjtny1 Mar 2, 2026
3a65398
fix tests where bytecodes size was different
jjtny1 Mar 3, 2026
b1dc695
fmt
jjtny1 Mar 3, 2026
11a0d84
semver
jjtny1 Mar 3, 2026
3953c94
semver
jjtny1 Mar 3, 2026
13610a9
semver
jjtny1 Mar 3, 2026
c956def
make aggregateverifies excluded like faultdispute game. fix systemcon…
jjtny1 Mar 3, 2026
a0f0b14
fmt
jjtny1 Mar 3, 2026
6b31f9d
fix tests
jjtny1 Mar 3, 2026
5cdba94
semver
jjtny1 Mar 3, 2026
8e00905
rm just test-multiproof
jjtny1 Mar 3, 2026
3e6f2e7
Replace onchain Nitro cert verification with Automata ZK verifier (#197)
leopoldjoy Mar 5, 2026
cd2c74c
Simplify AggregateVerifier and make it more modular for further proof…
roger-bai-coinbase Mar 5, 2026
c9a3748
allow bond refund after 14 days
roger-bai-coinbase Mar 5, 2026
1f81c50
fix build and tests
roger-bai-coinbase Mar 5, 2026
b4e62b9
forge fmt
roger-bai-coinbase Mar 5, 2026
85e463b
forge fmt
roger-bai-coinbase Mar 5, 2026
cd07d7c
pr feedback
roger-bai-coinbase Mar 5, 2026
1f670f5
semver lock
roger-bai-coinbase Mar 5, 2026
250534c
Clean up AggregateVerifier
roger-bai-coinbase Mar 5, 2026
2d40f60
Remove challenge after nullification
roger-bai-coinbase Mar 5, 2026
51f36b2
semver lock
roger-bai-coinbase Mar 5, 2026
34fb1c0
Clean up
roger-bai-coinbase Mar 5, 2026
4009c97
semver lock
roger-bai-coinbase Mar 5, 2026
86fa133
fix: nullifying zk challenge has to use original intermediate root
roger-bai-coinbase Mar 6, 2026
bd460e3
forge fmt
roger-bai-coinbase Mar 6, 2026
8c6c89c
fix: use starting anchor root when there is no parent game
roger-bai-coinbase Mar 6, 2026
a81630d
Merge branch 'main' into simplify-and-modularize-aggregate-verifier
roger-bai-coinbase Mar 6, 2026
71f4f0c
merge from main
roger-bai-coinbase Mar 6, 2026
f94c6a3
forge clean and rebuild
roger-bai-coinbase Mar 6, 2026
2e49e4c
fix forge fmt
roger-bai-coinbase Mar 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions interfaces/multiproof/IVerifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,16 @@
pragma solidity 0.8.15;

interface IVerifier {

/// @notice Verifies a proof.
/// @param proofBytes The proof.
/// @param imageId The image ID.
/// @param journal The journal.
/// @return valid Whether the proof is valid.
function verify(bytes calldata proofBytes, bytes32 imageId, bytes32 journal) external view returns (bool);

/// @notice Nullifies the prover to prevent further proof verification.
/// @dev Should only occur if a soundness issue is found.
/// @dev Should only be callable by a proper dispute game.
function nullify() external;
}
4 changes: 2 additions & 2 deletions scripts/deploy/DeployImplementations.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -717,14 +717,14 @@ contract DeployImplementations is Script {
}

function deployAggregateVerifierImpl(Input memory _input, Output memory _output) private {
address zkVerifier = address(new MockVerifier());
address zkVerifier = address(new MockVerifier(_output.anchorStateRegistryImpl));

address teeVerifierImpl;
{
SystemConfigGlobal scgImpl = new SystemConfigGlobal(INitroEnclaveVerifier(_input.nitroEnclaveVerifier));
vm.label(address(scgImpl), "SystemConfigGlobalImpl");
_output.systemConfigGlobalImpl = scgImpl;
teeVerifierImpl = address(new TEEVerifier(scgImpl));
teeVerifierImpl = address(new TEEVerifier(scgImpl, _output.anchorStateRegistryImpl));
}

_output.aggregateVerifierImpl = IVerifier(
Expand Down
8 changes: 5 additions & 3 deletions scripts/multiproof/DeployDevNoNitro.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ contract DeployDevNoNitro is Script {

vm.startBroadcast();

_deployTEEContracts(cfg.finalSystemOwner());
_registerProposer(cfg.teeProposer());
_deployInfrastructure(gameType);
_deployTEEContracts(cfg.finalSystemOwner());
_deployAggregateVerifier(gameType);

vm.stopBroadcast();
Expand All @@ -140,7 +140,9 @@ contract DeployDevNoNitro is Script {
);
console.log("DevSystemConfigGlobal:", systemConfigGlobalProxy);

teeVerifier = address(new TEEVerifier(SystemConfigGlobal(systemConfigGlobalProxy)));
teeVerifier = address(
new TEEVerifier(SystemConfigGlobal(systemConfigGlobalProxy), IAnchorStateRegistry(mockAnchorRegistry))
);
console.log("TEEVerifier:", teeVerifier);
}

Expand Down Expand Up @@ -173,7 +175,7 @@ contract DeployDevNoNitro is Script {
}

function _deployAggregateVerifier(GameType gameType) internal {
address zkVerifier = address(new MockVerifier());
address zkVerifier = address(new MockVerifier(IAnchorStateRegistry(mockAnchorRegistry)));
console.log("MockVerifier (ZK):", zkVerifier);

mockDelayedWETH = address(new MockDelayedWETH());
Expand Down
8 changes: 5 additions & 3 deletions scripts/multiproof/DeployDevWithNitro.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,9 @@ contract DeployDevWithNitro is Script {

vm.startBroadcast();

_deployTEEContracts(cfg.finalSystemOwner(), cfg.nitroEnclaveVerifier());
_registerProposer(cfg.teeProposer());
_deployInfrastructure(gameType);
_deployTEEContracts(cfg.finalSystemOwner(), cfg.nitroEnclaveVerifier());
_deployAggregateVerifier(gameType);

vm.stopBroadcast();
Expand All @@ -175,7 +175,9 @@ contract DeployDevWithNitro is Script {
);
console.log("SystemConfigGlobal:", systemConfigGlobalProxy);

teeVerifier = address(new TEEVerifier(SystemConfigGlobal(systemConfigGlobalProxy)));
teeVerifier = address(
new TEEVerifier(SystemConfigGlobal(systemConfigGlobalProxy), IAnchorStateRegistry(mockAnchorRegistry))
);
console.log("TEEVerifier:", teeVerifier);
}

Expand Down Expand Up @@ -208,7 +210,7 @@ contract DeployDevWithNitro is Script {
}

function _deployAggregateVerifier(GameType gameType) internal {
address zkVerifier = address(new MockVerifier());
address zkVerifier = address(new MockVerifier(IAnchorStateRegistry(mockAnchorRegistry)));
console.log("MockVerifier (ZK):", zkVerifier);

mockDelayedWETH = address(new MockDelayedWETH());
Expand Down
Loading
Loading