Commit 652732fc authored by clabby's avatar clabby

Simplify proposal storage

parent e89bb46d
......@@ -37,7 +37,7 @@ type BlockOracleBlockInfo struct {
// BlockOracleMetaData contains all meta data concerning the BlockOracle contract.
var BlockOracleMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[],\"name\":\"BlockHashNotPresent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[{\"components\":[{\"internalType\":\"Hash\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"Timestamp\",\"name\":\"childTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structBlockOracle.BlockInfo\",\"name\":\"blockInfo_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x608060405234801561001057600080fd5b506101ef806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806399d548aa1461003b578063c2c4c5c114610078575b600080fd5b61004e61004936600461018b565b61008e565b604080518251815260209283015167ffffffffffffffff1692810192909252015b60405180910390f35b61008061010d565b60405190815260200161006f565b604080518082018252600080825260209182018190528381528082528281208351808501909452805480855260019091015467ffffffffffffffff169284019290925203610108576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000604051806040016040528060014361012791906101a4565b804082524267ffffffffffffffff908116602093840152600082815280845260409020845181559390920151600190930180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001693909216929092179055919050565b60006020828403121561019d57600080fd5b5035919050565b6000828210156101dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea164736f6c634300080f000a",
Bin: "0x608060405234801561001057600080fd5b506101e8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806399d548aa1461003b578063c2c4c5c114610078575b600080fd5b61004e610049366004610184565b61008e565b604080518251815260209283015167ffffffffffffffff1692810192909252015b60405180910390f35b61008061010d565b60405190815260200161006f565b604080518082018252600080825260209182018190528381528082528281208351808501909452805480855260019091015467ffffffffffffffff169284019290925203610108576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600061011a60014361019d565b604080518082018252824081524267ffffffffffffffff908116602080840191825260008681529081905293909320915182559151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691909216179055919050565b60006020828403121561019657600080fd5b5035919050565b6000828210156101d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea164736f6c634300080f000a",
}
// BlockOracleABI is the input ABI used to generate the binding from.
......
......@@ -13,7 +13,7 @@ const BlockOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\"
var BlockOracleStorageLayout = new(solc.StorageLayout)
var BlockOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806399d548aa1461003b578063c2c4c5c114610078575b600080fd5b61004e61004936600461018b565b61008e565b604080518251815260209283015167ffffffffffffffff1692810192909252015b60405180910390f35b61008061010d565b60405190815260200161006f565b604080518082018252600080825260209182018190528381528082528281208351808501909452805480855260019091015467ffffffffffffffff169284019290925203610108576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000604051806040016040528060014361012791906101a4565b804082524267ffffffffffffffff908116602093840152600082815280845260409020845181559390920151600190930180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001693909216929092179055919050565b60006020828403121561019d57600080fd5b5035919050565b6000828210156101dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea164736f6c634300080f000a"
var BlockOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806399d548aa1461003b578063c2c4c5c114610078575b600080fd5b61004e610049366004610184565b61008e565b604080518251815260209283015167ffffffffffffffff1692810192909252015b60405180910390f35b61008061010d565b60405190815260200161006f565b604080518082018252600080825260209182018190528381528082528281208351808501909452805480855260019091015467ffffffffffffffff169284019290925203610108576040517f37cf270500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600061011a60014361019d565b604080518082018252824081524267ffffffffffffffff908116602080840191825260008681529081905293909320915182559151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691909216179055919050565b60006020828403121561019657600080fd5b5035919050565b6000828210156101d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(BlockOracleStorageLayoutJSON), BlockOracleStorageLayout); err != nil {
......
......@@ -28,10 +28,17 @@ var (
_ = event.NewSubscription
)
// IFaultDisputeGameOutputProposal is an auto generated low-level Go binding around an user-defined struct.
type IFaultDisputeGameOutputProposal struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
}
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
var FaultDisputeGameMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockOracle\",\"name\":\"_blockOracle\",\"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\":\"L1HeadTooOld\",\"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\":\"BLOCK_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":\"_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: "0x6101a06040523480156200001257600080fd5b5060405162002df738038062002df783398101604081905262000035916200009a565b6000608081905260a052600660c05260e095909552610100939093526001600160401b03909116610120526001600160a01b039081166101405290811661016052166101805262000122565b6001600160a01b03811681146200009757600080fd5b50565b60008060008060008060c08789031215620000b457600080fd5b86516020880151604089015191975095506001600160401b0381168114620000db57600080fd5b6060880151909450620000ee8162000081565b6080880151909350620001018162000081565b60a0880151909250620001148162000081565b809150509295509295509295565b60805160a05160c05160e0516101005161012051610140516101605161018051612c10620001e7600039600081816103ee01526118f5015260008181610579015281816116c201528181611796015261186f0152600081816104ec015281816107560152611dd00152600081816105ad01528181610cb401526113060152600081816103ba01528181610bbc015281816111450152611bd40152600081816102770152611d0e01526000610f3101526000610f0801526000610edf0152612c106000f3fe6080604052600436106101b75760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c146105e2578063cf09e0d014610646578063d8cc1a3c14610665578063fa24f7431461068557600080fd5b8063c0c3a09214610567578063c31b29ce1461059b578063c55cd0c7146105cf57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461052a57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b806335fef56711610159578063529184c911610133578063529184c9146103dc57806354fd4d5014610410578063609d333414610432578063632247ea1461044757600080fd5b806335fef56714610336578063363cc427146103495780634778efe8146103a857600080fd5b8063266198f911610195578063266198f9146102655780632810e1d6146102a7578063298c9005146102bc5780633218b99d146102fc57600080fd5b8063013cf08b146101bc5780631e27052a14610210578063200d2ed214610232575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612505565b6106a9565b604080516fffffffffffffffffffffffffffffffff9485168152939092166020840152908201526060015b60405180910390f35b34801561021c57600080fd5b5061023061022b36600461251e565b6106f7565b005b34801561023e57600080fd5b506000546102589068010000000000000000900460ff1681565b604051610207919061256f565b34801561027157600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610207565b3480156102b357600080fd5b50610258610aa2565b3480156102c857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610299565b34801561030857600080fd5b5060005461031d9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610207565b61023061034436600461251e565b610ec8565b34801561035557600080fd5b50600054610383906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b3480156103b457600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e857600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561041c57600080fd5b50610425610ed8565b6040516102079190612626565b34801561043e57600080fd5b50610425610f7b565b610230610455366004612655565b610f89565b34801561046657600080fd5b5061029960015481565b34801561047c57600080fd5b5061023061156e565b34801561049157600080fd5b50600254610299565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610299565b3480156104e657600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160008152602001610207565b34801561053657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610299565b34801561057357600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a757600080fd5b5061031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102306105dd36600461251e565b611aae565b3480156105ee57600080fd5b506106026105fd366004612505565b611aba565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610207565b34801561065257600080fd5b5060005467ffffffffffffffff1661031d565b34801561067157600080fd5b506102306106803660046126d3565b611b2b565b34801561069157600080fd5b5061069a61204f565b6040516102079392919061275d565b600381600281106106b957600080fd5b6002020180546001909101546fffffffffffffffffffffffffffffffff80831693507001000000000000000000000000000000009092049091169083565b6000805468010000000000000000900460ff16600281111561071b5761071b612540565b14610752576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190612788565b90508260010361089e576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089891906127be565b50505050565b600483101561096657600183161573ffffffffffffffffffffffffffffffffffffffff8216639a1f5e7f85600384600281106108dc576108dc6127d7565b60020201600101546020876040518563ffffffff1660e01b815260040161091c949392919093845260208401929092526040830152606082015260800190565b6020604051808303816000875af115801561093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095f91906127be565b5050505050565b82600403610a11576003546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081526004810185905270010000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f90608401610855565b82600503610a9d576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610ac857610ac8612540565b14610aff576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610b1190600190612835565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610bfb57600060028281548110610b4b57610b4b6127d7565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610b9c5750610b26565b6002810154600090610be0906fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000061208d565b905083811015610bf4578093508260010194505b5050610b26565b50600060028381548110610c1157610c116127d7565b600091825260208220600390910201805490925063ffffffff90811691908214610c7b5760028281548110610c4857610c486127d7565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610ca7565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610ceb67ffffffffffffffff831642612835565b610d07836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d1b919061284c565b11610d52576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610df4906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610dfe9190612893565b67ffffffffffffffff16158015610e2557506fffffffffffffffffffffffffffffffff8414155b15610e335760029550610e38565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610e7d57610e7d612540565b021790556002811115610e9257610e92612540565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610ed482826000610f89565b5050565b6060610f037f0000000000000000000000000000000000000000000000000000000000000000612142565b610f2c7f0000000000000000000000000000000000000000000000000000000000000000612142565b610f557f0000000000000000000000000000000000000000000000000000000000000000612142565b604051602001610f67939291906128ba565b604051602081830303815290604052905090565b6060610ec36020604061227f565b6000805468010000000000000000900460ff166002811115610fad57610fad612540565b14610fe4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610ff0575080155b15611027576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002848154811061103c5761103c6127d7565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff808216606085015270010000000000000000000000000000000090910416608083015282549193509190869081106110d7576110d76127d7565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151611141906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000611200826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115611242576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff908116146112a2576002836000015163ffffffff1681548110611271576112716127d7565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff16426112db846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166112ef919061284c565b6112f99190612835565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff8216111561136c576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061138d888660009182526020526040902090565b60008181526007602052604090205490915060ff16156113d9576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a8216608086019081526002805497880181558a52945160039096027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8401555190518416700100000000000000000000000000000000029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016115f37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061171c60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177b91906127be565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576117c6600185612835565b6040518263ffffffff1660e01b81526004016117e491815260200190565b606060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061297f565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156118b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118da919061297f565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161196691815260200190565b6040805180830381865afa158015611982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a69190612a0b565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff1611611a05576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280600186611a1d9190612835565b6fffffffffffffffffffffffffffffffff908116825260408681015182166020808501919091529651928101929092528251838701519082167001000000000000000000000000000000009183168202176003559282015160045581516060810183529681168088528583015190911695870186905293519501859052929092021760055560069190915551600155565b610ed482826001610f89565b60028181548110611aca57600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611b4f57611b4f612540565b14611b86576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611b9b57611b9b6127d7565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611bfa7f0000000000000000000000000000000000000000000000000000000000000000600161284c565b611c96826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611cd7576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611d5d57611cfb836fffffffffffffffffffffffffffffffff16612316565b67ffffffffffffffff16600003611d34577f00000000000000000000000000000000000000000000000000000000000000009150611d56565b611d4f611d42600186612a92565b865463ffffffff166123bc565b6001015491505b5083611d77565b84600101549150611d74846001611d429190612ac3565b90505b818989604051611d88929190612af7565b604051809103902014611dc7576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611e2d9493929190612b50565b6020604051808303816000875af1158015611e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7091906127be565b600284810154929091149250600091611f1b906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fb7886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fc19190612b82565b611fcb9190612893565b67ffffffffffffffff161590508115158103612013576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060612086610f7b565b9050909192565b60008061211a847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361218557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156121af578061219981612ba3565b91506121a89050600a83612bdb565b9150612189565b60008167ffffffffffffffff8111156121ca576121ca612930565b6040519080825280601f01601f1916602001820160405280156121f4576020820181803683370190505b5090505b841561227757612209600183612835565b9150612216600a86612bef565b61222190603061284c565b60f81b818381518110612236576122366127d7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612270600a86612bdb565b94506121f8565b949350505050565b606060006122b684367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900361284c565b90508267ffffffffffffffff1667ffffffffffffffff8111156122db576122db612930565b6040519080825280601f01601f191660200182016040528015612305576020820181803683370190505b509150828160208401375092915050565b6000806123a3837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806123da846fffffffffffffffffffffffffffffffff16612459565b9050600283815481106123ef576123ef6127d7565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461245257815460028054909163ffffffff1690811061243d5761243d6127d7565b90600052602060002090600302019150612400565b5092915050565b600081196001830116816124ed827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b60006020828403121561251757600080fd5b5035919050565b6000806040838503121561253157600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106125aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156125cb5781810151838201526020016125b3565b838111156108985750506000910152565b600081518084526125f48160208601602086016125b0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061263960208301846125dc565b9392505050565b8035801515811461265057600080fd5b919050565b60008060006060848603121561266a57600080fd5b833592506020840135915061268160408501612640565b90509250925092565b60008083601f84011261269c57600080fd5b50813567ffffffffffffffff8111156126b457600080fd5b6020830191508360208285010111156126cc57600080fd5b9250929050565b600080600080600080608087890312156126ec57600080fd5b863595506126fc60208801612640565b9450604087013567ffffffffffffffff8082111561271957600080fd5b6127258a838b0161268a565b9096509450606089013591508082111561273e57600080fd5b5061274b89828a0161268a565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061277f60608301846125dc565b95945050505050565b60006020828403121561279a57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461263957600080fd5b6000602082840312156127d057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561284757612847612806565b500390565b6000821982111561285f5761285f612806565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806128ae576128ae612864565b92169190910692915050565b600084516128cc8184602089016125b0565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612908816001850160208a016125b0565b600192019182015283516129238160028401602088016125b0565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461265057600080fd5b60006060828403121561299157600080fd5b6040516060810181811067ffffffffffffffff821117156129db577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526129ee6020840161295f565b60208201526129ff6040840161295f565b60408201529392505050565b600060408284031215612a1d57600080fd5b6040516040810167ffffffffffffffff8282108183111715612a68577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405284518352602085015191508082168214612a8557600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612abb57612abb612806565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612aee57612aee612806565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612b64604083018688612b07565b8281036020840152612b77818587612b07565b979650505050505050565b600067ffffffffffffffff83811690831681811015612abb57612abb612806565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bd457612bd4612806565b5060010190565b600082612bea57612bea612864565b500490565b600082612bfe57612bfe612864565b50069056fea164736f6c634300080f000a",
ABI: "[{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockOracle\",\"name\":\"_blockOracle\",\"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\":\"L1HeadTooOld\",\"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\":\"BLOCK_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":\"proposals\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"starting\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"disputed\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"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\":\"_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: "0x6101a06040523480156200001257600080fd5b5060405162002e7c38038062002e7c83398101604081905262000035916200009a565b6000608081905260a052600660c05260e095909552610100939093526001600160401b03909116610120526001600160a01b039081166101405290811661016052166101805262000122565b6001600160a01b03811681146200009757600080fd5b50565b60008060008060008060c08789031215620000b457600080fd5b86516020880151604089015191975095506001600160401b0381168114620000db57600080fd5b6060880151909450620000ee8162000081565b6080880151909350620001018162000081565b60a0880151909250620001148162000081565b809150509295509295509295565b60805160a05160c05160e0516101005161012051610140516101605161018051612c95620001e7600039600081816103a301526119090152600081816105be015281816116d6015281816117aa01526118830152600081816105310152818161074d0152611e010152600081816105f201528181610cc8015261131a01526000818161036f01528181610bd0015281816111590152611c0501526000818161022c0152611d3f01526000610f4501526000610f1c01526000610ef30152612c956000f3fe6080604052600436106101b75760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c14610627578063cf09e0d01461068b578063d8cc1a3c146106aa578063fa24f743146106ca57600080fd5b8063c0c3a092146105ac578063c31b29ce146105e0578063c55cd0c71461061457600080fd5b80638b85902b116100c65780638b85902b146104df578063929312981461051f578063bbdc02db14610553578063bcef3b551461056f57600080fd5b80636361506d1461049f5780638129fc1c146104b55780638980e0cc146104ca57600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d50146103c557806355ef20e6146103e7578063609d333414610477578063632247ea1461048c57600080fd5b8063363cc427146102fe5780634778efe81461035d578063529184c91461039157600080fd5b80632810e1d6116101955780632810e1d61461025c578063298c9005146102715780633218b99d146102b157806335fef567146102eb57600080fd5b80631e27052a146101bc578063200d2ed2146101de578063266198f91461021a575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612536565b6106ee565b005b3480156101ea57600080fd5b506000546102049068010000000000000000900460ff1681565b6040516102119190612587565b60405180910390f35b34801561022657600080fd5b5061024e7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610211565b34801561026857600080fd5b50610204610ab6565b34801561027d57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036040013561024e565b3480156102bd57600080fd5b506000546102d29067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610211565b6101dc6102f9366004612536565b610edc565b34801561030a57600080fd5b50600054610338906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610211565b34801561036957600080fd5b5061024e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039d57600080fd5b506103387f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d157600080fd5b506103da610eec565b604051610211919061263e565b3480156103f357600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104699182565b604051610211929190612658565b34801561048357600080fd5b506103da610f8f565b6101dc61049a3660046126c1565b610f9d565b3480156104ab57600080fd5b5061024e60015481565b3480156104c157600080fd5b506101dc611582565b3480156104d657600080fd5b5060025461024e565b3480156104eb57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013561024e565b34801561052b57600080fd5b506103387f000000000000000000000000000000000000000000000000000000000000000081565b34801561055f57600080fd5b5060405160008152602001610211565b34801561057b57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033561024e565b3480156105b857600080fd5b506103387f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ec57600080fd5b506102d27f000000000000000000000000000000000000000000000000000000000000000081565b6101dc610622366004612536565b611adf565b34801561063357600080fd5b506106476106423660046126f6565b611aeb565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610211565b34801561069757600080fd5b5060005467ffffffffffffffff166102d2565b3480156106b657600080fd5b506101dc6106c5366004612758565b611b5c565b3480156106d657600080fd5b506106df612080565b604051610211939291906127e2565b6000805468010000000000000000900460ff16600281111561071257610712612558565b14610749576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da919061280d565b905082600103610895576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af115801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f9190612843565b50505050565b8260020361090657600480546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081529182018590526024820152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f9060840161084c565b8260030361097a576006546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f9060840161084c565b82600403610a25576003546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081526004810185905270010000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f9060840161084c565b82600503610ab1576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af115801561086b573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610adc57610adc612558565b14610b13576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610b259060019061288b565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610c0f57600060028281548110610b5f57610b5f6128a2565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610bb05750610b3a565b6002810154600090610bf4906fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000006120be565b905083811015610c08578093508260010194505b5050610b3a565b50600060028381548110610c2557610c256128a2565b600091825260208220600390910201805490925063ffffffff90811691908214610c8f5760028281548110610c5c57610c5c6128a2565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610cbb565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610cff67ffffffffffffffff83164261288b565b610d1b836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d2f91906128d1565b11610d66576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610e08906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610e129190612918565b67ffffffffffffffff16158015610e3957506fffffffffffffffffffffffffffffffff8414155b15610e475760029550610e4c565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610e9157610e91612558565b021790556002811115610ea657610ea6612558565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610ee882826000610f9d565b5050565b6060610f177f0000000000000000000000000000000000000000000000000000000000000000612173565b610f407f0000000000000000000000000000000000000000000000000000000000000000612173565b610f697f0000000000000000000000000000000000000000000000000000000000000000612173565b604051602001610f7b9392919061293f565b604051602081830303815290604052905090565b6060610ed7602060406122b0565b6000805468010000000000000000900460ff166002811115610fc157610fc1612558565b14610ff8576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015611004575080155b1561103b576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110611050576110506128a2565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff808216606085015270010000000000000000000000000000000090910416608083015282549193509190869081106110eb576110eb6128a2565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151611155906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000611214826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115611256576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff908116146112b6576002836000015163ffffffff1681548110611285576112856128a2565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff16426112ef846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661130391906128d1565b61130d919061288b565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115611380576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b4217905060006113a1888660009182526020526040902090565b60008181526007602052604090205490915060ff16156113ed576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a8216608086019081526002805497880181558a52945160039096027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8401555190518416700100000000000000000000000000000000029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016116077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061173060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161174e91815260200190565b602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190612843565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576117da60018561288b565b6040518263ffffffff1660e01b81526004016117f891815260200190565b606060405180830381865afa158015611815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118399190612a04565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156118ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ee9190612a04565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161197a91815260200190565b6040805180830381865afa158015611996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ba9190612a90565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff1611611a19576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252908190810180611a3460018961288b565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610ee882826001610f9d565b60028181548110611afb57600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611b8057611b80612558565b14611bb7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611bcc57611bcc6128a2565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611c2b7f000000000000000000000000000000000000000000000000000000000000000060016128d1565b611cc7826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611d08576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611d8e57611d2c836fffffffffffffffffffffffffffffffff16612347565b67ffffffffffffffff16600003611d65577f00000000000000000000000000000000000000000000000000000000000000009150611d87565b611d80611d73600186612b17565b865463ffffffff166123ed565b6001015491505b5083611da8565b84600101549150611da5846001611d739190612b48565b90505b818989604051611db9929190612b7c565b604051809103902014611df8576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611e5e9493929190612bd5565b6020604051808303816000875af1158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea19190612843565b600284810154929091149250600091611f4c906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fe8886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611ff29190612c07565b611ffc9190612918565b67ffffffffffffffff161590508115158103612044576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560606120b7610f8f565b9050909192565b60008061214b847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b6060816000036121b657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156121e057806121ca81612c28565b91506121d99050600a83612c60565b91506121ba565b60008167ffffffffffffffff8111156121fb576121fb6129b5565b6040519080825280601f01601f191660200182016040528015612225576020820181803683370190505b5090505b84156122a85761223a60018361288b565b9150612247600a86612c74565b6122529060306128d1565b60f81b818381518110612267576122676128a2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506122a1600a86612c60565b9450612229565b949350505050565b606060006122e784367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036128d1565b90508267ffffffffffffffff1667ffffffffffffffff81111561230c5761230c6129b5565b6040519080825280601f01601f191660200182016040528015612336576020820181803683370190505b509150828160208401375092915050565b6000806123d4837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b60008061240b846fffffffffffffffffffffffffffffffff1661248a565b905060028381548110612420576124206128a2565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461248357815460028054909163ffffffff1690811061246e5761246e6128a2565b90600052602060002090600302019150612431565b5092915050565b6000811960018301168161251e827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b6000806040838503121561254957600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106125c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156125e35781810151838201526020016125cb565b8381111561088f5750506000910152565b6000815180845261260c8160208601602086016125c8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061265160208301846125f4565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c08101612651565b803580151581146126bc57600080fd5b919050565b6000806000606084860312156126d657600080fd5b83359250602084013591506126ed604085016126ac565b90509250925092565b60006020828403121561270857600080fd5b5035919050565b60008083601f84011261272157600080fd5b50813567ffffffffffffffff81111561273957600080fd5b60208301915083602082850101111561275157600080fd5b9250929050565b6000806000806000806080878903121561277157600080fd5b86359550612781602088016126ac565b9450604087013567ffffffffffffffff8082111561279e57600080fd5b6127aa8a838b0161270f565b909650945060608901359150808211156127c357600080fd5b506127d089828a0161270f565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061280460608301846125f4565b95945050505050565b60006020828403121561281f57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461265157600080fd5b60006020828403121561285557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561289d5761289d61285c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156128e4576128e461285c565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680612933576129336128e9565b92169190910692915050565b600084516129518184602089016125c8565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161298d816001850160208a016125c8565b600192019182015283516129a88160028401602088016125c8565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146126bc57600080fd5b600060608284031215612a1657600080fd5b6040516060810181811067ffffffffffffffff82111715612a60577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612a73602084016129e4565b6020820152612a84604084016129e4565b60408201529392505050565b600060408284031215612aa257600080fd5b6040516040810167ffffffffffffffff8282108183111715612aed577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405284518352602085015191508082168214612b0a57600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612b4057612b4061285c565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612b7357612b7361285c565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612be9604083018688612b8c565b8281036020840152612bfc818587612b8c565b979650505050505050565b600067ffffffffffffffff83811690831681811015612b4057612b4061285c565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c5957612c5961285c565b5060010190565b600082612c6f57612c6f6128e9565b500490565b600082612c8357612c836128e9565b50069056fea164736f6c634300080f000a",
}
// FaultDisputeGameABI is the input ABI used to generate the binding from.
......@@ -776,54 +783,49 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) L2BlockNumber() (*big.In
return _FaultDisputeGame.Contract.L2BlockNumber(&_FaultDisputeGame.CallOpts)
}
// Proposals is a free data retrieval call binding the contract method 0x013cf08b.
// Proposals is a free data retrieval call binding the contract method 0x55ef20e6.
//
// Solidity: function proposals(uint256 ) view returns(uint128 index, uint128 l2BlockNumber, bytes32 outputRoot)
func (_FaultDisputeGame *FaultDisputeGameCaller) Proposals(opts *bind.CallOpts, arg0 *big.Int) (struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
// Solidity: function proposals() view returns((uint128,uint128,bytes32) starting, (uint128,uint128,bytes32) disputed)
func (_FaultDisputeGame *FaultDisputeGameCaller) Proposals(opts *bind.CallOpts) (struct {
Starting IFaultDisputeGameOutputProposal
Disputed IFaultDisputeGameOutputProposal
}, error) {
var out []interface{}
err := _FaultDisputeGame.contract.Call(opts, &out, "proposals", arg0)
err := _FaultDisputeGame.contract.Call(opts, &out, "proposals")
outstruct := new(struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
Starting IFaultDisputeGameOutputProposal
Disputed IFaultDisputeGameOutputProposal
})
if err != nil {
return *outstruct, err
}
outstruct.Index = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
outstruct.L2BlockNumber = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
outstruct.OutputRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte)
outstruct.Starting = *abi.ConvertType(out[0], new(IFaultDisputeGameOutputProposal)).(*IFaultDisputeGameOutputProposal)
outstruct.Disputed = *abi.ConvertType(out[1], new(IFaultDisputeGameOutputProposal)).(*IFaultDisputeGameOutputProposal)
return *outstruct, err
}
// Proposals is a free data retrieval call binding the contract method 0x013cf08b.
// Proposals is a free data retrieval call binding the contract method 0x55ef20e6.
//
// Solidity: function proposals(uint256 ) view returns(uint128 index, uint128 l2BlockNumber, bytes32 outputRoot)
func (_FaultDisputeGame *FaultDisputeGameSession) Proposals(arg0 *big.Int) (struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
// Solidity: function proposals() view returns((uint128,uint128,bytes32) starting, (uint128,uint128,bytes32) disputed)
func (_FaultDisputeGame *FaultDisputeGameSession) Proposals() (struct {
Starting IFaultDisputeGameOutputProposal
Disputed IFaultDisputeGameOutputProposal
}, error) {
return _FaultDisputeGame.Contract.Proposals(&_FaultDisputeGame.CallOpts, arg0)
return _FaultDisputeGame.Contract.Proposals(&_FaultDisputeGame.CallOpts)
}
// Proposals is a free data retrieval call binding the contract method 0x013cf08b.
// Proposals is a free data retrieval call binding the contract method 0x55ef20e6.
//
// Solidity: function proposals(uint256 ) view returns(uint128 index, uint128 l2BlockNumber, bytes32 outputRoot)
func (_FaultDisputeGame *FaultDisputeGameCallerSession) Proposals(arg0 *big.Int) (struct {
Index *big.Int
L2BlockNumber *big.Int
OutputRoot [32]byte
// Solidity: function proposals() view returns((uint128,uint128,bytes32) starting, (uint128,uint128,bytes32) disputed)
func (_FaultDisputeGame *FaultDisputeGameCallerSession) Proposals() (struct {
Starting IFaultDisputeGameOutputProposal
Disputed IFaultDisputeGameOutputProposal
}, error) {
return _FaultDisputeGame.Contract.Proposals(&_FaultDisputeGame.CallOpts, arg0)
return _FaultDisputeGame.Contract.Proposals(&_FaultDisputeGame.CallOpts)
}
// RootClaim is a free data retrieval call binding the contract method 0xbcef3b55.
......
......@@ -9,11 +9,11 @@ import (
"github.com/ethereum-optimism/optimism/op-bindings/solc"
)
const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"gameStart\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_userDefinedValueType(Timestamp)1016\"},{\"astId\":1001,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"status\",\"offset\":8,\"slot\":\"0\",\"type\":\"t_enum(GameStatus)1008\"},{\"astId\":1002,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"bondManager\",\"offset\":9,\"slot\":\"0\",\"type\":\"t_contract(IBondManager)1007\"},{\"astId\":1003,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"l1Head\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_userDefinedValueType(Hash)1014\"},{\"astId\":1004,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claimData\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_struct(ClaimData)1009_storage)dyn_storage\"},{\"astId\":1005,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"proposals\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_array(t_struct(OutputProposal)1010_storage)2_storage\"},{\"astId\":1006,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claims\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_userDefinedValueType(ClaimHash)1012,t_bool)\"}],\"types\":{\"t_array(t_struct(ClaimData)1009_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IFaultDisputeGame.ClaimData[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(ClaimData)1009_storage\"},\"t_array(t_struct(OutputProposal)1010_storage)2_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.OutputProposal[2]\",\"numberOfBytes\":\"128\",\"base\":\"t_struct(OutputProposal)1010_storage\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_contract(IBondManager)1007\":{\"encoding\":\"inplace\",\"label\":\"contract IBondManager\",\"numberOfBytes\":\"20\"},\"t_enum(GameStatus)1008\":{\"encoding\":\"inplace\",\"label\":\"enum GameStatus\",\"numberOfBytes\":\"1\"},\"t_mapping(t_userDefinedValueType(ClaimHash)1012,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(ClaimHash =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_userDefinedValueType(ClaimHash)1012\",\"value\":\"t_bool\"},\"t_struct(ClaimData)1009_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.ClaimData\",\"numberOfBytes\":\"96\"},\"t_struct(OutputProposal)1010_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.OutputProposal\",\"numberOfBytes\":\"64\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"},\"t_userDefinedValueType(Claim)1011\":{\"encoding\":\"inplace\",\"label\":\"Claim\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(ClaimHash)1012\":{\"encoding\":\"inplace\",\"label\":\"ClaimHash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Clock)1013\":{\"encoding\":\"inplace\",\"label\":\"Clock\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Hash)1014\":{\"encoding\":\"inplace\",\"label\":\"Hash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Position)1015\":{\"encoding\":\"inplace\",\"label\":\"Position\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Timestamp)1016\":{\"encoding\":\"inplace\",\"label\":\"Timestamp\",\"numberOfBytes\":\"8\"}}}"
const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"gameStart\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_userDefinedValueType(Timestamp)1017\"},{\"astId\":1001,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"status\",\"offset\":8,\"slot\":\"0\",\"type\":\"t_enum(GameStatus)1008\"},{\"astId\":1002,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"bondManager\",\"offset\":9,\"slot\":\"0\",\"type\":\"t_contract(IBondManager)1007\"},{\"astId\":1003,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"l1Head\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_userDefinedValueType(Hash)1015\"},{\"astId\":1004,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claimData\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_struct(ClaimData)1009_storage)dyn_storage\"},{\"astId\":1005,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"proposals\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_struct(OutputProposals)1011_storage\"},{\"astId\":1006,\"contract\":\"src/dispute/FaultDisputeGame.sol:FaultDisputeGame\",\"label\":\"claims\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_userDefinedValueType(ClaimHash)1013,t_bool)\"}],\"types\":{\"t_array(t_struct(ClaimData)1009_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IFaultDisputeGame.ClaimData[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(ClaimData)1009_storage\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_contract(IBondManager)1007\":{\"encoding\":\"inplace\",\"label\":\"contract IBondManager\",\"numberOfBytes\":\"20\"},\"t_enum(GameStatus)1008\":{\"encoding\":\"inplace\",\"label\":\"enum GameStatus\",\"numberOfBytes\":\"1\"},\"t_mapping(t_userDefinedValueType(ClaimHash)1013,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(ClaimHash =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_userDefinedValueType(ClaimHash)1013\",\"value\":\"t_bool\"},\"t_struct(ClaimData)1009_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.ClaimData\",\"numberOfBytes\":\"96\"},\"t_struct(OutputProposal)1010_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.OutputProposal\",\"numberOfBytes\":\"64\"},\"t_struct(OutputProposals)1011_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IFaultDisputeGame.OutputProposals\",\"numberOfBytes\":\"128\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"},\"t_userDefinedValueType(Claim)1012\":{\"encoding\":\"inplace\",\"label\":\"Claim\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(ClaimHash)1013\":{\"encoding\":\"inplace\",\"label\":\"ClaimHash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Clock)1014\":{\"encoding\":\"inplace\",\"label\":\"Clock\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Hash)1015\":{\"encoding\":\"inplace\",\"label\":\"Hash\",\"numberOfBytes\":\"32\"},\"t_userDefinedValueType(Position)1016\":{\"encoding\":\"inplace\",\"label\":\"Position\",\"numberOfBytes\":\"16\"},\"t_userDefinedValueType(Timestamp)1017\":{\"encoding\":\"inplace\",\"label\":\"Timestamp\",\"numberOfBytes\":\"8\"}}}"
var FaultDisputeGameStorageLayout = new(solc.StorageLayout)
var FaultDisputeGameDeployedBin = "0x6080604052600436106101b75760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c146105e2578063cf09e0d014610646578063d8cc1a3c14610665578063fa24f7431461068557600080fd5b8063c0c3a09214610567578063c31b29ce1461059b578063c55cd0c7146105cf57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461052a57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b806335fef56711610159578063529184c911610133578063529184c9146103dc57806354fd4d5014610410578063609d333414610432578063632247ea1461044757600080fd5b806335fef56714610336578063363cc427146103495780634778efe8146103a857600080fd5b8063266198f911610195578063266198f9146102655780632810e1d6146102a7578063298c9005146102bc5780633218b99d146102fc57600080fd5b8063013cf08b146101bc5780631e27052a14610210578063200d2ed214610232575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612505565b6106a9565b604080516fffffffffffffffffffffffffffffffff9485168152939092166020840152908201526060015b60405180910390f35b34801561021c57600080fd5b5061023061022b36600461251e565b6106f7565b005b34801561023e57600080fd5b506000546102589068010000000000000000900460ff1681565b604051610207919061256f565b34801561027157600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610207565b3480156102b357600080fd5b50610258610aa2565b3480156102c857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610299565b34801561030857600080fd5b5060005461031d9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610207565b61023061034436600461251e565b610ec8565b34801561035557600080fd5b50600054610383906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b3480156103b457600080fd5b506102997f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e857600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561041c57600080fd5b50610425610ed8565b6040516102079190612626565b34801561043e57600080fd5b50610425610f7b565b610230610455366004612655565b610f89565b34801561046657600080fd5b5061029960015481565b34801561047c57600080fd5b5061023061156e565b34801561049157600080fd5b50600254610299565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610299565b3480156104e657600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160008152602001610207565b34801561053657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610299565b34801561057357600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a757600080fd5b5061031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102306105dd36600461251e565b611aae565b3480156105ee57600080fd5b506106026105fd366004612505565b611aba565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610207565b34801561065257600080fd5b5060005467ffffffffffffffff1661031d565b34801561067157600080fd5b506102306106803660046126d3565b611b2b565b34801561069157600080fd5b5061069a61204f565b6040516102079392919061275d565b600381600281106106b957600080fd5b6002020180546001909101546fffffffffffffffffffffffffffffffff80831693507001000000000000000000000000000000009092049091169083565b6000805468010000000000000000900460ff16600281111561071b5761071b612540565b14610752576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190612788565b90508260010361089e576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089891906127be565b50505050565b600483101561096657600183161573ffffffffffffffffffffffffffffffffffffffff8216639a1f5e7f85600384600281106108dc576108dc6127d7565b60020201600101546020876040518563ffffffff1660e01b815260040161091c949392919093845260208401929092526040830152606082015260800190565b6020604051808303816000875af115801561093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095f91906127be565b5050505050565b82600403610a11576003546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081526004810185905270010000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f90608401610855565b82600503610a9d576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af1158015610874573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610ac857610ac8612540565b14610aff576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610b1190600190612835565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610bfb57600060028281548110610b4b57610b4b6127d7565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610b9c5750610b26565b6002810154600090610be0906fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000061208d565b905083811015610bf4578093508260010194505b5050610b26565b50600060028381548110610c1157610c116127d7565b600091825260208220600390910201805490925063ffffffff90811691908214610c7b5760028281548110610c4857610c486127d7565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610ca7565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610ceb67ffffffffffffffff831642612835565b610d07836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d1b919061284c565b11610d52576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610df4906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610dfe9190612893565b67ffffffffffffffff16158015610e2557506fffffffffffffffffffffffffffffffff8414155b15610e335760029550610e38565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610e7d57610e7d612540565b021790556002811115610e9257610e92612540565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610ed482826000610f89565b5050565b6060610f037f0000000000000000000000000000000000000000000000000000000000000000612142565b610f2c7f0000000000000000000000000000000000000000000000000000000000000000612142565b610f557f0000000000000000000000000000000000000000000000000000000000000000612142565b604051602001610f67939291906128ba565b604051602081830303815290604052905090565b6060610ec36020604061227f565b6000805468010000000000000000900460ff166002811115610fad57610fad612540565b14610fe4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610ff0575080155b15611027576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002848154811061103c5761103c6127d7565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff808216606085015270010000000000000000000000000000000090910416608083015282549193509190869081106110d7576110d76127d7565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151611141906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000611200826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115611242576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff908116146112a2576002836000015163ffffffff1681548110611271576112716127d7565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff16426112db846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166112ef919061284c565b6112f99190612835565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff8216111561136c576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061138d888660009182526020526040902090565b60008181526007602052604090205490915060ff16156113d9576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a8216608086019081526002805497880181558a52945160039096027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8401555190518416700100000000000000000000000000000000029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016115f37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061171c60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177b91906127be565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576117c6600185612835565b6040518263ffffffff1660e01b81526004016117e491815260200190565b606060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061297f565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156118b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118da919061297f565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161196691815260200190565b6040805180830381865afa158015611982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a69190612a0b565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff1611611a05576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280600186611a1d9190612835565b6fffffffffffffffffffffffffffffffff908116825260408681015182166020808501919091529651928101929092528251838701519082167001000000000000000000000000000000009183168202176003559282015160045581516060810183529681168088528583015190911695870186905293519501859052929092021760055560069190915551600155565b610ed482826001610f89565b60028181548110611aca57600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611b4f57611b4f612540565b14611b86576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611b9b57611b9b6127d7565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611bfa7f0000000000000000000000000000000000000000000000000000000000000000600161284c565b611c96826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611cd7576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611d5d57611cfb836fffffffffffffffffffffffffffffffff16612316565b67ffffffffffffffff16600003611d34577f00000000000000000000000000000000000000000000000000000000000000009150611d56565b611d4f611d42600186612a92565b865463ffffffff166123bc565b6001015491505b5083611d77565b84600101549150611d74846001611d429190612ac3565b90505b818989604051611d88929190612af7565b604051809103902014611dc7576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611e2d9493929190612b50565b6020604051808303816000875af1158015611e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7091906127be565b600284810154929091149250600091611f1b906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fb7886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fc19190612b82565b611fcb9190612893565b67ffffffffffffffff161590508115158103612013576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060612086610f7b565b9050909192565b60008061211a847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361218557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156121af578061219981612ba3565b91506121a89050600a83612bdb565b9150612189565b60008167ffffffffffffffff8111156121ca576121ca612930565b6040519080825280601f01601f1916602001820160405280156121f4576020820181803683370190505b5090505b841561227757612209600183612835565b9150612216600a86612bef565b61222190603061284c565b60f81b818381518110612236576122366127d7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612270600a86612bdb565b94506121f8565b949350505050565b606060006122b684367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900361284c565b90508267ffffffffffffffff1667ffffffffffffffff8111156122db576122db612930565b6040519080825280601f01601f191660200182016040528015612305576020820181803683370190505b509150828160208401375092915050565b6000806123a3837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806123da846fffffffffffffffffffffffffffffffff16612459565b9050600283815481106123ef576123ef6127d7565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461245257815460028054909163ffffffff1690811061243d5761243d6127d7565b90600052602060002090600302019150612400565b5092915050565b600081196001830116816124ed827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b60006020828403121561251757600080fd5b5035919050565b6000806040838503121561253157600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106125aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156125cb5781810151838201526020016125b3565b838111156108985750506000910152565b600081518084526125f48160208601602086016125b0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061263960208301846125dc565b9392505050565b8035801515811461265057600080fd5b919050565b60008060006060848603121561266a57600080fd5b833592506020840135915061268160408501612640565b90509250925092565b60008083601f84011261269c57600080fd5b50813567ffffffffffffffff8111156126b457600080fd5b6020830191508360208285010111156126cc57600080fd5b9250929050565b600080600080600080608087890312156126ec57600080fd5b863595506126fc60208801612640565b9450604087013567ffffffffffffffff8082111561271957600080fd5b6127258a838b0161268a565b9096509450606089013591508082111561273e57600080fd5b5061274b89828a0161268a565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061277f60608301846125dc565b95945050505050565b60006020828403121561279a57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461263957600080fd5b6000602082840312156127d057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561284757612847612806565b500390565b6000821982111561285f5761285f612806565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806128ae576128ae612864565b92169190910692915050565b600084516128cc8184602089016125b0565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612908816001850160208a016125b0565b600192019182015283516129238160028401602088016125b0565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461265057600080fd5b60006060828403121561299157600080fd5b6040516060810181811067ffffffffffffffff821117156129db577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526129ee6020840161295f565b60208201526129ff6040840161295f565b60408201529392505050565b600060408284031215612a1d57600080fd5b6040516040810167ffffffffffffffff8282108183111715612a68577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405284518352602085015191508082168214612a8557600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612abb57612abb612806565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612aee57612aee612806565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612b64604083018688612b07565b8281036020840152612b77818587612b07565b979650505050505050565b600067ffffffffffffffff83811690831681811015612abb57612abb612806565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bd457612bd4612806565b5060010190565b600082612bea57612bea612864565b500490565b600082612bfe57612bfe612864565b50069056fea164736f6c634300080f000a"
var FaultDisputeGameDeployedBin = "0x6080604052600436106101b75760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c14610627578063cf09e0d01461068b578063d8cc1a3c146106aa578063fa24f743146106ca57600080fd5b8063c0c3a092146105ac578063c31b29ce146105e0578063c55cd0c71461061457600080fd5b80638b85902b116100c65780638b85902b146104df578063929312981461051f578063bbdc02db14610553578063bcef3b551461056f57600080fd5b80636361506d1461049f5780638129fc1c146104b55780638980e0cc146104ca57600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d50146103c557806355ef20e6146103e7578063609d333414610477578063632247ea1461048c57600080fd5b8063363cc427146102fe5780634778efe81461035d578063529184c91461039157600080fd5b80632810e1d6116101955780632810e1d61461025c578063298c9005146102715780633218b99d146102b157806335fef567146102eb57600080fd5b80631e27052a146101bc578063200d2ed2146101de578063266198f91461021a575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612536565b6106ee565b005b3480156101ea57600080fd5b506000546102049068010000000000000000900460ff1681565b6040516102119190612587565b60405180910390f35b34801561022657600080fd5b5061024e7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610211565b34801561026857600080fd5b50610204610ab6565b34801561027d57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036040013561024e565b3480156102bd57600080fd5b506000546102d29067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610211565b6101dc6102f9366004612536565b610edc565b34801561030a57600080fd5b50600054610338906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610211565b34801561036957600080fd5b5061024e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039d57600080fd5b506103387f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d157600080fd5b506103da610eec565b604051610211919061263e565b3480156103f357600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104699182565b604051610211929190612658565b34801561048357600080fd5b506103da610f8f565b6101dc61049a3660046126c1565b610f9d565b3480156104ab57600080fd5b5061024e60015481565b3480156104c157600080fd5b506101dc611582565b3480156104d657600080fd5b5060025461024e565b3480156104eb57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013561024e565b34801561052b57600080fd5b506103387f000000000000000000000000000000000000000000000000000000000000000081565b34801561055f57600080fd5b5060405160008152602001610211565b34801561057b57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033561024e565b3480156105b857600080fd5b506103387f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ec57600080fd5b506102d27f000000000000000000000000000000000000000000000000000000000000000081565b6101dc610622366004612536565b611adf565b34801561063357600080fd5b506106476106423660046126f6565b611aeb565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610211565b34801561069757600080fd5b5060005467ffffffffffffffff166102d2565b3480156106b657600080fd5b506101dc6106c5366004612758565b611b5c565b3480156106d657600080fd5b506106df612080565b604051610211939291906127e2565b6000805468010000000000000000900460ff16600281111561071257610712612558565b14610749576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da919061280d565b905082600103610895576001546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084015b6020604051808303816000875af115801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f9190612843565b50505050565b8260020361090657600480546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081529182018590526024820152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f9060840161084c565b8260030361097a576006546040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152602060448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f9060840161084c565b82600403610a25576003546040517f9a1f5e7f0000000000000000000000000000000000000000000000000000000081526004810185905270010000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f9060840161084c565b82600503610ab1576040517f9a1f5e7f000000000000000000000000000000000000000000000000000000008152600481018490524660c01b6024820152600860448201526064810183905273ffffffffffffffffffffffffffffffffffffffff821690639a1f5e7f906084016020604051808303816000875af115801561086b573d6000803e3d6000fd5b505050565b60008060005468010000000000000000900460ff166002811115610adc57610adc612558565b14610b13576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610b259060019061288b565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff811015610c0f57600060028281548110610b5f57610b5f6128a2565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff6401000000009091041615610bb05750610b3a565b6002810154600090610bf4906fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000006120be565b905083811015610c08578093508260010194505b5050610b3a565b50600060028381548110610c2557610c256128a2565b600091825260208220600390910201805490925063ffffffff90811691908214610c8f5760028281548110610c5c57610c5c6128a2565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610cbb565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610cff67ffffffffffffffff83164261288b565b610d1b836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610d2f91906128d1565b11610d66576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610e08906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610e129190612918565b67ffffffffffffffff16158015610e3957506fffffffffffffffffffffffffffffffff8414155b15610e475760029550610e4c565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610e9157610e91612558565b021790556002811115610ea657610ea6612558565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610ee882826000610f9d565b5050565b6060610f177f0000000000000000000000000000000000000000000000000000000000000000612173565b610f407f0000000000000000000000000000000000000000000000000000000000000000612173565b610f697f0000000000000000000000000000000000000000000000000000000000000000612173565b604051602001610f7b9392919061293f565b604051602081830303815290604052905090565b6060610ed7602060406122b0565b6000805468010000000000000000900460ff166002811115610fc157610fc1612558565b14610ff8576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015611004575080155b1561103b576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110611050576110506128a2565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff808216606085015270010000000000000000000000000000000090910416608083015282549193509190869081106110eb576110eb6128a2565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151611155906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000611214826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115611256576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff908116146112b6576002836000015163ffffffff1681548110611285576112856128a2565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff16426112ef846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661130391906128d1565b61130d919061288b565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115611380576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b4217905060006113a1888660009182526020526040902090565b60008181526007602052604090205490915060ff16156113ed576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581528184018e81526fffffffffffffffffffffffffffffffff808d16606085019081528a8216608086019081526002805497880181558a52945160039096027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805495511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909616979099169690961793909317909655517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8401555190518416700100000000000000000000000000000000029316929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0909201919091555133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016116077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061173060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161174e91815260200190565b602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190612843565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576117da60018561288b565b6040518263ffffffff1660e01b81526004016117f891815260200190565b606060405180830381865afa158015611815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118399190612a04565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156118ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ee9190612a04565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161197a91815260200190565b6040805180830381865afa158015611996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ba9190612a90565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff1611611a19576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252908190810180611a3460018961288b565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610ee882826001610f9d565b60028181548110611afb57600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff166002811115611b8057611b80612558565b14611bb7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611bcc57611bcc6128a2565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611c2b7f000000000000000000000000000000000000000000000000000000000000000060016128d1565b611cc7826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611d08576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611d8e57611d2c836fffffffffffffffffffffffffffffffff16612347565b67ffffffffffffffff16600003611d65577f00000000000000000000000000000000000000000000000000000000000000009150611d87565b611d80611d73600186612b17565b865463ffffffff166123ed565b6001015491505b5083611da8565b84600101549150611da5846001611d739190612b48565b90505b818989604051611db9929190612b7c565b604051809103902014611df8576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611e5e9493929190612bd5565b6020604051808303816000875af1158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea19190612843565b600284810154929091149250600091611f4c906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611fe8886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611ff29190612c07565b611ffc9190612918565b67ffffffffffffffff161590508115158103612044576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560606120b7610f8f565b9050909192565b60008061214b847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b6060816000036121b657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156121e057806121ca81612c28565b91506121d99050600a83612c60565b91506121ba565b60008167ffffffffffffffff8111156121fb576121fb6129b5565b6040519080825280601f01601f191660200182016040528015612225576020820181803683370190505b5090505b84156122a85761223a60018361288b565b9150612247600a86612c74565b6122529060306128d1565b60f81b818381518110612267576122676128a2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506122a1600a86612c60565b9450612229565b949350505050565b606060006122e784367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036128d1565b90508267ffffffffffffffff1667ffffffffffffffff81111561230c5761230c6129b5565b6040519080825280601f01601f191660200182016040528015612336576020820181803683370190505b509150828160208401375092915050565b6000806123d4837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b60008061240b846fffffffffffffffffffffffffffffffff1661248a565b905060028381548110612420576124206128a2565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461248357815460028054909163ffffffff1690811061246e5761246e6128a2565b90600052602060002090600302019150612431565b5092915050565b6000811960018301168161251e827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b6000806040838503121561254957600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106125c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156125e35781810151838201526020016125cb565b8381111561088f5750506000910152565b6000815180845261260c8160208601602086016125c8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061265160208301846125f4565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c08101612651565b803580151581146126bc57600080fd5b919050565b6000806000606084860312156126d657600080fd5b83359250602084013591506126ed604085016126ac565b90509250925092565b60006020828403121561270857600080fd5b5035919050565b60008083601f84011261272157600080fd5b50813567ffffffffffffffff81111561273957600080fd5b60208301915083602082850101111561275157600080fd5b9250929050565b6000806000806000806080878903121561277157600080fd5b86359550612781602088016126ac565b9450604087013567ffffffffffffffff8082111561279e57600080fd5b6127aa8a838b0161270f565b909650945060608901359150808211156127c357600080fd5b506127d089828a0161270f565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061280460608301846125f4565b95945050505050565b60006020828403121561281f57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461265157600080fd5b60006020828403121561285557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561289d5761289d61285c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156128e4576128e461285c565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff80841680612933576129336128e9565b92169190910692915050565b600084516129518184602089016125c8565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161298d816001850160208a016125c8565b600192019182015283516129a88160028401602088016125c8565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146126bc57600080fd5b600060608284031215612a1657600080fd5b6040516060810181811067ffffffffffffffff82111715612a60577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612a73602084016129e4565b6020820152612a84604084016129e4565b60408201529392505050565b600060408284031215612aa257600080fd5b6040516040810167ffffffffffffffff8282108183111715612aed577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405284518352602085015191508082168214612b0a57600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612b4057612b4061285c565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612b7357612b7361285c565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612be9604083018688612b8c565b8281036020840152612bfc818587612b8c565b979650505050505050565b600067ffffffffffffffff83811690831681811015612b4057612b4061285c565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c5957612c5961285c565b5060010190565b600082612c6f57612c6f6128e9565b500490565b600082612c8357612c836128e9565b50069056fea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(FaultDisputeGameStorageLayoutJSON), FaultDisputeGameStorageLayout); err != nil {
......
......@@ -73,7 +73,7 @@ func deployDisputeGameContracts(require *require.Assertions, ctx context.Context
big.NewInt(alphabetGameDepth),
gameDuration,
alphaVMAddr,
config.L1Deployments.L2OutputOracle,
config.L1Deployments.L2OutputOracleProxy,
blockHashOracleAddr,
)
require.NoError(err)
......
......@@ -16,7 +16,7 @@ AssetReceiverTest:test_withdrawETHwithAmount_unauthorized_reverts() (gas: 10738)
AttestationStationTest:test_attest_bulk_succeeds() (gas: 703740)
AttestationStationTest:test_attest_individual_succeeds() (gas: 632078)
AttestationStationTest:test_attest_single_succeeds() (gas: 651316)
BlockOracle_Test:test_checkpointAndLoad_succeeds() (gas: 51477)
BlockOracle_Test:test_checkpointAndLoad_succeeds() (gas: 51465)
BlockOracle_Test:test_load_noBlockHash_reverts() (gas: 12805)
Bytes_slice_Test:test_slice_acrossMultipleWords_works() (gas: 9413)
Bytes_slice_Test:test_slice_acrossWords_works() (gas: 1430)
......@@ -87,37 +87,37 @@ FaucetTest:test_nonAdmin_drip_fails() (gas: 262520)
FaucetTest:test_receive_succeeds() (gas: 17401)
FaucetTest:test_withdraw_nonAdmin_reverts() (gas: 13145)
FaucetTest:test_withdraw_succeeds() (gas: 78359)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot1:test_resolvesCorrectly_succeeds() (gas: 498866)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 505608)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 502343)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot4:test_resolvesCorrectly_succeeds() (gas: 505550)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot5:test_resolvesCorrectly_succeeds() (gas: 504839)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot1:test_resolvesCorrectly_succeeds() (gas: 497631)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 504373)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 501108)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot4:test_resolvesCorrectly_succeeds() (gas: 502315)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot5:test_resolvesCorrectly_succeeds() (gas: 501604)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot1:test_resolvesCorrectly_succeeds() (gas: 498844)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 505718)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 502387)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot4:test_resolvesCorrectly_succeeds() (gas: 505594)
FaultDisputeGame_ResolvesCorrectly_CorrectRoot5:test_resolvesCorrectly_succeeds() (gas: 504883)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot1:test_resolvesCorrectly_succeeds() (gas: 497609)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot2:test_resolvesCorrectly_succeeds() (gas: 504483)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot3:test_resolvesCorrectly_succeeds() (gas: 501152)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot4:test_resolvesCorrectly_succeeds() (gas: 502359)
FaultDisputeGame_ResolvesCorrectly_IncorrectRoot5:test_resolvesCorrectly_succeeds() (gas: 501648)
FaultDisputeGame_Test:test_extraData_succeeds() (gas: 32354)
FaultDisputeGame_Test:test_gameData_succeeds() (gas: 32806)
FaultDisputeGame_Test:test_gameStart_succeeds() (gas: 10410)
FaultDisputeGame_Test:test_gameStart_succeeds() (gas: 10388)
FaultDisputeGame_Test:test_gameType_succeeds() (gas: 8266)
FaultDisputeGame_Test:test_initialize_correctData_succeeds() (gas: 58226)
FaultDisputeGame_Test:test_initialize_correctData_succeeds() (gas: 57716)
FaultDisputeGame_Test:test_initialize_firstOutput_reverts() (gas: 210532)
FaultDisputeGame_Test:test_initialize_l1HeadTooOld_reverts() (gas: 228357)
FaultDisputeGame_Test:test_initialize_l1HeadTooOld_reverts() (gas: 228402)
FaultDisputeGame_Test:test_move_clockCorrectness_succeeds() (gas: 415921)
FaultDisputeGame_Test:test_move_clockTimeExceeded_reverts() (gas: 26428)
FaultDisputeGame_Test:test_move_defendRoot_reverts() (gas: 13322)
FaultDisputeGame_Test:test_move_defendRoot_reverts() (gas: 13388)
FaultDisputeGame_Test:test_move_duplicateClaim_reverts() (gas: 103377)
FaultDisputeGame_Test:test_move_gameDepthExceeded_reverts() (gas: 408316)
FaultDisputeGame_Test:test_move_gameNotInProgress_reverts() (gas: 11046)
FaultDisputeGame_Test:test_move_nonExistentParent_reverts() (gas: 24623)
FaultDisputeGame_Test:test_move_gameDepthExceeded_reverts() (gas: 408294)
FaultDisputeGame_Test:test_move_gameNotInProgress_reverts() (gas: 11024)
FaultDisputeGame_Test:test_move_nonExistentParent_reverts() (gas: 24689)
FaultDisputeGame_Test:test_move_simpleAttack_succeeds() (gas: 107300)
FaultDisputeGame_Test:test_resolve_challengeContested_succeeds() (gas: 224847)
FaultDisputeGame_Test:test_resolve_notInProgress_reverts() (gas: 9686)
FaultDisputeGame_Test:test_resolve_rootContested_succeeds() (gas: 109882)
FaultDisputeGame_Test:test_resolve_rootUncontestedClockNotExpired_succeeds() (gas: 21465)
FaultDisputeGame_Test:test_resolve_rootUncontested_succeeds() (gas: 27322)
FaultDisputeGame_Test:test_resolve_teamDeathmatch_succeeds() (gas: 395519)
FaultDisputeGame_Test:test_resolve_challengeContested_succeeds() (gas: 224869)
FaultDisputeGame_Test:test_resolve_notInProgress_reverts() (gas: 9664)
FaultDisputeGame_Test:test_resolve_rootContested_succeeds() (gas: 109838)
FaultDisputeGame_Test:test_resolve_rootUncontestedClockNotExpired_succeeds() (gas: 21443)
FaultDisputeGame_Test:test_resolve_rootUncontested_succeeds() (gas: 27278)
FaultDisputeGame_Test:test_resolve_teamDeathmatch_succeeds() (gas: 395607)
FaultDisputeGame_Test:test_rootClaim_succeeds() (gas: 8253)
FeeVault_Test:test_constructor_succeeds() (gas: 18185)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 352113)
......
......@@ -32,8 +32,9 @@ contract BlockOracle {
// SAFETY: This block hash will always be accessible by the `BLOCKHASH` opcode,
// and in the case of `block.number = 0`, we'll underflow.
// Persist the block information.
blockNumber_ = block.number - 1;
blocks[blockNumber_] = BlockInfo({
hash: Hash.wrap(blockhash(blockNumber_ = block.number - 1)),
hash: Hash.wrap(blockhash(blockNumber_)),
childTimestamp: Timestamp.wrap(uint64(block.timestamp))
});
}
......
......@@ -67,7 +67,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
/// @notice The starting and disputed output proposal for the game. Includes information about
/// the output indexes in the `L2OutputOracle` and the output roots at the time of
/// game creation.
OutputProposal[2] public proposals;
OutputProposals public proposals;
/// @notice An internal mapping to allow for constant-time lookups of existing claims.
mapping(ClaimHash => bool) internal claims;
......@@ -281,18 +281,21 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
if (_ident == 1) {
// Load the L1 head hash into the game's local context in the preimage oracle.
oracle.loadLocalData(_ident, Hash.unwrap(l1Head), 32, _partOffset);
} else if (_ident < 4) {
// Grab the index of the proposal to load at the given ident.
// Ident 2 loads the starting output root, and ident 3 loads the disputed output root.
uint256 proposal;
assembly {
proposal := iszero(mod(_ident, 2))
}
} else if (_ident == 2) {
// Load the starting or disputed output root into the game's local context in the
// preimage oracle.
oracle.loadLocalData(
_ident,
Hash.unwrap(proposals.starting.outputRoot),
32,
_partOffset
);
} else if (_ident == 3) {
// Load the starting or disputed output root into the game's local context in the
// preimage oracle.
oracle.loadLocalData(
_ident,
Hash.unwrap(proposals[proposal].outputRoot),
Hash.unwrap(proposals.disputed.outputRoot),
32,
_partOffset
);
......@@ -302,7 +305,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// of the passed word.
oracle.loadLocalData(
_ident,
bytes32(uint256(proposals[0].l2BlockNumber) << 192),
bytes32(uint256(proposals.starting.l2BlockNumber) << 192),
8,
_partOffset
);
......@@ -496,15 +499,17 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// for loading local data into the preimage oracle as well as to authenticate the game's
// resolution. If the disputed output has changed in the oracle, the game cannot be
// resolved.
proposals[0] = OutputProposal({
index: uint128(proposalIdx - 1),
l2BlockNumber: starting.l2BlockNumber,
outputRoot: Hash.wrap(starting.outputRoot)
});
proposals[1] = OutputProposal({
index: uint128(proposalIdx),
l2BlockNumber: disputed.l2BlockNumber,
outputRoot: Hash.wrap(disputed.outputRoot)
proposals = OutputProposals({
starting: OutputProposal({
index: uint128(proposalIdx - 1),
l2BlockNumber: starting.l2BlockNumber,
outputRoot: Hash.wrap(starting.outputRoot)
}),
disputed: OutputProposal({
index: uint128(proposalIdx),
l2BlockNumber: disputed.l2BlockNumber,
outputRoot: Hash.wrap(disputed.outputRoot)
})
});
// Persist the L1 head hash of the L1 block number provided.
......
......@@ -26,6 +26,12 @@ interface IFaultDisputeGame is IDisputeGame {
Hash outputRoot;
}
/// @notice A container for two consecutive `OutputProposal`s.
struct OutputProposals {
OutputProposal starting;
OutputProposal disputed;
}
/// @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 claim The claim being added
......
......@@ -148,17 +148,16 @@ contract FaultDisputeGame_Test is FaultDisputeGame_Init {
/// @dev Tests that the game is initialized with the correct data.
function test_initialize_correctData_succeeds() public {
// Starting
(uint128 index, uint128 l2BlockNumber, Hash outputRoot) = gameProxy.proposals(0);
Types.OutputProposal memory starting = oracle.getL2Output(index);
assertEq(index, 0);
assertEq(l2BlockNumber, starting.l2BlockNumber);
assertEq(Hash.unwrap(outputRoot), starting.outputRoot);
(FaultDisputeGame.OutputProposal memory startingProp, FaultDisputeGame.OutputProposal memory disputedProp) = gameProxy.proposals();
Types.OutputProposal memory starting = oracle.getL2Output(startingProp.index);
assertEq(startingProp.index, 0);
assertEq(startingProp.l2BlockNumber, starting.l2BlockNumber);
assertEq(Hash.unwrap(startingProp.outputRoot), starting.outputRoot);
// Disputed
(uint128 _index, uint128 _l2BlockNumber, Hash _outputRoot) = gameProxy.proposals(1);
Types.OutputProposal memory disputed = oracle.getL2Output(_index);
assertEq(_index, 1);
assertEq(_l2BlockNumber, disputed.l2BlockNumber);
assertEq(Hash.unwrap(_outputRoot), disputed.outputRoot);
Types.OutputProposal memory disputed = oracle.getL2Output(disputedProp.index);
assertEq(disputedProp.index, 1);
assertEq(disputedProp.l2BlockNumber, disputed.l2BlockNumber);
assertEq(Hash.unwrap(disputedProp.outputRoot), disputed.outputRoot);
// L1 head
(, uint256 l1HeadNumber) = abi.decode(gameProxy.extraData(), (uint256, uint256));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment