Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
e9c22a78
Unverified
Commit
e9c22a78
authored
Jul 10, 2023
by
clabby
Committed by
GitHub
Jul 10, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6226 from ethereum-optimism/clabby/ctb/fault-game-invariants
chore(docs): `FaultDisputeGame`
parents
f1e16b71
328f6365
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
127 additions
and
136 deletions
+127
-136
faultdisputegame.go
op-bindings/bindings/faultdisputegame.go
+43
-43
faultdisputegame_more.go
op-bindings/bindings/faultdisputegame_more.go
+1
-1
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+10
-10
FaultDisputeGame.sol
.../contracts-bedrock/contracts/dispute/FaultDisputeGame.sol
+63
-75
IFaultDisputeGame.sol
...edrock/contracts/dispute/interfaces/IFaultDisputeGame.sol
+10
-7
No files found.
op-bindings/bindings/faultdisputegame.go
View file @
e9c22a78
...
@@ -30,8 +30,8 @@ var (
...
@@ -30,8 +30,8 @@ var (
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
var
FaultDisputeGameMetaData
=
&
bind
.
MetaData
{
var
FaultDisputeGameMetaData
=
&
bind
.
MetaData
{
ABI
:
"[{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_absolutePrestate
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_maxGameDepth
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
contractIBigStepper
\"
,
\"
name
\"
:
\"
_vm
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
CannotDefendRootClaim
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ClaimAlreadyExists
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ClockNotExpired
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ClockTimeExceeded
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
GameDepthExceeded
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
GameNotInProgress
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
InvalidParent
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
InvalidPrestate
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ValidStep
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
parentIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
pivot
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
claimant
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
Move
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
enumGameStatus
\"
,
\"
name
\"
:
\"
status
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
Resolved
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ABSOLUTE_PRESTATE
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
MAX_GAME_DEPTH
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
VM
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIBigStepper
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_parentIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_pivot
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
attack
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
bondManager
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIBondManager
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
claimData
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint32
\"
,
\"
name
\"
:
\"
parentIndex
\"
,
\"
type
\"
:
\"
uint32
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
countered
\"
,
\"
type
\"
:
\"
bool
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
claim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
Position
\"
,
\"
name
\"
:
\"
position
\"
,
\"
type
\"
:
\"
uint128
\"
},{
\"
internalType
\"
:
\"
Clock
\"
,
\"
name
\"
:
\"
clock
\"
,
\"
type
\"
:
\"
uint128
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
claimDataLen
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
len_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
createdAt
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Timestamp
\"
,
\"
name
\"
:
\"
createdAt_
\"
,
\"
type
\"
:
\"
uint64
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_parentIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_pivot
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
defend
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
extraData
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
extraData_
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameData
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType_
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim_
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
extraData_
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameStart
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Timestamp
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint64
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameType
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType_
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
initialize
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
l2BlockNumber
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
l2BlockNumber_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_challengeIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_pivot
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
_isAttack
\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
name
\"
:
\"
move
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
resolve
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
enumGameStatus
\"
,
\"
name
\"
:
\"
status_
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
rootClaim
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim_
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
status
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
enumGameStatus
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_stateIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_claimIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
_isAttack
\"
,
\"
type
\"
:
\"
bool
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_stateData
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_proof
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
step
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
version
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
string
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
}]"
,
ABI
:
"[{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_absolutePrestate
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_maxGameDepth
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
contractIBigStepper
\"
,
\"
name
\"
:
\"
_vm
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
CannotDefendRootClaim
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ClaimAlreadyExists
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ClockNotExpired
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ClockTimeExceeded
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
GameDepthExceeded
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
GameNotInProgress
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
InvalidParent
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
InvalidPrestate
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ValidStep
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
parentIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
claim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
claimant
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
Move
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
enumGameStatus
\"
,
\"
name
\"
:
\"
status
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
Resolved
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
ABSOLUTE_PRESTATE
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
MAX_GAME_DEPTH
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
VM
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIBigStepper
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_parentIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_claim
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
attack
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
bondManager
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIBondManager
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
claimData
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint32
\"
,
\"
name
\"
:
\"
parentIndex
\"
,
\"
type
\"
:
\"
uint32
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
countered
\"
,
\"
type
\"
:
\"
bool
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
claim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
Position
\"
,
\"
name
\"
:
\"
position
\"
,
\"
type
\"
:
\"
uint128
\"
},{
\"
internalType
\"
:
\"
Clock
\"
,
\"
name
\"
:
\"
clock
\"
,
\"
type
\"
:
\"
uint128
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
claimDataLen
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
len_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
createdAt
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Timestamp
\"
,
\"
name
\"
:
\"
createdAt_
\"
,
\"
type
\"
:
\"
uint64
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_parentIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_claim
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
defend
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
extraData
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
extraData_
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameData
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType_
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim_
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
extraData_
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameStart
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Timestamp
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint64
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameType
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType_
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
initialize
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
l2BlockNumber
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
l2BlockNumber_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_challengeIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_claim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
_isAttack
\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
name
\"
:
\"
move
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
resolve
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
enumGameStatus
\"
,
\"
name
\"
:
\"
status_
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
rootClaim
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim_
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
status
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
enumGameStatus
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_stateIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_claimIndex
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
_isAttack
\"
,
\"
type
\"
:
\"
bool
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_stateData
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_proof
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
step
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
version
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
string
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
}]"
,
Bin
:
"0x61014060405234801561001157600080fd5b506040516200214
8380380620021488339810160408190526100329161005d565b6000608081905260a052600260c05260e092909252610100526001600160a01b0316610120526100a3565b60008060006060848603121561007257600080fd5b83516020850151604086015191945092506001600160a01b038116811461009857600080fd5b809150509250925092565b60805160a05160c05160e051610100516101205161202462000124600039600081816103aa01526115bc0152600081816102c20152818161061701528181610b77015281816111dc0152818161148801526114cd0152600081816101bd01526113100152600061095f015260006109360152600061090d01526120246000f3fe60806040526004361061016a5760003560e01c80638129fc1c116100cb578063bcef3b551161007f578063cf09e0d011610059578063cf09e0d01461049c578063e4c290c4146104bb578063fa24f743146104db57600080fd5b8063bcef3b55146103e8578063c55cd0c714610425578063c6f0308c1461043857600080fd5b80638b85902b116100b05780638b85902b146103585780639293129814610398578063bbdc02db146103cc57600080fd5b80638129fc1c1461032e5780638980e0cc1461034357600080fd5b8063363cc4271161012257806354fd4d501161010757806354fd4d50146102e4578063609d333414610306578063632247ea1461031b57600080fd5b8063363cc427146102515780634778efe8146102b057600080fd5b80632810e1d6116101535780632810e1d6146101ed5780633218b99d1461020257806335fef5671461023c57600080fd5b8063200d2ed21461016f578063266198f9146101ab575b600080fd5b34801561017b57600080fd5b506000546101959068010000000000000000900460ff1681565b6040516101a29190611af8565b60405180910390f35b3480156101b757600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a2565b3480156101f957600080fd5b506101956104ff565b34801561020e57600080fd5b506000546102239067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101a2565b61024f61024a366004611b39565b6108f6565b005b34801561025d57600080fd5b5060005461028b906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b3480156102bc57600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f057600080fd5b506102f9610906565b6040516101a29190611bd5565b34801561031257600080fd5b506102f96109a9565b61024f610329366004611c04565b6109bb565b34801561033a57600080fd5b5061024f610f75565b34801561034f57600080fd5b506001546101df565b34801561036457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003602001356101df565b3480156103a457600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b50604051600081526020016101a2565b3480156103f457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356101df565b61024f610433366004611b39565b6110b6565b34801561044457600080fd5b50610458610453366004611c39565b6110c2565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101a2565b3480156104a857600080fd5b5060005467ffffffffffffffff16610223565b3480156104c757600080fd5b5061024f6104d6366004611c9b565b611133565b3480156104e757600080fd5b506104f06116ac565b6040516101a293929190611d2f565b60008060005468010000000000000000900460ff16600281111561052557610525611ac9565b1461055c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460009161056c91611d89565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610656576000600182815481106105a6576105a6611da0565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156105f75750610581565b600281015460009061063b906fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000006116ea565b90508381101561064f578093508260010194505b5050610581565b5060006001838154811061066c5761066c611da0565b600091825260208220600390910201805490925063ffffffff908116919082146106d657600182815481106106a3576106a3611da0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610702565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b905062049d4061071c67ffffffffffffffff831642611d89565b610738836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661074c9190611dcf565b11610783576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610825906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61082f9190611e16565b67ffffffffffffffff1615801561085657506fffffffffffffffffffffffffffffffff8414155b156108645760029550610869565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156108ae576108ae611ac9565b02179055508560028111156108c5576108c5611ac9565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b610902828260006109bb565b5050565b60606109317f000000000000000000000000000000000000000000000000000000000000000061179f565b61095a7f000000000000000000000000000000000000000000000000000000000000000061179f565b6109837f000000000000000000000000000000000000000000000000000000000000000061179f565b60405160200161099593929190611e3d565b604051602081830303815290604052905090565b60606109b66020806118dc565b905090565b6000805468010000000000000000900460ff1660028111156109df576109df611ac9565b14610a16576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610a22575080155b15610a59576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060018481548110610a6e57610a6e611da0565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002909201546fffffffffffffffffffffffffffffffff80821660608401527001000000000000000000000000000000009091041660808201528154909250819086908110610b0957610b09611da0565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610b73906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610c32826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610c74576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610cd4576001836000015163ffffffff1681548110610ca357610ca3611da0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610d0d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d219190611dcf565b610d2b9190611d89565b905062049d4067ffffffffffffffff82161115610d74576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610d95888660009182526020526040902090565b60008181526002602052604090205490915060ff1615610de1576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a82166080860190815286548088018855968a52945160039096027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78401555190518416700100000000000000000000000000000000029316929092177fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff81526020810192909252600191908101610ffa7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151938101939093556060820151608090920151811670010000000000000000000000000000000002911617600290910155565b610902828260016109bb565b600181815481106110d257600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff16600281111561115757611157611ac9565b1461118e576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600187815481106111a3576111a3611da0565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506112027f00000000000000000000000000000000000000000000000000000000000000006001611dcf565b61129e826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff16146112df576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806112fd836fffffffffffffffffffffffffffffffff16611973565b67ffffffffffffffff1660000361135d577f0000000000000000000000000000000000000000000000000000000000000000915060018b8154811061134457611344611da0565b906000526020600020906003020160010154905061157d565b6000808b156113df5760018e8154811061137957611379611da0565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16915060018e815481106113bc576113bc611da0565b90600052602060002090600302016001015493508590508660010154925061146e565b600287015460018089015481549096506fffffffffffffffffffffffffffffffff9092169350908f90811061141657611416611da0565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16905060018e8154811061145957611459611da0565b90600052602060002090600302016001015492505b60016114ac6fffffffffffffffffffffffffffffffff83167f0000000000000000000000000000000000000000000000000000000000000000611a19565b6114b69190611eb3565b6fffffffffffffffffffffffffffffffff1661150d7f0000000000000000000000000000000000000000000000000000000000000000846fffffffffffffffffffffffffffffffff16611a1990919063ffffffff16565b6fffffffffffffffffffffffffffffffff161415806115435750838b8b604051611538929190611ee4565b604051809103902014155b1561157a576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b6040517ff8e0cb96000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f8e0cb96906115f7908d908d908d908d90600401611f3d565b6020604051808303816000875af1158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190611f6f565b03611671576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505082547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff1664010000000017909255505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560606116e36109a9565b9050909192565b600080611777847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b6060816000036117e257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561180c57806117f681611f88565b91506118059050600a83611fc0565b91506117e6565b60008167ffffffffffffffff81111561182757611827611fd4565b6040519080825280601f01601f191660200182016040528015611851576020820181803683370190505b5090505b84156118d457611866600183611d89565b9150611873600a86612003565b61187e906030611dcf565b60f81b81838151811061189357611893611da0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506118cd600a86611fc0565b9450611855565b949350505050565b6060600061191384367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003611dcf565b90508267ffffffffffffffff1667ffffffffffffffff81111561193857611938611fd4565b6040519080825280601f01601f191660200182016040528015611962576020820181803683370190505b509150828160208401375092915050565b600080611a00837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b600080611aa6847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169050808303600180821b0385821b179250505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611b33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215611b4c57600080fd5b50508035926020909101359150565b60005b83811015611b76578181015183820152602001611b5e565b83811115611b85576000848401525b50505050565b60008151808452611ba3816020860160208601611b5b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be86020830184611b8b565b9392505050565b80358015158114611bff57600080fd5b919050565b600080600060608486031215611c1957600080fd5b8335925060208401359150611c3060408501611bef565b90509250925092565b600060208284031215611c4b57600080fd5b5035919050565b60008083601f840112611c6457600080fd5b50813567ffffffffffffffff811115611c7c57600080fd5b602083019150836020828501011115611c9457600080fd5b9250929050565b600080600080600080600060a0888a031215611cb657600080fd5b8735965060208801359550611ccd60408901611bef565b9450606088013567ffffffffffffffff80821115611cea57600080fd5b611cf68b838c01611c52565b909650945060808a0135915080821115611d0f57600080fd5b50611d1c8a828b01611c52565b989b979a50959850939692959293505050565b60ff84168152826020820152606060408201526000611d516060830184611b8b565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611d9b57611d9b611d5a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115611de257611de2611d5a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611e3157611e31611de7565b92169190910692915050565b60008451611e4f818460208901611b5b565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611e8b816001850160208a01611b5b565b60019201918201528351611ea6816002840160208801611b5b565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015611edc57611edc611d5a565b039392505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000611f51604083018688611ef4565b8281036020840152611f64818587611ef4565b979650505050505050565b600060208284031215611f8157600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fb957611fb9611d5a565b5060010190565b600082611fcf57611fcf611de7565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261201257612012611de7
565b50069056fea164736f6c634300080f000a"
,
Bin
:
"0x61014060405234801561001157600080fd5b506040516200214
6380380620021468339810160408190526100329161005d565b6000608081905260a052600260c05260e092909252610100526001600160a01b0316610120526100a3565b60008060006060848603121561007257600080fd5b83516020850151604086015191945092506001600160a01b038116811461009857600080fd5b809150509250925092565b60805160a05160c05160e051610100516101205161202262000124600039600081816103aa01526115ba0152600081816102c20152818161061701528181610b75015281816111da0152818161148601526114cb0152600081816101bd015261130e0152600061095d015260006109340152600061090b01526120226000f3fe60806040526004361061016a5760003560e01c80638129fc1c116100cb578063bcef3b551161007f578063cf09e0d011610059578063cf09e0d01461049c578063e4c290c4146104bb578063fa24f743146104db57600080fd5b8063bcef3b55146103e8578063c55cd0c714610425578063c6f0308c1461043857600080fd5b80638b85902b116100b05780638b85902b146103585780639293129814610398578063bbdc02db146103cc57600080fd5b80638129fc1c1461032e5780638980e0cc1461034357600080fd5b8063363cc4271161012257806354fd4d501161010757806354fd4d50146102e4578063609d333414610306578063632247ea1461031b57600080fd5b8063363cc427146102515780634778efe8146102b057600080fd5b80632810e1d6116101535780632810e1d6146101ed5780633218b99d1461020257806335fef5671461023c57600080fd5b8063200d2ed21461016f578063266198f9146101ab575b600080fd5b34801561017b57600080fd5b506000546101959068010000000000000000900460ff1681565b6040516101a29190611af6565b60405180910390f35b3480156101b757600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a2565b3480156101f957600080fd5b506101956104ff565b34801561020e57600080fd5b506000546102239067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101a2565b61024f61024a366004611b37565b6108f4565b005b34801561025d57600080fd5b5060005461028b906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b3480156102bc57600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f057600080fd5b506102f9610904565b6040516101a29190611bd3565b34801561031257600080fd5b506102f96109a7565b61024f610329366004611c02565b6109b9565b34801561033a57600080fd5b5061024f610f73565b34801561034f57600080fd5b506001546101df565b34801561036457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003602001356101df565b3480156103a457600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b50604051600081526020016101a2565b3480156103f457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356101df565b61024f610433366004611b37565b6110b4565b34801561044457600080fd5b50610458610453366004611c37565b6110c0565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101a2565b3480156104a857600080fd5b5060005467ffffffffffffffff16610223565b3480156104c757600080fd5b5061024f6104d6366004611c99565b611131565b3480156104e757600080fd5b506104f06116aa565b6040516101a293929190611d2d565b60008060005468010000000000000000900460ff16600281111561052557610525611ac7565b1461055c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460009161056c91611d87565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610656576000600182815481106105a6576105a6611d9e565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156105f75750610581565b600281015460009061063b906fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000006116e8565b90508381101561064f578093508260010194505b5050610581565b5060006001838154811061066c5761066c611d9e565b600091825260208220600390910201805490925063ffffffff908116919082146106d657600182815481106106a3576106a3611d9e565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610702565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b905062049d4061071c67ffffffffffffffff831642611d87565b610738836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661074c9190611dcd565b11610783576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610825906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61082f9190611e14565b67ffffffffffffffff1615801561085657506fffffffffffffffffffffffffffffffff8414155b156108645760029550610869565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156108ae576108ae611ac7565b0217905560028111156108c3576108c3611ac7565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b610900828260006109b9565b5050565b606061092f7f000000000000000000000000000000000000000000000000000000000000000061179d565b6109587f000000000000000000000000000000000000000000000000000000000000000061179d565b6109817f000000000000000000000000000000000000000000000000000000000000000061179d565b60405160200161099393929190611e3b565b604051602081830303815290604052905090565b60606109b46020806118da565b905090565b6000805468010000000000000000900460ff1660028111156109dd576109dd611ac7565b14610a14576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610a20575080155b15610a57576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060018481548110610a6c57610a6c611d9e565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002909201546fffffffffffffffffffffffffffffffff80821660608401527001000000000000000000000000000000009091041660808201528154909250819086908110610b0757610b07611d9e565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610b71906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610c30826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610c72576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610cd2576001836000015163ffffffff1681548110610ca157610ca1611d9e565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610d0b846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d1f9190611dcd565b610d299190611d87565b905062049d4067ffffffffffffffff82161115610d72576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610d93888660009182526020526040902090565b60008181526002602052604090205490915060ff1615610ddf576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a82166080860190815286548088018855968a52945160039096027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78401555190518416700100000000000000000000000000000000029316929092177fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff81526020810192909252600191908101610ff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151938101939093556060820151608090920151811670010000000000000000000000000000000002911617600290910155565b610900828260016109b9565b600181815481106110d057600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff16600281111561115557611155611ac7565b1461118c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600187815481106111a1576111a1611d9e565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506112007f00000000000000000000000000000000000000000000000000000000000000006001611dcd565b61129c826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff16146112dd576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806112fb836fffffffffffffffffffffffffffffffff16611971565b67ffffffffffffffff1660000361135b577f0000000000000000000000000000000000000000000000000000000000000000915060018b8154811061134257611342611d9e565b906000526020600020906003020160010154905061157b565b6000808b156113dd5760018e8154811061137757611377611d9e565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16915060018e815481106113ba576113ba611d9e565b90600052602060002090600302016001015493508590508660010154925061146c565b600287015460018089015481549096506fffffffffffffffffffffffffffffffff9092169350908f90811061141457611414611d9e565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16905060018e8154811061145757611457611d9e565b90600052602060002090600302016001015492505b60016114aa6fffffffffffffffffffffffffffffffff83167f0000000000000000000000000000000000000000000000000000000000000000611a17565b6114b49190611eb1565b6fffffffffffffffffffffffffffffffff1661150b7f0000000000000000000000000000000000000000000000000000000000000000846fffffffffffffffffffffffffffffffff16611a1790919063ffffffff16565b6fffffffffffffffffffffffffffffffff161415806115415750838b8b604051611536929190611ee2565b604051809103902014155b15611578576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b6040517ff8e0cb96000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f8e0cb96906115f5908d908d908d908d90600401611f3b565b6020604051808303816000875af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116389190611f6d565b0361166f576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505082547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff1664010000000017909255505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560606116e16109a7565b9050909192565b600080611775847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b6060816000036117e057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561180a57806117f481611f86565b91506118039050600a83611fbe565b91506117e4565b60008167ffffffffffffffff81111561182557611825611fd2565b6040519080825280601f01601f19166020018201604052801561184f576020820181803683370190505b5090505b84156118d257611864600183611d87565b9150611871600a86612001565b61187c906030611dcd565b60f81b81838151811061189157611891611d9e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506118cb600a86611fbe565b9450611853565b949350505050565b6060600061191184367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003611dcd565b90508267ffffffffffffffff1667ffffffffffffffff81111561193657611936611fd2565b6040519080825280601f01601f191660200182016040528015611960576020820181803683370190505b509150828160208401375092915050565b6000806119fe837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b600080611aa4847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169050808303600180821b0385821b179250505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611b31577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215611b4a57600080fd5b50508035926020909101359150565b60005b83811015611b74578181015183820152602001611b5c565b83811115611b83576000848401525b50505050565b60008151808452611ba1816020860160208601611b59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be66020830184611b89565b9392505050565b80358015158114611bfd57600080fd5b919050565b600080600060608486031215611c1757600080fd5b8335925060208401359150611c2e60408501611bed565b90509250925092565b600060208284031215611c4957600080fd5b5035919050565b60008083601f840112611c6257600080fd5b50813567ffffffffffffffff811115611c7a57600080fd5b602083019150836020828501011115611c9257600080fd5b9250929050565b600080600080600080600060a0888a031215611cb457600080fd5b8735965060208801359550611ccb60408901611bed565b9450606088013567ffffffffffffffff80821115611ce857600080fd5b611cf48b838c01611c50565b909650945060808a0135915080821115611d0d57600080fd5b50611d1a8a828b01611c50565b989b979a50959850939692959293505050565b60ff84168152826020820152606060408201526000611d4f6060830184611b89565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611d9957611d99611d58565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115611de057611de0611d58565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611e2f57611e2f611de5565b92169190910692915050565b60008451611e4d818460208901611b59565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611e89816001850160208a01611b59565b60019201918201528351611ea4816002840160208801611b59565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015611eda57611eda611d58565b039392505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000611f4f604083018688611ef2565b8281036020840152611f62818587611ef2565b979650505050505050565b600060208284031215611f7f57600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fb757611fb7611d58565b5060010190565b600082611fcd57611fcd611de5565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261201057612010611de5
565b50069056fea164736f6c634300080f000a"
,
}
}
// FaultDisputeGameABI is the input ABI used to generate the binding from.
// FaultDisputeGameABI is the input ABI used to generate the binding from.
...
@@ -716,44 +716,44 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) Version() (string, error
...
@@ -716,44 +716,44 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) Version() (string, error
// Attack is a paid mutator transaction binding the contract method 0xc55cd0c7.
// Attack is a paid mutator transaction binding the contract method 0xc55cd0c7.
//
//
// Solidity: function attack(uint256 _parentIndex, bytes32 _
pivot
) payable returns()
// Solidity: function attack(uint256 _parentIndex, bytes32 _
claim
) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactor
)
Attack
(
opts
*
bind
.
TransactOpts
,
_parentIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactor
)
Attack
(
opts
*
bind
.
TransactOpts
,
_parentIndex
*
big
.
Int
,
_
claim
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
contract
.
Transact
(
opts
,
"attack"
,
_parentIndex
,
_
pivot
)
return
_FaultDisputeGame
.
contract
.
Transact
(
opts
,
"attack"
,
_parentIndex
,
_
claim
)
}
}
// Attack is a paid mutator transaction binding the contract method 0xc55cd0c7.
// Attack is a paid mutator transaction binding the contract method 0xc55cd0c7.
//
//
// Solidity: function attack(uint256 _parentIndex, bytes32 _
pivot
) payable returns()
// Solidity: function attack(uint256 _parentIndex, bytes32 _
claim
) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
Attack
(
_parentIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
Attack
(
_parentIndex
*
big
.
Int
,
_
claim
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
Attack
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
pivot
)
return
_FaultDisputeGame
.
Contract
.
Attack
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
claim
)
}
}
// Attack is a paid mutator transaction binding the contract method 0xc55cd0c7.
// Attack is a paid mutator transaction binding the contract method 0xc55cd0c7.
//
//
// Solidity: function attack(uint256 _parentIndex, bytes32 _
pivot
) payable returns()
// Solidity: function attack(uint256 _parentIndex, bytes32 _
claim
) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactorSession
)
Attack
(
_parentIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactorSession
)
Attack
(
_parentIndex
*
big
.
Int
,
_
claim
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
Attack
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
pivot
)
return
_FaultDisputeGame
.
Contract
.
Attack
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
claim
)
}
}
// Defend is a paid mutator transaction binding the contract method 0x35fef567.
// Defend is a paid mutator transaction binding the contract method 0x35fef567.
//
//
// Solidity: function defend(uint256 _parentIndex, bytes32 _
pivot
) payable returns()
// Solidity: function defend(uint256 _parentIndex, bytes32 _
claim
) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactor
)
Defend
(
opts
*
bind
.
TransactOpts
,
_parentIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactor
)
Defend
(
opts
*
bind
.
TransactOpts
,
_parentIndex
*
big
.
Int
,
_
claim
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
contract
.
Transact
(
opts
,
"defend"
,
_parentIndex
,
_
pivot
)
return
_FaultDisputeGame
.
contract
.
Transact
(
opts
,
"defend"
,
_parentIndex
,
_
claim
)
}
}
// Defend is a paid mutator transaction binding the contract method 0x35fef567.
// Defend is a paid mutator transaction binding the contract method 0x35fef567.
//
//
// Solidity: function defend(uint256 _parentIndex, bytes32 _
pivot
) payable returns()
// Solidity: function defend(uint256 _parentIndex, bytes32 _
claim
) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
Defend
(
_parentIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
Defend
(
_parentIndex
*
big
.
Int
,
_
claim
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
Defend
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
pivot
)
return
_FaultDisputeGame
.
Contract
.
Defend
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
claim
)
}
}
// Defend is a paid mutator transaction binding the contract method 0x35fef567.
// Defend is a paid mutator transaction binding the contract method 0x35fef567.
//
//
// Solidity: function defend(uint256 _parentIndex, bytes32 _
pivot
) payable returns()
// Solidity: function defend(uint256 _parentIndex, bytes32 _
claim
) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactorSession
)
Defend
(
_parentIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactorSession
)
Defend
(
_parentIndex
*
big
.
Int
,
_
claim
[
32
]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
Defend
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
pivot
)
return
_FaultDisputeGame
.
Contract
.
Defend
(
&
_FaultDisputeGame
.
TransactOpts
,
_parentIndex
,
_
claim
)
}
}
// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c.
// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c.
...
@@ -779,23 +779,23 @@ func (_FaultDisputeGame *FaultDisputeGameTransactorSession) Initialize() (*types
...
@@ -779,23 +779,23 @@ func (_FaultDisputeGame *FaultDisputeGameTransactorSession) Initialize() (*types
// Move is a paid mutator transaction binding the contract method 0x632247ea.
// Move is a paid mutator transaction binding the contract method 0x632247ea.
//
//
// Solidity: function move(uint256 _challengeIndex, bytes32 _
pivot
, bool _isAttack) payable returns()
// Solidity: function move(uint256 _challengeIndex, bytes32 _
claim
, bool _isAttack) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactor
)
Move
(
opts
*
bind
.
TransactOpts
,
_challengeIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
,
_isAttack
bool
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactor
)
Move
(
opts
*
bind
.
TransactOpts
,
_challengeIndex
*
big
.
Int
,
_
claim
[
32
]
byte
,
_isAttack
bool
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
contract
.
Transact
(
opts
,
"move"
,
_challengeIndex
,
_
pivot
,
_isAttack
)
return
_FaultDisputeGame
.
contract
.
Transact
(
opts
,
"move"
,
_challengeIndex
,
_
claim
,
_isAttack
)
}
}
// Move is a paid mutator transaction binding the contract method 0x632247ea.
// Move is a paid mutator transaction binding the contract method 0x632247ea.
//
//
// Solidity: function move(uint256 _challengeIndex, bytes32 _
pivot
, bool _isAttack) payable returns()
// Solidity: function move(uint256 _challengeIndex, bytes32 _
claim
, bool _isAttack) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
Move
(
_challengeIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
,
_isAttack
bool
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
Move
(
_challengeIndex
*
big
.
Int
,
_
claim
[
32
]
byte
,
_isAttack
bool
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
Move
(
&
_FaultDisputeGame
.
TransactOpts
,
_challengeIndex
,
_
pivot
,
_isAttack
)
return
_FaultDisputeGame
.
Contract
.
Move
(
&
_FaultDisputeGame
.
TransactOpts
,
_challengeIndex
,
_
claim
,
_isAttack
)
}
}
// Move is a paid mutator transaction binding the contract method 0x632247ea.
// Move is a paid mutator transaction binding the contract method 0x632247ea.
//
//
// Solidity: function move(uint256 _challengeIndex, bytes32 _
pivot
, bool _isAttack) payable returns()
// Solidity: function move(uint256 _challengeIndex, bytes32 _
claim
, bool _isAttack) payable returns()
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactorSession
)
Move
(
_challengeIndex
*
big
.
Int
,
_
pivot
[
32
]
byte
,
_isAttack
bool
)
(
*
types
.
Transaction
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameTransactorSession
)
Move
(
_challengeIndex
*
big
.
Int
,
_
claim
[
32
]
byte
,
_isAttack
bool
)
(
*
types
.
Transaction
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
Move
(
&
_FaultDisputeGame
.
TransactOpts
,
_challengeIndex
,
_
pivot
,
_isAttack
)
return
_FaultDisputeGame
.
Contract
.
Move
(
&
_FaultDisputeGame
.
TransactOpts
,
_challengeIndex
,
_
claim
,
_isAttack
)
}
}
// Resolve is a paid mutator transaction binding the contract method 0x2810e1d6.
// Resolve is a paid mutator transaction binding the contract method 0x2810e1d6.
...
@@ -910,30 +910,30 @@ func (it *FaultDisputeGameMoveIterator) Close() error {
...
@@ -910,30 +910,30 @@ func (it *FaultDisputeGameMoveIterator) Close() error {
// FaultDisputeGameMove represents a Move event raised by the FaultDisputeGame contract.
// FaultDisputeGameMove represents a Move event raised by the FaultDisputeGame contract.
type
FaultDisputeGameMove
struct
{
type
FaultDisputeGameMove
struct
{
ParentIndex
*
big
.
Int
ParentIndex
*
big
.
Int
Pivot
[
32
]
byte
Claim
[
32
]
byte
Claimant
common
.
Address
Claimant
common
.
Address
Raw
types
.
Log
// Blockchain specific contextual infos
Raw
types
.
Log
// Blockchain specific contextual infos
}
}
// FilterMove is a free log retrieval operation binding the contract event 0x9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be.
// FilterMove is a free log retrieval operation binding the contract event 0x9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be.
//
//
// Solidity: event Move(uint256 indexed parentIndex, bytes32 indexed
pivot
, address indexed claimant)
// Solidity: event Move(uint256 indexed parentIndex, bytes32 indexed
claim
, address indexed claimant)
func
(
_FaultDisputeGame
*
FaultDisputeGameFilterer
)
FilterMove
(
opts
*
bind
.
FilterOpts
,
parentIndex
[]
*
big
.
Int
,
pivot
[][
32
]
byte
,
claimant
[]
common
.
Address
)
(
*
FaultDisputeGameMoveIterator
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameFilterer
)
FilterMove
(
opts
*
bind
.
FilterOpts
,
parentIndex
[]
*
big
.
Int
,
claim
[][
32
]
byte
,
claimant
[]
common
.
Address
)
(
*
FaultDisputeGameMoveIterator
,
error
)
{
var
parentIndexRule
[]
interface
{}
var
parentIndexRule
[]
interface
{}
for
_
,
parentIndexItem
:=
range
parentIndex
{
for
_
,
parentIndexItem
:=
range
parentIndex
{
parentIndexRule
=
append
(
parentIndexRule
,
parentIndexItem
)
parentIndexRule
=
append
(
parentIndexRule
,
parentIndexItem
)
}
}
var
pivot
Rule
[]
interface
{}
var
claim
Rule
[]
interface
{}
for
_
,
pivotItem
:=
range
pivot
{
for
_
,
claimItem
:=
range
claim
{
pivotRule
=
append
(
pivotRule
,
pivot
Item
)
claimRule
=
append
(
claimRule
,
claim
Item
)
}
}
var
claimantRule
[]
interface
{}
var
claimantRule
[]
interface
{}
for
_
,
claimantItem
:=
range
claimant
{
for
_
,
claimantItem
:=
range
claimant
{
claimantRule
=
append
(
claimantRule
,
claimantItem
)
claimantRule
=
append
(
claimantRule
,
claimantItem
)
}
}
logs
,
sub
,
err
:=
_FaultDisputeGame
.
contract
.
FilterLogs
(
opts
,
"Move"
,
parentIndexRule
,
pivot
Rule
,
claimantRule
)
logs
,
sub
,
err
:=
_FaultDisputeGame
.
contract
.
FilterLogs
(
opts
,
"Move"
,
parentIndexRule
,
claim
Rule
,
claimantRule
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -942,23 +942,23 @@ func (_FaultDisputeGame *FaultDisputeGameFilterer) FilterMove(opts *bind.FilterO
...
@@ -942,23 +942,23 @@ func (_FaultDisputeGame *FaultDisputeGameFilterer) FilterMove(opts *bind.FilterO
// WatchMove is a free log subscription operation binding the contract event 0x9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be.
// WatchMove is a free log subscription operation binding the contract event 0x9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be.
//
//
// Solidity: event Move(uint256 indexed parentIndex, bytes32 indexed
pivot
, address indexed claimant)
// Solidity: event Move(uint256 indexed parentIndex, bytes32 indexed
claim
, address indexed claimant)
func
(
_FaultDisputeGame
*
FaultDisputeGameFilterer
)
WatchMove
(
opts
*
bind
.
WatchOpts
,
sink
chan
<-
*
FaultDisputeGameMove
,
parentIndex
[]
*
big
.
Int
,
pivot
[][
32
]
byte
,
claimant
[]
common
.
Address
)
(
event
.
Subscription
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameFilterer
)
WatchMove
(
opts
*
bind
.
WatchOpts
,
sink
chan
<-
*
FaultDisputeGameMove
,
parentIndex
[]
*
big
.
Int
,
claim
[][
32
]
byte
,
claimant
[]
common
.
Address
)
(
event
.
Subscription
,
error
)
{
var
parentIndexRule
[]
interface
{}
var
parentIndexRule
[]
interface
{}
for
_
,
parentIndexItem
:=
range
parentIndex
{
for
_
,
parentIndexItem
:=
range
parentIndex
{
parentIndexRule
=
append
(
parentIndexRule
,
parentIndexItem
)
parentIndexRule
=
append
(
parentIndexRule
,
parentIndexItem
)
}
}
var
pivot
Rule
[]
interface
{}
var
claim
Rule
[]
interface
{}
for
_
,
pivotItem
:=
range
pivot
{
for
_
,
claimItem
:=
range
claim
{
pivotRule
=
append
(
pivotRule
,
pivot
Item
)
claimRule
=
append
(
claimRule
,
claim
Item
)
}
}
var
claimantRule
[]
interface
{}
var
claimantRule
[]
interface
{}
for
_
,
claimantItem
:=
range
claimant
{
for
_
,
claimantItem
:=
range
claimant
{
claimantRule
=
append
(
claimantRule
,
claimantItem
)
claimantRule
=
append
(
claimantRule
,
claimantItem
)
}
}
logs
,
sub
,
err
:=
_FaultDisputeGame
.
contract
.
WatchLogs
(
opts
,
"Move"
,
parentIndexRule
,
pivot
Rule
,
claimantRule
)
logs
,
sub
,
err
:=
_FaultDisputeGame
.
contract
.
WatchLogs
(
opts
,
"Move"
,
parentIndexRule
,
claim
Rule
,
claimantRule
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -992,7 +992,7 @@ func (_FaultDisputeGame *FaultDisputeGameFilterer) WatchMove(opts *bind.WatchOpt
...
@@ -992,7 +992,7 @@ func (_FaultDisputeGame *FaultDisputeGameFilterer) WatchMove(opts *bind.WatchOpt
// ParseMove is a log parse operation binding the contract event 0x9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be.
// ParseMove is a log parse operation binding the contract event 0x9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be.
//
//
// Solidity: event Move(uint256 indexed parentIndex, bytes32 indexed
pivot
, address indexed claimant)
// Solidity: event Move(uint256 indexed parentIndex, bytes32 indexed
claim
, address indexed claimant)
func
(
_FaultDisputeGame
*
FaultDisputeGameFilterer
)
ParseMove
(
log
types
.
Log
)
(
*
FaultDisputeGameMove
,
error
)
{
func
(
_FaultDisputeGame
*
FaultDisputeGameFilterer
)
ParseMove
(
log
types
.
Log
)
(
*
FaultDisputeGameMove
,
error
)
{
event
:=
new
(
FaultDisputeGameMove
)
event
:=
new
(
FaultDisputeGameMove
)
if
err
:=
_FaultDisputeGame
.
contract
.
UnpackLog
(
event
,
"Move"
,
log
);
err
!=
nil
{
if
err
:=
_FaultDisputeGame
.
contract
.
UnpackLog
(
event
,
"Move"
,
log
);
err
!=
nil
{
...
...
op-bindings/bindings/faultdisputegame_more.go
View file @
e9c22a78
...
@@ -13,7 +13,7 @@ const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contr
...
@@ -13,7 +13,7 @@ const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contr
var
FaultDisputeGameStorageLayout
=
new
(
solc
.
StorageLayout
)
var
FaultDisputeGameStorageLayout
=
new
(
solc
.
StorageLayout
)
var
FaultDisputeGameDeployedBin
=
"0x60806040526004361061016a5760003560e01c80638129fc1c116100cb578063bcef3b551161007f578063cf09e0d011610059578063cf09e0d01461049c578063e4c290c4146104bb578063fa24f743146104db57600080fd5b8063bcef3b55146103e8578063c55cd0c714610425578063c6f0308c1461043857600080fd5b80638b85902b116100b05780638b85902b146103585780639293129814610398578063bbdc02db146103cc57600080fd5b80638129fc1c1461032e5780638980e0cc1461034357600080fd5b8063363cc4271161012257806354fd4d501161010757806354fd4d50146102e4578063609d333414610306578063632247ea1461031b57600080fd5b8063363cc427146102515780634778efe8146102b057600080fd5b80632810e1d6116101535780632810e1d6146101ed5780633218b99d1461020257806335fef5671461023c57600080fd5b8063200d2ed21461016f578063266198f9146101ab575b600080fd5b34801561017b57600080fd5b506000546101959068010000000000000000900460ff1681565b6040516101a29190611af
8565b60405180910390f35b3480156101b757600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a2565b3480156101f957600080fd5b506101956104ff565b34801561020e57600080fd5b506000546102239067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101a2565b61024f61024a366004611b39565b6108f6565b005b34801561025d57600080fd5b5060005461028b906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b3480156102bc57600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f057600080fd5b506102f9610906565b6040516101a29190611bd5565b34801561031257600080fd5b506102f96109a9565b61024f610329366004611c04565b6109bb565b34801561033a57600080fd5b5061024f610f75565b34801561034f57600080fd5b506001546101df565b34801561036457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003602001356101df565b3480156103a457600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b50604051600081526020016101a2565b3480156103f457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356101df565b61024f610433366004611b39565b6110b6565b34801561044457600080fd5b50610458610453366004611c39565b6110c2565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101a2565b3480156104a857600080fd5b5060005467ffffffffffffffff16610223565b3480156104c757600080fd5b5061024f6104d6366004611c9b565b611133565b3480156104e757600080fd5b506104f06116ac565b6040516101a293929190611d2f565b60008060005468010000000000000000900460ff16600281111561052557610525611ac9565b1461055c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460009161056c91611d89565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610656576000600182815481106105a6576105a6611da0565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156105f75750610581565b600281015460009061063b906fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000006116ea565b90508381101561064f578093508260010194505b5050610581565b5060006001838154811061066c5761066c611da0565b600091825260208220600390910201805490925063ffffffff908116919082146106d657600182815481106106a3576106a3611da0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610702565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b905062049d4061071c67ffffffffffffffff831642611d89565b610738836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661074c9190611dcf565b11610783576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610825906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61082f9190611e16565b67ffffffffffffffff1615801561085657506fffffffffffffffffffffffffffffffff8414155b156108645760029550610869565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156108ae576108ae611ac9565b02179055508560028111156108c5576108c5611ac9565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b610902828260006109bb565b5050565b60606109317f000000000000000000000000000000000000000000000000000000000000000061179f565b61095a7f000000000000000000000000000000000000000000000000000000000000000061179f565b6109837f000000000000000000000000000000000000000000000000000000000000000061179f565b60405160200161099593929190611e3d565b604051602081830303815290604052905090565b60606109b66020806118dc565b905090565b6000805468010000000000000000900460ff1660028111156109df576109df611ac9565b14610a16576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610a22575080155b15610a59576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060018481548110610a6e57610a6e611da0565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002909201546fffffffffffffffffffffffffffffffff80821660608401527001000000000000000000000000000000009091041660808201528154909250819086908110610b0957610b09611da0565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610b73906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610c32826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610c74576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610cd4576001836000015163ffffffff1681548110610ca357610ca3611da0565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610d0d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d219190611dcf565b610d2b9190611d89565b905062049d4067ffffffffffffffff82161115610d74576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610d95888660009182526020526040902090565b60008181526002602052604090205490915060ff1615610de1576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a82166080860190815286548088018855968a52945160039096027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78401555190518416700100000000000000000000000000000000029316929092177fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff81526020810192909252600191908101610ffa7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151938101939093556060820151608090920151811670010000000000000000000000000000000002911617600290910155565b610902828260016109bb565b600181815481106110d257600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff16600281111561115757611157611ac9565b1461118e576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600187815481106111a3576111a3611da0565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506112027f00000000000000000000000000000000000000000000000000000000000000006001611dcf565b61129e826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff16146112df576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806112fd836fffffffffffffffffffffffffffffffff16611973565b67ffffffffffffffff1660000361135d577f0000000000000000000000000000000000000000000000000000000000000000915060018b8154811061134457611344611da0565b906000526020600020906003020160010154905061157d565b6000808b156113df5760018e8154811061137957611379611da0565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16915060018e815481106113bc576113bc611da0565b90600052602060002090600302016001015493508590508660010154925061146e565b600287015460018089015481549096506fffffffffffffffffffffffffffffffff9092169350908f90811061141657611416611da0565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16905060018e8154811061145957611459611da0565b90600052602060002090600302016001015492505b60016114ac6fffffffffffffffffffffffffffffffff83167f0000000000000000000000000000000000000000000000000000000000000000611a19565b6114b69190611eb3565b6fffffffffffffffffffffffffffffffff1661150d7f0000000000000000000000000000000000000000000000000000000000000000846fffffffffffffffffffffffffffffffff16611a1990919063ffffffff16565b6fffffffffffffffffffffffffffffffff161415806115435750838b8b604051611538929190611ee4565b604051809103902014155b1561157a576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b6040517ff8e0cb96000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f8e0cb96906115f7908d908d908d908d90600401611f3d565b6020604051808303816000875af1158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190611f6f565b03611671576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505082547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff1664010000000017909255505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560606116e36109a9565b9050909192565b600080611777847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b6060816000036117e257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561180c57806117f681611f88565b91506118059050600a83611fc0565b91506117e6565b60008167ffffffffffffffff81111561182757611827611fd4565b6040519080825280601f01601f191660200182016040528015611851576020820181803683370190505b5090505b84156118d457611866600183611d89565b9150611873600a86612003565b61187e906030611dcf565b60f81b81838151811061189357611893611da0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506118cd600a86611fc0565b9450611855565b949350505050565b6060600061191384367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003611dcf565b90508267ffffffffffffffff1667ffffffffffffffff81111561193857611938611fd4565b6040519080825280601f01601f191660200182016040528015611962576020820181803683370190505b509150828160208401375092915050565b600080611a00837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b600080611aa6847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169050808303600180821b0385821b179250505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611b33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215611b4c57600080fd5b50508035926020909101359150565b60005b83811015611b76578181015183820152602001611b5e565b83811115611b85576000848401525b50505050565b60008151808452611ba3816020860160208601611b5b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be86020830184611b8b565b9392505050565b80358015158114611bff57600080fd5b919050565b600080600060608486031215611c1957600080fd5b8335925060208401359150611c3060408501611bef565b90509250925092565b600060208284031215611c4b57600080fd5b5035919050565b60008083601f840112611c6457600080fd5b50813567ffffffffffffffff811115611c7c57600080fd5b602083019150836020828501011115611c9457600080fd5b9250929050565b600080600080600080600060a0888a031215611cb657600080fd5b8735965060208801359550611ccd60408901611bef565b9450606088013567ffffffffffffffff80821115611cea57600080fd5b611cf68b838c01611c52565b909650945060808a0135915080821115611d0f57600080fd5b50611d1c8a828b01611c52565b989b979a50959850939692959293505050565b60ff84168152826020820152606060408201526000611d516060830184611b8b565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611d9b57611d9b611d5a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115611de257611de2611d5a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611e3157611e31611de7565b92169190910692915050565b60008451611e4f818460208901611b5b565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611e8b816001850160208a01611b5b565b60019201918201528351611ea6816002840160208801611b5b565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015611edc57611edc611d5a565b039392505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000611f51604083018688611ef4565b8281036020840152611f64818587611ef4565b979650505050505050565b600060208284031215611f8157600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fb957611fb9611d5a565b5060010190565b600082611fcf57611fcf611de7565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261201257612012611de7
565b50069056fea164736f6c634300080f000a"
var
FaultDisputeGameDeployedBin
=
"0x60806040526004361061016a5760003560e01c80638129fc1c116100cb578063bcef3b551161007f578063cf09e0d011610059578063cf09e0d01461049c578063e4c290c4146104bb578063fa24f743146104db57600080fd5b8063bcef3b55146103e8578063c55cd0c714610425578063c6f0308c1461043857600080fd5b80638b85902b116100b05780638b85902b146103585780639293129814610398578063bbdc02db146103cc57600080fd5b80638129fc1c1461032e5780638980e0cc1461034357600080fd5b8063363cc4271161012257806354fd4d501161010757806354fd4d50146102e4578063609d333414610306578063632247ea1461031b57600080fd5b8063363cc427146102515780634778efe8146102b057600080fd5b80632810e1d6116101535780632810e1d6146101ed5780633218b99d1461020257806335fef5671461023c57600080fd5b8063200d2ed21461016f578063266198f9146101ab575b600080fd5b34801561017b57600080fd5b506000546101959068010000000000000000900460ff1681565b6040516101a29190611af
6565b60405180910390f35b3480156101b757600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a2565b3480156101f957600080fd5b506101956104ff565b34801561020e57600080fd5b506000546102239067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101a2565b61024f61024a366004611b37565b6108f4565b005b34801561025d57600080fd5b5060005461028b906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b3480156102bc57600080fd5b506101df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f057600080fd5b506102f9610904565b6040516101a29190611bd3565b34801561031257600080fd5b506102f96109a7565b61024f610329366004611c02565b6109b9565b34801561033a57600080fd5b5061024f610f73565b34801561034f57600080fd5b506001546101df565b34801561036457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003602001356101df565b3480156103a457600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d857600080fd5b50604051600081526020016101a2565b3480156103f457600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356101df565b61024f610433366004611b37565b6110b4565b34801561044457600080fd5b50610458610453366004611c37565b6110c0565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101a2565b3480156104a857600080fd5b5060005467ffffffffffffffff16610223565b3480156104c757600080fd5b5061024f6104d6366004611c99565b611131565b3480156104e757600080fd5b506104f06116aa565b6040516101a293929190611d2d565b60008060005468010000000000000000900460ff16600281111561052557610525611ac7565b1461055c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460009161056c91611d87565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610656576000600182815481106105a6576105a6611d9e565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156105f75750610581565b600281015460009061063b906fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000006116e8565b90508381101561064f578093508260010194505b5050610581565b5060006001838154811061066c5761066c611d9e565b600091825260208220600390910201805490925063ffffffff908116919082146106d657600182815481106106a3576106a3611d9e565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610702565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b905062049d4061071c67ffffffffffffffff831642611d87565b610738836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661074c9190611dcd565b11610783576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610825906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61082f9190611e14565b67ffffffffffffffff1615801561085657506fffffffffffffffffffffffffffffffff8414155b156108645760029550610869565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156108ae576108ae611ac7565b0217905560028111156108c3576108c3611ac7565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b610900828260006109b9565b5050565b606061092f7f000000000000000000000000000000000000000000000000000000000000000061179d565b6109587f000000000000000000000000000000000000000000000000000000000000000061179d565b6109817f000000000000000000000000000000000000000000000000000000000000000061179d565b60405160200161099393929190611e3b565b604051602081830303815290604052905090565b60606109b46020806118da565b905090565b6000805468010000000000000000900460ff1660028111156109dd576109dd611ac7565b14610a14576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610a20575080155b15610a57576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060018481548110610a6c57610a6c611d9e565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002909201546fffffffffffffffffffffffffffffffff80821660608401527001000000000000000000000000000000009091041660808201528154909250819086908110610b0757610b07611d9e565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610b71906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610c30826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610c72576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610cd2576001836000015163ffffffff1681548110610ca157610ca1611d9e565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610d0b846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d1f9190611dcd565b610d299190611d87565b905062049d4067ffffffffffffffff82161115610d72576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610d93888660009182526020526040902090565b60008181526002602052604090205490915060ff1615610ddf576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a82166080860190815286548088018855968a52945160039096027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78401555190518416700100000000000000000000000000000000029316929092177fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf8909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff81526020810192909252600191908101610ff87ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151938101939093556060820151608090920151811670010000000000000000000000000000000002911617600290910155565b610900828260016109b9565b600181815481106110d057600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff16600281111561115557611155611ac7565b1461118c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600187815481106111a1576111a1611d9e565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506112007f00000000000000000000000000000000000000000000000000000000000000006001611dcd565b61129c826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff16146112dd576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806112fb836fffffffffffffffffffffffffffffffff16611971565b67ffffffffffffffff1660000361135b577f0000000000000000000000000000000000000000000000000000000000000000915060018b8154811061134257611342611d9e565b906000526020600020906003020160010154905061157b565b6000808b156113dd5760018e8154811061137757611377611d9e565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16915060018e815481106113ba576113ba611d9e565b90600052602060002090600302016001015493508590508660010154925061146c565b600287015460018089015481549096506fffffffffffffffffffffffffffffffff9092169350908f90811061141457611414611d9e565b906000526020600020906003020160020160009054906101000a90046fffffffffffffffffffffffffffffffff16905060018e8154811061145757611457611d9e565b90600052602060002090600302016001015492505b60016114aa6fffffffffffffffffffffffffffffffff83167f0000000000000000000000000000000000000000000000000000000000000000611a17565b6114b49190611eb1565b6fffffffffffffffffffffffffffffffff1661150b7f0000000000000000000000000000000000000000000000000000000000000000846fffffffffffffffffffffffffffffffff16611a1790919063ffffffff16565b6fffffffffffffffffffffffffffffffff161415806115415750838b8b604051611536929190611ee2565b604051809103902014155b15611578576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b6040517ff8e0cb96000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f8e0cb96906115f5908d908d908d908d90600401611f3b565b6020604051808303816000875af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116389190611f6d565b0361166f576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505082547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff1664010000000017909255505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560606116e16109a7565b9050909192565b600080611775847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b6060816000036117e057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561180a57806117f481611f86565b91506118039050600a83611fbe565b91506117e4565b60008167ffffffffffffffff81111561182557611825611fd2565b6040519080825280601f01601f19166020018201604052801561184f576020820181803683370190505b5090505b84156118d257611864600183611d87565b9150611871600a86612001565b61187c906030611dcd565b60f81b81838151811061189157611891611d9e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506118cb600a86611fbe565b9450611853565b949350505050565b6060600061191184367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003611dcd565b90508267ffffffffffffffff1667ffffffffffffffff81111561193657611936611fd2565b6040519080825280601f01601f191660200182016040528015611960576020820181803683370190505b509150828160208401375092915050565b6000806119fe837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b600080611aa4847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169050808303600180821b0385821b179250505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611b31577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215611b4a57600080fd5b50508035926020909101359150565b60005b83811015611b74578181015183820152602001611b5c565b83811115611b83576000848401525b50505050565b60008151808452611ba1816020860160208601611b59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be66020830184611b89565b9392505050565b80358015158114611bfd57600080fd5b919050565b600080600060608486031215611c1757600080fd5b8335925060208401359150611c2e60408501611bed565b90509250925092565b600060208284031215611c4957600080fd5b5035919050565b60008083601f840112611c6257600080fd5b50813567ffffffffffffffff811115611c7a57600080fd5b602083019150836020828501011115611c9257600080fd5b9250929050565b600080600080600080600060a0888a031215611cb457600080fd5b8735965060208801359550611ccb60408901611bed565b9450606088013567ffffffffffffffff80821115611ce857600080fd5b611cf48b838c01611c50565b909650945060808a0135915080821115611d0d57600080fd5b50611d1a8a828b01611c50565b989b979a50959850939692959293505050565b60ff84168152826020820152606060408201526000611d4f6060830184611b89565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611d9957611d99611d58565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115611de057611de0611d58565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680611e2f57611e2f611de5565b92169190910692915050565b60008451611e4d818460208901611b59565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611e89816001850160208a01611b59565b60019201918201528351611ea4816002840160208801611b59565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015611eda57611eda611d58565b039392505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000611f4f604083018688611ef2565b8281036020840152611f62818587611ef2565b979650505050505050565b600060208284031215611f7f57600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fb757611fb7611d58565b5060010190565b600082611fcd57611fcd611de5565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261201057612010611de5
565b50069056fea164736f6c634300080f000a"
func
init
()
{
func
init
()
{
if
err
:=
json
.
Unmarshal
([]
byte
(
FaultDisputeGameStorageLayoutJSON
),
FaultDisputeGameStorageLayout
);
err
!=
nil
{
if
err
:=
json
.
Unmarshal
([]
byte
(
FaultDisputeGameStorageLayoutJSON
),
FaultDisputeGameStorageLayout
);
err
!=
nil
{
...
...
packages/contracts-bedrock/.gas-snapshot
View file @
e9c22a78
...
@@ -32,12 +32,12 @@ DisputeGameFactory_SetImplementation_Test:test_setImplementation_notOwner_revert
...
@@ -32,12 +32,12 @@ DisputeGameFactory_SetImplementation_Test:test_setImplementation_notOwner_revert
DisputeGameFactory_SetImplementation_Test:test_setImplementation_succeeds() (gas: 44243)
DisputeGameFactory_SetImplementation_Test:test_setImplementation_succeeds() (gas: 44243)
DisputeGameFactory_TransferOwnership_Test:test_transferOwnership_notOwner_reverts() (gas: 15950)
DisputeGameFactory_TransferOwnership_Test:test_transferOwnership_notOwner_reverts() (gas: 15950)
DisputeGameFactory_TransferOwnership_Test:test_transferOwnership_succeeds() (gas: 18642)
DisputeGameFactory_TransferOwnership_Test:test_transferOwnership_succeeds() (gas: 18642)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 5021
74
)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 5021
69
)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 5040
53
)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 5040
48
)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot:test_resolvesCorrectly_succeeds() (gas: 49151
7
)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot:test_resolvesCorrectly_succeeds() (gas: 49151
2
)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 50093
7
)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 50093
2
)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 50281
6
)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 50281
1
)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot:test_resolvesCorrectly_succeeds() (gas: 4902
80
)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot:test_resolvesCorrectly_succeeds() (gas: 4902
75
)
FaultDisputeGame_Test:test_extraData_succeeds() (gas: 17426)
FaultDisputeGame_Test:test_extraData_succeeds() (gas: 17426)
FaultDisputeGame_Test:test_gameData_succeeds() (gas: 17917)
FaultDisputeGame_Test:test_gameData_succeeds() (gas: 17917)
FaultDisputeGame_Test:test_gameStart_succeeds() (gas: 10315)
FaultDisputeGame_Test:test_gameStart_succeeds() (gas: 10315)
...
@@ -51,12 +51,12 @@ FaultDisputeGame_Test:test_move_gameDepthExceeded_reverts() (gas: 408100)
...
@@ -51,12 +51,12 @@ FaultDisputeGame_Test:test_move_gameDepthExceeded_reverts() (gas: 408100)
FaultDisputeGame_Test:test_move_gameNotInProgress_reverts() (gas: 10968)
FaultDisputeGame_Test:test_move_gameNotInProgress_reverts() (gas: 10968)
FaultDisputeGame_Test:test_move_nonExistentParent_reverts() (gas: 24655)
FaultDisputeGame_Test:test_move_nonExistentParent_reverts() (gas: 24655)
FaultDisputeGame_Test:test_move_simpleAttack_succeeds() (gas: 107344)
FaultDisputeGame_Test:test_move_simpleAttack_succeeds() (gas: 107344)
FaultDisputeGame_Test:test_resolve_challengeContested_succeeds() (gas: 22478
9
)
FaultDisputeGame_Test:test_resolve_challengeContested_succeeds() (gas: 22478
4
)
FaultDisputeGame_Test:test_resolve_notInProgress_reverts() (gas: 9657)
FaultDisputeGame_Test:test_resolve_notInProgress_reverts() (gas: 9657)
FaultDisputeGame_Test:test_resolve_rootContested_succeeds() (gas: 1097
54
)
FaultDisputeGame_Test:test_resolve_rootContested_succeeds() (gas: 1097
49
)
FaultDisputeGame_Test:test_resolve_rootUncontestedClockNotExpired_succeeds() (gas: 21422)
FaultDisputeGame_Test:test_resolve_rootUncontestedClockNotExpired_succeeds() (gas: 21422)
FaultDisputeGame_Test:test_resolve_rootUncontested_succeeds() (gas: 2725
6
)
FaultDisputeGame_Test:test_resolve_rootUncontested_succeeds() (gas: 2725
1
)
FaultDisputeGame_Test:test_resolve_teamDeathmatch_succeeds() (gas: 39544
7
)
FaultDisputeGame_Test:test_resolve_teamDeathmatch_succeeds() (gas: 39544
2
)
FaultDisputeGame_Test:test_rootClaim_succeeds() (gas: 8181)
FaultDisputeGame_Test:test_rootClaim_succeeds() (gas: 8181)
FeeVault_Test:test_constructor_succeeds() (gas: 18185)
FeeVault_Test:test_constructor_succeeds() (gas: 18185)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 352113)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 352113)
...
...
packages/contracts-bedrock/contracts/dispute/FaultDisputeGame.sol
View file @
e9c22a78
...
@@ -66,19 +66,9 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -66,19 +66,9 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
}
}
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//
External Logic
//
//
`IFaultDisputeGame` impl
//
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/// @inheritdoc IFaultDisputeGame
function attack(uint256 _parentIndex, Claim _pivot) external payable {
move(_parentIndex, _pivot, true);
}
/// @inheritdoc IFaultDisputeGame
function defend(uint256 _parentIndex, Claim _pivot) external payable {
move(_parentIndex, _pivot, false);
}
/// @inheritdoc IFaultDisputeGame
/// @inheritdoc IFaultDisputeGame
function step(
function step(
uint256 _stateIndex,
uint256 _stateIndex,
...
@@ -87,10 +77,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -87,10 +77,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
bytes calldata _stateData,
bytes calldata _stateData,
bytes calldata _proof
bytes calldata _proof
) external {
) external {
// Steps cannot be made unless the game is currently in progress.
// INVARIANT: Steps cannot be made unless the game is currently in progress.
if (status != GameStatus.IN_PROGRESS) {
if (status != GameStatus.IN_PROGRESS) revert GameNotInProgress();
revert GameNotInProgress();
}
// Get the parent. If it does not exist, the call will revert with OOB.
// Get the parent. If it does not exist, the call will revert with OOB.
ClaimData storage parent = claimData[_claimIndex];
ClaimData storage parent = claimData[_claimIndex];
...
@@ -100,10 +88,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -100,10 +88,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// Determine the position of the step.
// Determine the position of the step.
Position stepPos = parentPos.move(_isAttack);
Position stepPos = parentPos.move(_isAttack);
// Ensure that the step position is 1 deeper than the maximum game depth.
// INVARIANT: A step cannot be made unless the move position is 1 below the `MAX_GAME_DEPTH`
if (stepPos.depth() != MAX_GAME_DEPTH + 1) {
if (stepPos.depth() != MAX_GAME_DEPTH + 1) revert InvalidParent();
revert InvalidParent();
}
// Determine the expected pre & post states of the step.
// Determine the expected pre & post states of the step.
Claim preStateClaim;
Claim preStateClaim;
...
@@ -132,8 +118,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -132,8 +118,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
postStateClaim = claimData[_stateIndex].claim;
postStateClaim = claimData[_stateIndex].claim;
}
}
// Assert that the given prestate commits to the instruction at `gindex - 1` and
// INVARIANT: The prestate is always invalid if its gindex is not one less than that
// that the `_stateData` is the preimage for the prestate claim digest.
// of the post state.
// INVARIANT: The prestate is always invalid if the passed `_stateData` is not the
// preimage of the prestate claim hash.
if (
if (
Position.unwrap(preStatePos.rightIndex(MAX_GAME_DEPTH)) !=
Position.unwrap(preStatePos.rightIndex(MAX_GAME_DEPTH)) !=
Position.unwrap(postStatePos.rightIndex(MAX_GAME_DEPTH)) - 1 ||
Position.unwrap(postStatePos.rightIndex(MAX_GAME_DEPTH)) - 1 ||
...
@@ -143,40 +131,32 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -143,40 +131,32 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
}
}
}
}
//
Perform the VM step and check to see if it is valid.
//
INVARIANT: A VM step can never counter a parent claim unless it produces a poststate
if (VM.step(_stateData, _proof) == Claim.unwrap(postStateClaim)) {
// that is not equal to the claim at `_parentIndex` if the step is an attack,
revert ValidStep();
// or the claim at `_stateIndex` if the step is a defense.
}
if (VM.step(_stateData, _proof) == Claim.unwrap(postStateClaim)) revert ValidStep();
// Set the parent claim as countered. We do not need to append a new claim to the game;
// Set the parent claim as countered. We do not need to append a new claim to the game;
// instead, we can just set the existing parent as countered.
// instead, we can just set the existing parent as countered.
parent.countered = true;
parent.countered = true;
}
}
////////////////////////////////////////////////////////////////
// Internal Logic //
////////////////////////////////////////////////////////////////
/// @notice Internal move function, used by both `attack` and `defend`.
/// @notice Internal move function, used by both `attack` and `defend`.
/// @param _challengeIndex The index of the claim being moved against.
/// @param _challengeIndex The index of the claim being moved against.
/// @param _
pivot
The claim at the next logical position in the game.
/// @param _
claim
The claim at the next logical position in the game.
/// @param _isAttack Whether or not the move is an attack or defense.
/// @param _isAttack Whether or not the move is an attack or defense.
function move(
function move(
uint256 _challengeIndex,
uint256 _challengeIndex,
Claim _
pivot
,
Claim _
claim
,
bool _isAttack
bool _isAttack
) public payable {
) public payable {
// Moves cannot be made unless the game is currently in progress.
// INVARIANT: Moves cannot be made unless the game is currently in progress.
if (status != GameStatus.IN_PROGRESS) {
if (status != GameStatus.IN_PROGRESS) revert GameNotInProgress();
revert GameNotInProgress();
}
// The only move that can be made against a root claim is an attack. This is because the
// INVARIANT: A defense can never be made against the root claim. This is because the root
// root claim commits to the entire state; Therefore, the only valid defense is to do
// claim commits to the entire state. Therefore, the only valid defense is to
// nothing if it is agreed with.
// do nothing if it is agreed with.
if (_challengeIndex == 0 && !_isAttack) {
if (_challengeIndex == 0 && !_isAttack) revert CannotDefendRootClaim();
revert CannotDefendRootClaim();
}
// Get the parent. If it does not exist, the call will revert with OOB.
// Get the parent. If it does not exist, the call will revert with OOB.
ClaimData memory parent = claimData[_challengeIndex];
ClaimData memory parent = claimData[_challengeIndex];
...
@@ -189,12 +169,11 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -189,12 +169,11 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// or not the move is an attack or defense.
// or not the move is an attack or defense.
Position nextPosition = parent.position.move(_isAttack);
Position nextPosition = parent.position.move(_isAttack);
// At the leaf nodes of the game, the only option is to run a step to prove or disprove
// INVARIANT: A move can never surpass the `MAX_GAME_DEPTH`. The only option to counter a
// the above claim. At this depth, the parent claim commits to the state after a single
// claim at this depth is to perform a single instruction step on-chain via
// instruction step.
// the `step` function to prove that the state transition produces an unexpected
if (nextPosition.depth() > MAX_GAME_DEPTH) {
// post-state.
revert GameDepthExceeded();
if (nextPosition.depth() > MAX_GAME_DEPTH) revert GameDepthExceeded();
}
// Fetch the grandparent clock, if it exists.
// Fetch the grandparent clock, if it exists.
// The grandparent clock should always exist unless the parent is the root claim.
// The grandparent clock should always exist unless the parent is the root claim.
...
@@ -217,8 +196,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -217,8 +196,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
)
)
);
);
//
Enforce the clock time rules. If the new clock duration is greater than half of the game
//
INVARIANT: A move can never be made once its clock has exceeded `GAME_DURATION / 2`
//
duration, then the move is invalid and cannot be mad
e.
//
seconds of tim
e.
if (Duration.unwrap(nextDuration) > Duration.unwrap(GAME_DURATION) >> 1) {
if (Duration.unwrap(nextDuration) > Duration.unwrap(GAME_DURATION) >> 1) {
revert ClockTimeExceeded();
revert ClockTimeExceeded();
}
}
...
@@ -226,18 +205,17 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -226,18 +205,17 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// Construct the next clock with the new duration and the current block timestamp.
// Construct the next clock with the new duration and the current block timestamp.
Clock nextClock = LibClock.wrap(nextDuration, Timestamp.wrap(uint64(block.timestamp)));
Clock nextClock = LibClock.wrap(nextDuration, Timestamp.wrap(uint64(block.timestamp)));
// Do not allow for a duplicate claim to be made.
// INVARIANT: A claim may only exist at a given position once. Multiple claims may exist
ClaimHash claimHash = _pivot.hashClaimPos(nextPosition);
// at the same position, however they must have different values.
if (claims[claimHash]) {
ClaimHash claimHash = _claim.hashClaimPos(nextPosition);
revert ClaimAlreadyExists();
if (claims[claimHash]) revert ClaimAlreadyExists();
}
claims[claimHash] = true;
claims[claimHash] = true;
// Create the new claim.
// Create the new claim.
claimData.push(
claimData.push(
ClaimData({
ClaimData({
parentIndex: uint32(_challengeIndex),
parentIndex: uint32(_challengeIndex),
claim: _
pivot
,
claim: _
claim
,
position: nextPosition,
position: nextPosition,
clock: nextClock,
clock: nextClock,
countered: false
countered: false
...
@@ -245,17 +223,22 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -245,17 +223,22 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
);
);
// Emit the appropriate event for the attack or defense.
// Emit the appropriate event for the attack or defense.
emit Move(_challengeIndex, _
pivot
, msg.sender);
emit Move(_challengeIndex, _
claim
, msg.sender);
}
}
/// @inheritdoc IFaultDisputeGame
/// @inheritdoc IFaultDisputeGame
function
l2BlockNumber() public pure returns (uint256 l2BlockNumber_)
{
function
attack(uint256 _parentIndex, Claim _claim) external payable
{
l2BlockNumber_ = _getArgUint256(0x20
);
move(_parentIndex, _claim, true
);
}
}
/// @notice Returns the length of the `claimData` array.
/// @inheritdoc IFaultDisputeGame
function claimDataLen() external view returns (uint256 len_) {
function defend(uint256 _parentIndex, Claim _claim) external payable {
len_ = claimData.length;
move(_parentIndex, _claim, false);
}
/// @inheritdoc IFaultDisputeGame
function l2BlockNumber() public pure returns (uint256 l2BlockNumber_) {
l2BlockNumber_ = _getArgUint256(0x20);
}
}
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
...
@@ -274,10 +257,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -274,10 +257,8 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
/// @inheritdoc IDisputeGame
/// @inheritdoc IDisputeGame
function resolve() external returns (GameStatus status_) {
function resolve() external returns (GameStatus status_) {
// If the game is not in progress, it cannot be resolved.
// INVARIANT: Resolution cannot occur unless the game is currently in progress.
if (status != GameStatus.IN_PROGRESS) {
if (status != GameStatus.IN_PROGRESS) revert GameNotInProgress();
revert GameNotInProgress();
}
// Search for the left-most dangling non-bottom node
// Search for the left-most dangling non-bottom node
// The most recent claim is always a dangling, non-bottom node so we start with that
// The most recent claim is always a dangling, non-bottom node so we start with that
...
@@ -293,11 +274,9 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -293,11 +274,9 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
--i;
--i;
}
}
// If the claim is not a dangling node above the bottom of the tree,
// INVARIANT: A claim can never be considered as the leftMostIndex or leftMostTraceIndex
// we can skip over it. These nodes are not relevant to the game resolution.
// if it has been countered.
if (claim.countered) {
if (claim.countered) continue;
continue;
}
// If the claim is a dangling node, we can check if it is the left-most
// If the claim is a dangling node, we can check if it is the left-most
// dangling node we've come across so far. If it is, we can update the
// dangling node we've come across so far. If it is, we can update the
...
@@ -314,9 +293,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -314,9 +293,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// Create a reference to the left most uncontested claim and its parent.
// Create a reference to the left most uncontested claim and its parent.
ClaimData storage leftMostUncontested = claimData[leftMostIndex];
ClaimData storage leftMostUncontested = claimData[leftMostIndex];
// If the left most uncontested claim's parent has not expired their clock, the game
// INVARIANT: The game may never be resolved unless the clock of the left-most uncontested
// cannot be resolved. If the left most uncontested claim is the root, no nodes qualified,
// claim's parent has expired. If the left-most uncontested claim is the root
// and we check if 3.5 days has passed since the root claim's creation.
// claim, it is uncountered, and we check if 3.5 days has passed since its
// creation.
uint256 parentIndex = leftMostUncontested.parentIndex;
uint256 parentIndex = leftMostUncontested.parentIndex;
Clock opposingClock = parentIndex == type(uint32).max
Clock opposingClock = parentIndex == type(uint32).max
? leftMostUncontested.clock
? leftMostUncontested.clock
...
@@ -341,8 +321,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -341,8 +321,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
}
}
// Update the game status
// Update the game status
status = status_;
emit Resolved(status = status_);
emit Resolved(status_);
}
}
/// @inheritdoc IDisputeGame
/// @inheritdoc IDisputeGame
...
@@ -373,6 +352,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -373,6 +352,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
extraData_ = extraData();
extraData_ = extraData();
}
}
////////////////////////////////////////////////////////////////
// MISC EXTERNAL //
////////////////////////////////////////////////////////////////
/// @inheritdoc IInitializable
/// @inheritdoc IInitializable
function initialize() external {
function initialize() external {
// Set the game start
// Set the game start
...
@@ -391,4 +374,9 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
...
@@ -391,4 +374,9 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
})
})
);
);
}
}
/// @notice Returns the length of the `claimData` array.
function claimDataLen() external view returns (uint256 len_) {
len_ = claimData.length;
}
}
}
packages/contracts-bedrock/contracts/dispute/interfaces/IFaultDisputeGame.sol
View file @
e9c22a78
...
@@ -20,19 +20,19 @@ interface IFaultDisputeGame is IDisputeGame {
...
@@ -20,19 +20,19 @@ interface IFaultDisputeGame is IDisputeGame {
/// @notice Emitted when a new claim is added to the DAG by `claimant`
/// @notice Emitted when a new claim is added to the DAG by `claimant`
/// @param parentIndex The index within the `claimData` array of the parent claim
/// @param parentIndex The index within the `claimData` array of the parent claim
/// @param
pivot
The claim being added
/// @param
claim
The claim being added
/// @param claimant The address of the claimant
/// @param claimant The address of the claimant
event Move(uint256 indexed parentIndex, Claim indexed
pivot
, address indexed claimant);
event Move(uint256 indexed parentIndex, Claim indexed
claim
, address indexed claimant);
/// @notice Attack a disagreed upon `Claim`.
/// @notice Attack a disagreed upon `Claim`.
/// @param _parentIndex Index of the `Claim` to attack in `claimData`.
/// @param _parentIndex Index of the `Claim` to attack in `claimData`.
/// @param _
pivot
The `Claim` at the relative attack position.
/// @param _
claim
The `Claim` at the relative attack position.
function attack(uint256 _parentIndex, Claim _
pivot
) external payable;
function attack(uint256 _parentIndex, Claim _
claim
) external payable;
/// @notice Defend an agreed upon `Claim`.
/// @notice Defend an agreed upon `Claim`.
/// @param _parentIndex Index of the claim to defend in `claimData`.
/// @param _parentIndex Index of the claim to defend in `claimData`.
/// @param _
pivot
The `Claim` at the relative defense position.
/// @param _
claim
The `Claim` at the relative defense position.
function defend(uint256 _parentIndex, Claim _
pivot
) external payable;
function defend(uint256 _parentIndex, Claim _
claim
) external payable;
/// @notice Perform the final step via an on-chain fault proof processor
/// @notice Perform the final step via an on-chain fault proof processor
/// @dev This function should point to a fault proof processor in order to execute
/// @dev This function should point to a fault proof processor in order to execute
...
@@ -42,7 +42,10 @@ interface IFaultDisputeGame is IDisputeGame {
...
@@ -42,7 +42,10 @@ interface IFaultDisputeGame is IDisputeGame {
/// @param _stateIndex The index of the pre/post state of the step within `claimData`.
/// @param _stateIndex The index of the pre/post state of the step within `claimData`.
/// @param _claimIndex The index of the challenged claim within `claimData`.
/// @param _claimIndex The index of the challenged claim within `claimData`.
/// @param _isAttack Whether or not the step is an attack or a defense.
/// @param _isAttack Whether or not the step is an attack or a defense.
/// @param _stateData The stateData of the step is the preimage of the claim @ `prestateIndex`
/// @param _stateData The stateData of the step is the preimage of the claim at the given
/// prestate, which is at `_stateIndex` if the move is an attack and `_claimIndex` if
/// the move is a defense. If the step is an attack on the first instruction, it is
/// the absolute prestate of the fault proof VM.
/// @param _proof Proof to access memory leaf nodes in the VM.
/// @param _proof Proof to access memory leaf nodes in the VM.
function step(
function step(
uint256 _stateIndex,
uint256 _stateIndex,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment