Skip to content

Commit 4c4bbca

Browse files
committed
add specs
1 parent 4137794 commit 4c4bbca

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

packages/contracts-bedrock/interfaces/dispute/IAnchorStateRegistry.sol

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,22 @@ interface IAnchorStateRegistry {
1818
function anchors(GameType) external view returns (Hash, uint256);
1919
function getAnchorRoot() external view returns (Hash, uint256);
2020
function disputeGameFactory() external view returns (IDisputeGameFactory);
21-
function initialize(ISuperchainConfig _superchainConfig, IDisputeGameFactory _disputeGameFactory, IOptimismPortal2 _portal, OutputRoot memory _startingAnchorRoot) external;
22-
function isGameRegistered(IDisputeGame _game) external view returns (bool);
21+
function initialize(
22+
ISuperchainConfig _superchainConfig,
23+
IDisputeGameFactory _disputeGameFactory,
24+
IOptimismPortal2 _portal,
25+
OutputRoot memory _startingAnchorRoot
26+
)
27+
external;
28+
function isGameBeyondAirgap(IDisputeGame _game) external view returns (bool);
2329
function isGameBlacklisted(IDisputeGame _game) external view returns (bool);
30+
function isGameClaimValid(IDisputeGame _game) external view returns (bool, string memory);
31+
function isGameFinalized(IDisputeGame _game) external view returns (bool, string memory);
32+
function isGameProper(IDisputeGame _game) external view returns (bool, string memory);
33+
function isGameRegistered(IDisputeGame _game) external view returns (bool);
34+
function isGameResolved(IDisputeGame _game) external view returns (bool);
2435
function isGameRespected(IDisputeGame _game) external view returns (bool);
2536
function isGameRetired(IDisputeGame _game) external view returns (bool);
26-
function isGameResolved(IDisputeGame _game) external view returns (bool);
27-
function isGameBeyondAirgap(IDisputeGame _game) external view returns (bool);
28-
function isGameProper(IDisputeGame _game) external view returns (bool, string memory);
29-
function isGameFinalized(IDisputeGame _game) external view returns (bool, string memory);
30-
function isGameClaimValid(IDisputeGame _game) external view returns (bool, string memory);
3137
function portal() external view returns (IOptimismPortal2);
3238
function respectedGameType() external view returns (GameType);
3339
function setAnchorState(IDisputeGame _game) external;

packages/contracts-bedrock/interfaces/dispute/IPermissionedDisputeGame.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.0;
33

44
import { Types } from "src/libraries/Types.sol";
5-
import { Claim, Position, Clock, Hash, Duration, BondDistributionMode } from "src/dispute/lib/Types.sol";
5+
import { Claim, Position, Clock, Hash, Duration, Timestamp, BondDistributionMode } from "src/dispute/lib/Types.sol";
66

77
import { IAnchorStateRegistry } from "interfaces/dispute/IAnchorStateRegistry.sol";
88
import { IDelayedWETH } from "interfaces/dispute/IDelayedWETH.sol";
@@ -100,6 +100,7 @@ interface IPermissionedDisputeGame is IDisputeGame {
100100
function getNumToResolve(uint256 _claimIndex) external view returns (uint256 numRemainingChildren_);
101101
function getRequiredBond(Position _position) external view returns (uint256 requiredBond_);
102102
function hasUnlockedCredit(address) external view returns (bool);
103+
function initialize() external payable;
103104
function l2BlockNumber() external pure returns (uint256 l2BlockNumber_);
104105
function l2BlockNumberChallenged() external view returns (bool);
105106
function l2BlockNumberChallenger() external view returns (address);

packages/contracts-bedrock/test/universal/Specs.t.sol

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol";
2323
/// @dev Specifies common security properties of entrypoints to L1 contracts, including authorization and
2424
/// pausability.
2525
/// When adding new functions to the L1 system, the `setUp` function must be updated to document the security
26-
/// properties of the new function. The `Spec` struct reppresents this documentation. However, this contract does
26+
/// properties of the new function. The `Spec` struct represents this documentation. However, this contract does
2727
/// not actually test to verify these properties, only that a spec is defined.
2828
contract Specification_Test is CommonTest {
2929
enum Role {
@@ -573,21 +573,25 @@ contract Specification_Test is CommonTest {
573573
_addSpec({ _name: "MintManager", _sel: _getSel("upgrade(address)"), _auth: Role.MINTMANAGEROWNER });
574574

575575
// AnchorStateRegistry
576+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("anchorGame()") });
576577
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("anchors(uint32)") });
577578
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("getAnchorRoot()") });
578579
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("disputeGameFactory()") });
579-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("portal()") });
580-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("anchorGame()") });
581580
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("initialize(address,address,address,(bytes32,uint256))") });
582-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("tryUpdateAnchorState()") });
583-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("setAnchorState(address)"), _auth: Role.GUARDIAN });
584-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("version()") });
581+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameBeyondAirgap(address)") });
582+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameBlacklisted(address)") });
583+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameClaimValid(address)") });
584+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameFinalized(address)") });
585+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameProper(address)") });
585586
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameRegistered(address)") });
587+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameResolved(address)") });
586588
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameRespected(address)") });
587-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameBlacklisted(address)") });
588589
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameRetired(address)") });
589-
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("isGameProper(address)") });
590+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("portal()") });
591+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("respectedGameType()") });
592+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("setAnchorState(address)"), _auth: Role.GUARDIAN });
590593
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("superchainConfig()") });
594+
_addSpec({ _name: "AnchorStateRegistry", _sel: _getSel("version()") });
591595

592596
// PermissionedDisputeGame
593597
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("absolutePrestate()") });
@@ -598,6 +602,7 @@ contract Specification_Test is CommonTest {
598602
_sel: _getSel("attack(bytes32,uint256,bytes32)"),
599603
_auth: Role.CHALLENGER
600604
});
605+
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("bondDistributionMode()") });
601606
_addSpec({
602607
_name: "PermissionedDisputeGame",
603608
_sel: _getSel("challengeRootL2Block((bytes32,bytes32,bytes32,bytes32),bytes)"),
@@ -609,6 +614,7 @@ contract Specification_Test is CommonTest {
609614
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("claimDataLen()") });
610615
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("claims(bytes32)") });
611616
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("clockExtension()") });
617+
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("closeGame()") });
612618
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("createdAt()") });
613619
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("credit(address)") });
614620
_addSpec({
@@ -623,6 +629,7 @@ contract Specification_Test is CommonTest {
623629
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("getChallengerDuration(uint256)") });
624630
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("getNumToResolve(uint256)") });
625631
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("getRequiredBond(uint128)") });
632+
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("hasUnlockedCredit(address)") });
626633
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("initialize()") });
627634
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("l1Head()") });
628635
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("l2BlockNumber()") });
@@ -637,6 +644,7 @@ contract Specification_Test is CommonTest {
637644
_auth: Role.CHALLENGER
638645
});
639646
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("proposer()") });
647+
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("refundModeCredit(address)") });
640648
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("resolutionCheckpoints(uint256)") });
641649
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("resolve()") });
642650
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("resolveClaim(uint256,uint256)") });
@@ -656,13 +664,15 @@ contract Specification_Test is CommonTest {
656664
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("subgames(uint256,uint256)") });
657665
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("version()") });
658666
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("vm()") });
667+
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("wasRespectedGameTypeWhenCreated()") });
659668
_addSpec({ _name: "PermissionedDisputeGame", _sel: _getSel("weth()") });
660669

661670
// FaultDisputeGame
662671
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("absolutePrestate()") });
663672
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("addLocalData(uint256,uint256,uint256)") });
664673
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("anchorStateRegistry()") });
665674
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("attack(bytes32,uint256,bytes32)") });
675+
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("bondDistributionMode()") });
666676
_addSpec({
667677
_name: "FaultDisputeGame",
668678
_sel: _getSel("challengeRootL2Block((bytes32,bytes32,bytes32,bytes32),bytes)")
@@ -672,6 +682,7 @@ contract Specification_Test is CommonTest {
672682
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("claimDataLen()") });
673683
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("claims(bytes32)") });
674684
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("clockExtension()") });
685+
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("closeGame()") });
675686
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("createdAt()") });
676687
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("credit(address)") });
677688
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("defend(bytes32,uint256,bytes32)") });
@@ -681,6 +692,7 @@ contract Specification_Test is CommonTest {
681692
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("gameType()") });
682693
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("getChallengerDuration(uint256)") });
683694
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("getRequiredBond(uint128)") });
695+
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("hasUnlockedCredit(address)") });
684696
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("initialize()") });
685697
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("l1Head()") });
686698
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("l2BlockNumber()") });
@@ -693,6 +705,7 @@ contract Specification_Test is CommonTest {
693705
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("resolutionCheckpoints(uint256)") });
694706
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("resolve()") });
695707
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("getNumToResolve(uint256)") });
708+
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("refundModeCredit(address)") });
696709
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("resolveClaim(uint256,uint256)") });
697710
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("resolvedAt()") });
698711
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("resolvedSubgames(uint256)") });
@@ -706,6 +719,7 @@ contract Specification_Test is CommonTest {
706719
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("subgames(uint256,uint256)") });
707720
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("version()") });
708721
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("vm()") });
722+
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("wasRespectedGameTypeWhenCreated()") });
709723
_addSpec({ _name: "FaultDisputeGame", _sel: _getSel("weth()") });
710724

711725
// DisputeGameFactory

0 commit comments

Comments
 (0)