Skip to content

Commit

Permalink
optimistic zk contract
Browse files Browse the repository at this point in the history
  • Loading branch information
zobront committed Jun 4, 2024
1 parent 70912c0 commit f423dc5
Show file tree
Hide file tree
Showing 7 changed files with 557 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,6 @@
[submodule "packages/contracts-bedrock/lib/automate"]
path = packages/contracts-bedrock/lib/automate
url = https://github.com/gelatodigital/automate
[submodule "packages/contracts-bedrock/lib/sp1-contracts"]
path = packages/contracts-bedrock/lib/sp1-contracts
url = https://github.com/succinctlabs/sp1-contracts
1 change: 1 addition & 0 deletions packages/contracts-bedrock/lib/sp1-contracts
Submodule sp1-contracts added at 610395
22 changes: 22 additions & 0 deletions packages/contracts-bedrock/remappings.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
@rari-capital/solmate/=lib/solmate/
@lib-keccak/=lib/lib-keccak/contracts/lib/
@solady/=lib/solady/src/
forge-std/=lib/forge-std/src/
ds-test/=lib/forge-std/lib/ds-test/src/
safe-contracts/=lib/safe-contracts/contracts/
kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/
gelato/=lib/automate/contracts/
@solady-test/=lib/lib-keccak/lib/solady/test/
automate/=lib/automate/contracts/
erc4626-tests/=lib/automate/lib/openzeppelin-contracts/lib/erc4626-tests/
hardhat/=lib/automate/node_modules/hardhat/
lib-keccak/=lib/lib-keccak/contracts/
openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/
openzeppelin-contracts/=lib/openzeppelin-contracts/
prb-test/=lib/automate/lib/prb-test/src/
prb/-est/=lib/automate/lib/prb-test/src/
solady/=lib/solady/
solmate/=lib/solmate/src/
@sp1-contracts/=lib/sp1-contracts/contracts/src/
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
pragma solidity ^0.8.15;

import { LibClone } from "@solady/utils/LibClone.sol";
import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
Expand Down
483 changes: 483 additions & 0 deletions packages/contracts-bedrock/src/dispute/OptimisticZKGame.sol

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

import { IDisputeGame } from "./IDisputeGame.sol";
import "src/dispute/lib/Types.sol";

interface IOptimisticZKGame is IDisputeGame {
enum IntermediateClaimStatus {
NONE,
ACCEPTED,
CHALLENGED
}

struct IntermediateRootClaim {
OutputRoot outputRoot;
IntermediateClaimStatus status;
}

struct Challenge {
address challenger;
Clock proposerClock;
IntermediateRootClaim left;
IntermediateRootClaim right;
OutputRoot current;
uint totalBonds;
bool resolved;
}

error Unauthorized();
error ProposerIsChallenger();
error InvalidDurations();
error PreviousGameNotResolved();
error InvalidBlockNumber();
error WrongTurn();
error ReadyToProve();
error NotReadyToProve();
error InvalidChallengeId();
error GameAlreadyResolved();
error ChallengeAlreadyResolved();
error ChallengeCantBeResolved();
error WrongBondAmount();
error TransferFailed();
error ClockNotExpired();
}
3 changes: 3 additions & 0 deletions packages/contracts-bedrock/src/dispute/lib/Types.sol
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ library GameTypes {
/// @notice A dispute game type the uses the asterisc VM
GameType internal constant ASTERISC = GameType.wrap(2);

/// @notice A dispute game type that uses SP1 for Optimistic ZK proofs.
GameType internal constant OPTIMISTIC_SP1 = GameType.wrap(3);

/// @notice A dispute game type with short game duration for testing withdrawals.
/// Not intended for production use.
GameType internal constant FAST = GameType.wrap(254);
Expand Down

0 comments on commit f423dc5

Please sign in to comment.