@cartesi/arbitration
Version:
Arbitration DLib
652 lines • 205 kB
JSON
{
"contractName": "ComputeInstantiator",
"sourceName": "contracts/ComputeInstantiator.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_vgInstantiatorAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "ChallengeStarted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_claimedFinalHash",
"type": "bytes32"
}
],
"name": "ClaimSubmitted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "_challenger",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "_machineAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_finalTime",
"type": "uint256"
}
],
"name": "ComputeCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "_state",
"type": "uint8"
}
],
"name": "ComputeFinished",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "ResultConfirmed",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "challenge",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "claimVictoryByTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "confirm",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currentIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getCurrentState",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_timeToStartMachine",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_partitionSize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maxCycle",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_picoSecondsToRunInsn",
"type": "uint256"
}
],
"name": "getMaxInstanceDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "currentNonce",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getState",
"outputs": [
{
"internalType": "address",
"name": "_challenger",
"type": "address"
},
{
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"internalType": "uint256",
"name": "_deadline",
"type": "uint256"
},
{
"internalType": "address",
"name": "_machine",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_finalTime",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_claimedFinalHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_currentState",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getSubInstances",
"outputs": [
{
"internalType": "address[]",
"name": "_addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "_indices",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_challenger",
"type": "address"
},
{
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"internalType": "address",
"name": "_machineAddress",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_finalTime",
"type": "uint256"
}
],
"name": "instantiate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "isConcerned",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsChallengerWon",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsClaimerMissedDeadline",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsClaimerWon",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsConsensusResult",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingChallange",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingClaim",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingConfirmation",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_claimedFinalHash",
"type": "bytes32"
}
],
"name": "submitClaim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "winByVG",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040526000805534801561001457600080fd5b50604051611fe0380380611fe08339818101604052602081101561003757600080fd5b5051600380546001600160a01b0319166001600160a01b03909216919091179055611f79806100676000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063a0c222b4116100b8578063c19e71c31161007c578063c19e71c3146103a0578063c526656c146103ea578063ce73b628146104af578063d0a068cf146104cc578063ded4df63146104e9578063e174b3bf1461050657610137565b8063a0c222b414610307578063a20d952b1461032c578063a2dc797314610349578063ab82d9a014610366578063ba0179b51461038357610137565b80635748c130116100ff5780635748c130146102055780636547429e146102225780636c092edd1461023f57806373df16121461025c57806382afd23b146102ea57610137565b806301ff62ab1461013c57806326987b601461017c578063370f31aa14610196578063388e43be146101cb5780633d46b819146101e8575b600080fd5b6101686004803603604081101561015257600080fd5b50803590602001356001600160a01b0316610523565b604080519115158252519081900360200190f35b61018461056e565b60408051918252519081900360200190f35b610184600480360360a08110156101ac57600080fd5b5080359060208101359060408101359060608101359060800135610574565b610168600480360360208110156101e157600080fd5b50356105bc565b610184600480360360208110156101fe57600080fd5b5035610630565b6101846004803603602081101561021b57600080fd5b50356106d6565b6101686004803603602081101561023857600080fd5b503561092c565b6101686004803603602081101561025557600080fd5b503561097a565b6102886004803603604081101561027257600080fd5b50803590602001356001600160a01b03166109c8565b60405180896001600160a01b03168152602001886001600160a01b03168152602001878152602001866001600160a01b031681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b6101686004803603602081101561030057600080fd5b5035610d30565b61032a6004803603604081101561031d57600080fd5b5080359060200135610d45565b005b6101686004803603602081101561034257600080fd5b5035610ee3565b61032a6004803603602081101561035f57600080fd5b5035610f31565b61032a6004803603602081101561037c57600080fd5b5035611199565b61032a6004803603602081101561039957600080fd5b50356113f0565b610184600480360360c08110156103b657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359091169060808101359060a00135611570565b6104166004803603604081101561040057600080fd5b50803590602001356001600160a01b03166116d8565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045a578181015183820152602001610442565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610499578181015183820152602001610481565b5050505090500194505050505060405180910390f35b610168600480360360208110156104c557600080fd5b50356117cd565b610168600480360360208110156104e257600080fd5b503561181b565b61032a600480360360208110156104ff57600080fd5b5035611869565b6101686004803603602081101561051c57600080fd5b5035611a90565b6000828152600460205260408120546001600160a01b038381169116148061056757506000838152600460205260409020600101546001600160a01b038381169116145b9392505050565b60005481565b60008061058660008888888888611ade565b9050600061059960018989898989611ade565b905060006105ac60038a8a8a8a8a611ade565b9190920101979650505050505050565b6000818060005411610603576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60015b60008481526004602052604090206009015460ff16600681111561062657fe5b1491505b50919050565b6000818060005411610677576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b61068081610d30565b6106c2576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b600081806000541161071d576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60008381526004602052604081206009015460ff16600681111561073d57fe5b141561075a576b57616974696e67436c61696d60a01b915061062a565b600160008481526004602052604090206009015460ff16600681111561077c57fe5b14156107a057722bb0b4ba34b733a1b7b73334b936b0ba34b7b760691b915061062a565b600260008481526004602052604090206009015460ff1660068111156107c257fe5b14156107e85774436c61696d65724d6973736564446561646c696e6560581b915061062a565b600360008481526004602052604090206009015460ff16600681111561080a57fe5b141561082b576f57616974696e674368616c6c656e676560801b915061062a565b600460008481526004602052604090206009015460ff16600681111561084d57fe5b141561086b576c21b430b63632b733b2b92bb7b760991b915061062a565b600560008481526004602052604090206009015460ff16600681111561088d57fe5b14156108a8576921b630b4b6b2b92bb7b760b11b915061062a565b600660008481526004602052604090206009015460ff1660068111156108ca57fe5b14156108ea576e10dbdb9cd95b9cdd5cd4995cdd5b1d608a1b915061062a565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b6000818060005411610973576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6004610606565b60008180600054116109c1576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6002610606565b6000806000806000806000806109dc611e01565b60008b81526004602081815260409283902083516101408101855281546001600160a01b03908116825260018301548116938201939093526002820154948101949094526003810154606085015291820154166080830152600581015460a083015260068082015460c0840152600782015460e08401526008820154610100840152600982015461012084019160ff90911690811115610a7857fe5b6006811115610a8357fe5b90525090506001806000808461012001516006811115610a9f57fe5b1415610ab757506b57616974696e67436c61696d60a01b5b60018461012001516006811115610aca57fe5b1415610ae95750722bb0b4ba34b733a1b7b73334b936b0ba34b7b760691b5b60028461012001516006811115610afc57fe5b1415610b1d575074436c61696d65724d6973736564446561646c696e6560581b5b60038461012001516006811115610b3057fe5b1415610c49575060035461010084015160408051630c91927b60e01b81526004810192909252516f57616974696e674368616c6c656e676560801b926001600160a01b031691630c91927b916024808301926020929190829003018186803b158015610b9b57600080fd5b505afa158015610baf573d6000803e3d6000fd5b505050506040513d6020811015610bc557600080fd5b505160035461010086015160408051622231c360e11b81526004810192909252519295506001600160a01b03909116916244638691602480820192602092909190829003018186803b158015610c1a57600080fd5b505afa158015610c2e573d6000803e3d6000fd5b505050506040513d6020811015610c4457600080fd5b505191505b60048461012001516006811115610c5c57fe5b1415610c7557506c21b430b63632b733b2b92bb7b760991b5b60058461012001516006811115610c8857fe5b1415610c9e57506921b630b4b6b2b92bb7b760b11b5b60068461012001516006811115610cb157fe5b1415610ccc57506e10dbdb9cd95b9cdd5cd4995cdd5b1d608a1b5b83600001518460200151610cf486610120015187604001516028888a60c001516101f4611ade565b86606001510186608001518760a001518860c001518960e00151879b509b509b509b509b509b509b509b50505050509295985092959890939650565b60009081526001602052604090205460ff1690565b818060005411610d8a576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000838152600460205260409020600101546001600160a01b0316338114610df4576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600084815260026020526040812080546001019055849060008681526004602052604090206009015460ff166006811115610e2b57fe5b14610e7d576040805162461bcd60e51b815260206004820152601c60248201527f53746174652073686f756c642062652057616974696e67436c61696d00000000604482015290519081900360640190fd5b60008581526004602090815260409182902060078101879055600901805460ff19166001179055815187815290810186905281517f1e9358f673ff367487ce56f136412ae5b69bf2c06e223aad2756d748c2a9b52a929181900390910190a15050505050565b6000818060005411610f2a576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000610606565b808060005411610f76576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60008281526002602081815260408084208054600190810190915560049092528320600981015492810154600690910154869493610fc19360ff9091169291602891906101f4611ade565b6000858152600460205260409020600301540142119050806110145760405162461bcd60e51b815260040180806020018281038252602c815260200180611e77602c913960400191505060405180910390fd5b6000848152600460205260409020546001600160a01b031633148015611057575060008481526004602052604081206009015460ff16600681111561105557fe5b145b156110ed57600084815260046020526040902060090180546002919060ff19166001835b021790555061108984611c39565b6000848152600460205260409020600901547fce5d57dc06bffee515dc9f8ca3a267203dbbe503f6bfad687a7120d00756913e90859060ff1660068111156110cd57fe5b6040805192835260ff90911660208301528051918290030190a150611194565b6000848152600460205260409020600101546001600160a01b0316331480156111355750600160008581526004602052604090206009015460ff16600681111561113357fe5b145b1561115d57600084815260046020526040902060090180546006919060ff191660018361107b565b60405162461bcd60e51b815260040180806020018281038252602f815260200180611ef5602f913960400191505060405180910390fd5b505050565b8080600054116111de576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000828152600460205260409020546001600160a01b0316338114611245576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040902080546001908101909155839060008581526004602052604090206009015460ff16600681111561127f57fe5b146112bb5760405162461bcd60e51b8152600401808060200182810382526023815260200180611e546023913960400191505060405180910390fd5b60035460008581526004602081815260408084208054600182015460028301548387015460058501546007860154600690960154875163020b738760e41b81526001600160a01b039687169a81019a909a5293851660248a0152604489019290925283166064880152608487015260a486019290925260c485019190915290519416936320b738709360e4808501948390030190829087803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b505050506040513d602081101561138a57600080fd5b50516000858152600460205260409020600881019190915560090180546003919060ff191660018302179055506040805185815290517fa895da4b794aeba8d8082db237265459db7b7ffdb5aa7c2332a7c5eafbfae7359181900360200190a150505050565b808060005411611435576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000828152600460205260409020546001600160a01b031633811461149c576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040902080546001908101909155839060008581526004602052604090206009015460ff1660068111156114d657fe5b146115125760405162461bcd60e51b8152600401808060200182810382526023815260200180611e546023913960400191505060405180910390fd5b6000848152600460205260409020600901805460ff1916600617905561153784611c5c565b6040805185815290517fa832892b4543448b594422a93bf38c889d54ae5938a065c6ec5f4636161f522a9181900360200190a150505050565b6000856001600160a01b0316876001600160a01b031614156115c35760405162461bcd60e51b8152600401808060200182810382526025815260200180611ed06025913960400191505060405180910390fd5b600080548152600460208190526040822080546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018b90559383018054918a16919092161790556005810186905560068101859055600981018054919392909160ff191690830217905550426003820155600054604080519182526001600160a01b03808b166020840152808a1683830152606083018990528716608083015260a0820186905260c08201859052517f9f53c9493351536908d5efd56da31dfb5a53a510ac3e216afe64af077b558d509181900360e00190a150506000805481526001602081905260408220805460ff19168217905581549081019091555b9695505050505050565b6060808080600360008781526004602052604090206009015460ff1660068111156116ff57fe5b14156117a95760408051600180825281830190925290602080830190803683375050604080516001808252818301909252929450905060208083019080368337505060035484519293506001600160a01b03169184915060009061175f57fe5b6001600160a01b0390921660209283029190910182015260008781526004909152604081206008015482519091839161179457fe5b602090810291909101015290925090506117c6565b505060408051600080825260208201908152818301909252925090505b9250929050565b6000818060005411611814576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6003610606565b6000818060005411611862576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6005610606565b8080600054116118ae576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60008281526002602052604090208054600101905581600360008481526004602052604090206009015460ff1660068111156118e657fe5b146119225760405162461bcd60e51b815260040180806020018281038252602d815260200180611ea3602d913960400191505060405180910390fd5b60008381526004602081815260409283902060080154600354845163b6b5c31960e01b8152938401829052935190936001600160a01b03169263b6b5c319926024808301939192829003018186803b15801561197d57600080fd5b505afa158015611991573d6000803e3d6000fd5b505050506040513d60208110156119a757600080fd5b5051156119bd576119b784611cbd565b50611194565b60035460408051633664f8bf60e11b81526004810184905290516001600160a01b0390921691636cc9f17e91602480820192602092909190829003018186803b158015611a0957600080fd5b505afa158015611a1d573d6000803e3d6000fd5b505050506040513d6020811015611a3357600080fd5b505115611a43576119b784611d90565b6040805162461bcd60e51b815260206004820152601860248201527f5374617465206f66205647206973206e6f742066696e616c0000000000000000604482015290519081900360640190fd5b6000818060005411611ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6006610606565b600080876006811115611aed57fe5b1415611b09578564e8d4a510008484025b0486010190506116ce565b6001876006811115611b1757fe5b1415611b2c578564e8d4a51000848402611afe565b6003876006811115611b3a57fe5b1415611bdb5760035460408051631b8798d560e11b81526004810189905260248101889052604481018790526064810186905260848101859052905188926001600160a01b03169163370f31aa9160a4808301926020929190829003018186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d6020811015611bd157600080fd5b50510190506116ce565b6005876006811115611be957fe5b1480611c0057506004876006811115611bfe57fe5b145b80611c1657506002876006811115611c1457fe5b145b80611c2c57506006876006811115611c2a57fe5b145b156116ce575060006116ce565b6000908152600160209081526040808320805460ff191690556002909152812055565b6000818152600460208190526040822080546001600160a01b031990811682556001820180548216905560028201849055600382018490559181018054909216909155600581018290556006810182905560080155611cba81611c39565b50565b808060005411611d02576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b611d0b82611c5c565b6000828152600460208190526040909120600901805460ff19166001835b02179055506000828152600460205260409020600901547fce5d57dc06bffee515dc9f8ca3a267203dbbe503f6bfad687a7120d00756913e90839060ff166006811115611d7257fe5b6040805192835260ff90911660208301528051918290030190a15050565b808060005411611dd5576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b611dde82611c5c565b600082815260046020526040902060090180546005919060ff1916600183611d29565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052906101208201529056fe53746174652073686f756c642062652057616974696e67436f6e6669726d6174696f6e446561646c696e65206973206e6f74206f76657220666f7220746869732073706563696669632073746174655374617465206973206e6f742057616974696e674368616c6c656e67652c2063616e6e6f742077696e427956474368616c6c656e67657220616e6420436c61696d6572206e65656420746f206469666665724661696c20746f20436c61696d566963746f7279427954696d6520696e2063757272656e7420636f6e646974696f6e496e646578206e6f7420696e7374616e74696174656400000000000000000000a26469706673582212203fcba7868bcd1ad10e523b5fb225fd029d795d1e2d7ef79023a277abc5b5406664736f6c63430007040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063a0c222b4116100b8578063c19e71c31161007c578063c19e71c3146103a0578063c526656c146103ea578063ce73b628146104af578063d0a068cf146104cc578063ded4df63146104e9578063e174b3bf1461050657610137565b8063a0c222b414610307578063a20d952b1461032c578063a2dc797314610349578063ab82d9a014610366578063ba0179b51461038357610137565b80635748c130116100ff5780635748c130146102055780636547429e146102225780636c092edd1461023f57806373df16121461025c57806382afd23b146102ea57610137565b806301ff62ab1461013c57806326987b601461017c578063370f31aa14610196578063388e43be146101cb5780633d46b819146101e8575b600080fd5b6101686004803603604081101561015257600080fd5b50803590602001356001600160a01b0316610523565b604080519115158252519081900360200190f35b61018461056e565b60408051918252519081900360200190f35b610184600480360360a08110156101ac57600080fd5b5080359060208101359060408101359060608101359060800135610574565b610168600480360360208110156101e157600080fd5b50356105bc565b610184600480360360208110156101fe57600080fd5b5035610630565b6101846004803603602081101561021b57600080fd5b50356106d6565b6101686004803603602081101561023857600080fd5b503561092c565b6101686004803603602081101561025557600080fd5b503561097a565b6102886004803603604081101561027257600080fd5b50803590602001356001600160a01b03166109c8565b60405180896001600160a01b03168152602001886001600160a01b03168152602001878152602001866001600160a01b031681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b6101686004803603602081101561030057600080fd5b5035610d30565b61032a6004803603604081101561031d57600080fd5b5080359060200135610d45565b005b6101686004803603602081101561034257600080fd5b5035610ee3565b61032a6004803603602081101561035f57600080fd5b5035610f31565b61032a6004803603602081101561037c57600080fd5b5035611199565b61032a6004803603602081101561039957600080fd5b50356113f0565b610184600480360360c08110156103b657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359091169060808101359060a00135611570565b6104166004803603604081101561040057600080fd5b50803590602001356001600160a01b03166116d8565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045a578181015183820152602001610442565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610499578181015183820152602001610481565b5050505090500194505050505060405180910390f35b610168600480360360208110156104c557600080fd5b50356117cd565b610168600480360360208110156104e257600080fd5b503561181b565b61032a600480360360208110156104ff57600080fd5b5035611869565b6101686004803603602081101561051c57600080fd5b5035611a90565b6000828152600460205260408120546001600160a01b038381169116148061056757506000838152600460205260409020600101546001600160a01b038381169116145b9392505050565b60005481565b60008061058660008888888888611ade565b9050600061059960018989898989611ade565b905060006105ac60038a8a8a8a8a611ade565b9190920101979650505050505050565b6000818060005411610603576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60015b60008481526004602052604090206009015460ff16600681111561062657fe5b1491505b50919050565b6000818060005411610677576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b61068081610d30565b6106c2576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b600081806000541161071d576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60008381526004602052604081206009015460ff16600681111561073d57fe5b141561075a576b57616974696e67436c61696d60a01b915061062a565b600160008481526004602052604090206009015460ff16600681111561077c57fe5b14156107a057722bb0b4ba34b733a1b7b73334b936b0ba34b7b760691b915061062a565b600260008481526004602052604090206009015460ff1660068111156107c257fe5b14156107e85774436c61696d65724d6973736564446561646c696e6560581b915061062a565b600360008481526004602052604090206009015460ff16600681111561080a57fe5b141561082b576f57616974696e674368616c6c656e676560801b915061062a565b600460008481526004602052604090206009015460ff16600681111561084d57fe5b141561086b576c21b430b63632b733b2b92bb7b760991b915061062a565b600560008481526004602052604090206009015460ff16600681111561088d57fe5b14156108a8576921b630b4b6b2b92bb7b760b11b915061062a565b600660008481526004602052604090206009015460ff1660068111156108ca57fe5b14156108ea576e10dbdb9cd95b9cdd5cd4995cdd5b1d608a1b915061062a565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b6000818060005411610973576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6004610606565b60008180600054116109c1576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6002610606565b6000806000806000806000806109dc611e01565b60008b81526004602081815260409283902083516101408101855281546001600160a01b03908116825260018301548116938201939093526002820154948101949094526003810154606085015291820154166080830152600581015460a083015260068082015460c0840152600782015460e08401526008820154610100840152600982015461012084019160ff90911690811115610a7857fe5b6006811115610a8357fe5b90525090506001806000808461012001516006811115610a9f57fe5b1415610ab757506b57616974696e67436c61696d60a01b5b60018461012001516006811115610aca57fe5b1415610ae95750722bb0b4ba34b733a1b7b73334b936b0ba34b7b760691b5b60028461012001516006811115610afc57fe5b1415610b1d575074436c61696d65724d6973736564446561646c696e6560581b5b60038461012001516006811115610b3057fe5b1415610c49575060035461010084015160408051630c91927b60e01b81526004810192909252516f57616974696e674368616c6c656e676560801b926001600160a01b031691630c91927b916024808301926020929190829003018186803b158015610b9b57600080fd5b505afa158015610baf573d6000803e3d6000fd5b505050506040513d6020811015610bc557600080fd5b505160035461010086015160408051622231c360e11b81526004810192909252519295506001600160a01b03909116916244638691602480820192602092909190829003018186803b158015610c1a57600080fd5b505afa158015610c2e573d6000803e3d6000fd5b505050506040513d6020811015610c4457600080fd5b505191505b60048461012001516006811115610c5c57fe5b1415610c7557506c21b430b63632b733b2b92bb7b760991b5b60058461012001516006811115610c8857fe5b1415610c9e57506921b630b4b6b2b92bb7b760b11b5b60068461012001516006811115610cb157fe5b1415610ccc57506e10dbdb9cd95b9cdd5cd4995cdd5b1d608a1b5b83600001518460200151610cf486610120015187604001516028888a60c001516101f4611ade565b86606001510186608001518760a001518860c001518960e00151879b509b509b509b509b509b509b509b50505050509295985092959890939650565b60009081526001602052604090205460ff1690565b818060005411610d8a576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000838152600460205260409020600101546001600160a01b0316338114610df4576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600084815260026020526040812080546001019055849060008681526004602052604090206009015460ff166006811115610e2b57fe5b14610e7d576040805162461bcd60e51b815260206004820152601c60248201527f53746174652073686f756c642062652057616974696e67436c61696d00000000604482015290519081900360640190fd5b60008581526004602090815260409182902060078101879055600901805460ff19166001179055815187815290810186905281517f1e9358f673ff367487ce56f136412ae5b69bf2c06e223aad2756d748c2a9b52a929181900390910190a15050505050565b6000818060005411610f2a576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000610606565b808060005411610f76576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60008281526002602081815260408084208054600190810190915560049092528320600981015492810154600690910154869493610fc19360ff9091169291602891906101f4611ade565b6000858152600460205260409020600301540142119050806110145760405162461bcd60e51b815260040180806020018281038252602c815260200180611e77602c913960400191505060405180910390fd5b6000848152600460205260409020546001600160a01b031633148015611057575060008481526004602052604081206009015460ff16600681111561105557fe5b145b156110ed57600084815260046020526040902060090180546002919060ff19166001835b021790555061108984611c39565b6000848152600460205260409020600901547fce5d57dc06bffee515dc9f8ca3a267203dbbe503f6bfad687a7120d00756913e90859060ff1660068111156110cd57fe5b6040805192835260ff90911660208301528051918290030190a150611194565b6000848152600460205260409020600101546001600160a01b0316331480156111355750600160008581526004602052604090206009015460ff16600681111561113357fe5b145b1561115d57600084815260046020526040902060090180546006919060ff191660018361107b565b60405162461bcd60e51b815260040180806020018281038252602f815260200180611ef5602f913960400191505060405180910390fd5b505050565b8080600054116111de576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000828152600460205260409020546001600160a01b0316338114611245576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040902080546001908101909155839060008581526004602052604090206009015460ff16600681111561127f57fe5b146112bb5760405162461bcd60e51b8152600401808060200182810382526023815260200180611e546023913960400191505060405180910390fd5b60035460008581526004602081815260408084208054600182015460028301548387015460058501546007860154600690960154875163020b738760e41b81526001600160a01b039687169a81019a909a5293851660248a0152604489019290925283166064880152608487015260a486019290925260c485019190915290519416936320b738709360e4808501948390030190829087803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b505050506040513d602081101561138a57600080fd5b50516000858152600460205260409020600881019190915560090180546003919060ff191660018302179055506040805185815290517fa895da4b794aeba8d8082db237265459db7b7ffdb5aa7c2332a7c5eafbfae7359181900360200190a150505050565b808060005411611435576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6000828152600460205260409020546001600160a01b031633811461149c576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040902080546001908101909155839060008581526004602052604090206009015460ff1660068111156114d657fe5b146115125760405162461bcd60e51b8152600401808060200182810382526023815260200180611e546023913960400191505060405180910390fd5b6000848152600460205260409020600901805460ff1916600617905561153784611c5c565b6040805185815290517fa832892b4543448b594422a93bf38c889d54ae5938a065c6ec5f4636161f522a9181900360200190a150505050565b6000856001600160a01b0316876001600160a01b031614156115c35760405162461bcd60e51b8152600401808060200182810382526025815260200180611ed06025913960400191505060405180910390fd5b600080548152600460208190526040822080546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018b90559383018054918a16919092161790556005810186905560068101859055600981018054919392909160ff191690830217905550426003820155600054604080519182526001600160a01b03808b166020840152808a1683830152606083018990528716608083015260a0820186905260c08201859052517f9f53c9493351536908d5efd56da31dfb5a53a510ac3e216afe64af077b558d509181900360e00190a150506000805481526001602081905260408220805460ff19168217905581549081019091555b9695505050505050565b6060808080600360008781526004602052604090206009015460ff1660068111156116ff57fe5b14156117a95760408051600180825281830190925290602080830190803683375050604080516001808252818301909252929450905060208083019080368337505060035484519293506001600160a01b03169184915060009061175f57fe5b6001600160a01b0390921660209283029190910182015260008781526004909152604081206008015482519091839161179457fe5b602090810291909101015290925090506117c6565b505060408051600080825260208201908152818301909252925090505b9250929050565b6000818060005411611814576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6003610606565b6000818060005411611862576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6005610606565b8080600054116118ae576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b60008281526002602052604090208054600101905581600360008481526004602052604090206009015460ff1660068111156118e657fe5b146119225760405162461bcd60e51b815260040180806020018281038252602d815260200180611ea3602d913960400191505060405180910390fd5b60008381526004602081815260409283902060080154600354845163b6b5c31960e01b8152938401829052935190936001600160a01b03169263b6b5c319926024808301939192829003018186803b15801561197d57600080fd5b505afa158015611991573d6000803e3d6000fd5b505050506040513d60208110156119a757600080fd5b5051156119bd576119b784611cbd565b50611194565b60035460408051633664f8bf60e11b81526004810184905290516001600160a01b0390921691636cc9f17e91602480820192602092909190829003018186803b158015611a0957600080fd5b505afa158015611a1d573d6000803e3d6000fd5b505050506040513d6020811015611a3357600080fd5b505115611a43576119b784611d90565b6040805162461bcd60e51b815260206004820152601860248201527f5374617465206f66205647206973206e6f742066696e616c0000000000000000604482015290519081900360640190fd5b6000818060005411611ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b6006610606565b600080876006811115611aed57fe5b1415611b09578564e8d4a510008484025b0486010190506116ce565b6001876006811115611b1757fe5b1415611b2c578564e8d4a51000848402611afe565b6003876006811115611b3a57fe5b1415611bdb5760035460408051631b8798d560e11b81526004810189905260248101889052604481018790526064810186905260848101859052905188926001600160a01b03169163370f31aa9160a4808301926020929190829003018186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d6020811015611bd157600080fd5b50510190506116ce565b6005876006811115611be957fe5b1480611c0057506004876006811115611bfe57fe5b145b80611c1657506002876006811115611c1457fe5b145b80611c2c57506006876006811115611c2a57fe5b145b156116ce575060006116ce565b6000908152600160209081526040808320805460ff191690556002909152812055565b6000818152600460208190526040822080546001600160a01b031990811682556001820180548216905560028201849055600382018490559181018054909216909155600581018290556006810182905560080155611cba81611c39565b50565b808060005411611d02576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b611d0b82611c5c565b6000828152600460208190526040909120600901805460ff19166001835b02179055506000828152600460205260409020600901547fce5d57dc06bffee515dc9f8ca3a267203dbbe503f6bfad687a7120d00756913e90839060ff166006811115611d7257fe5b6040805192835260ff90911660208301528051918290030190a15050565b808060005411611dd5576040805162461bcd60e51b81526020600482015260166024820152600080516020611f24833981519152604482015290519081900360640190fd5b611dde82611c5c565b600082815260046020526040902060090180546005919060ff1916600183611d29565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052906101208201529056fe53746174652073686f756c642062652057616974696e67436f6e6669726d6174696f6e446561646c696e65206973206e6f74206f76657220666f7220746869732073706563696669632073746174655374617465206973206e6f742057616974696e674368616c6c656e67652c2063616e6e6f742077696e427956474368616c6c656e67657220616e6420436c61696d6572206e65656420746f206469666665724661696c20746f20436c61696d566963746f7279427954696d6520696e2063757272656e7420636f6e646974696f6e496e646578206e6f7420696e7374616e74696174656400000000000000000000a26469706673582212203fcba7868bcd1ad10e523b5fb225fd029d795d1e2d7ef79023a277abc5b5406664736f6c63430007040033",
"linkReferences": {},
"deployedLinkReferences": {},
"devdoc": {
"kind": "dev",
"methods": {
"challenge(uint256)": {
"params": {
"_index": "Index of compute instance which challenger is starting the VG."
}
},
"confirm(uint256)": {
"params": {
"_index": "Index of compute instance that the challenger is confirming the claim."
}
},
"getMaxInstanceDuration(uint256,uint256,uint256,uint256,uint256)": {
"params": {
"_maxCycle": "number of instructions until the machine is forcibly halted",
"_picoSecondsToRunInsn": "time the offchain will take to run one instruction"
}
},
"instantiate(address,address,uint256,address,bytes32,uint256)": {
"params": {
"_challenger": "address of the challenger.",
"_claimer": "address of the claimer.",
"_finalTime": "max cycle of the machine for that computation",
"_initialHash": "hash in which both claimer and challenger agree on",
"_machineAddress": "address of the machine that will run the instruction",
"_roundDuration": "duration of the round (security param)"
},
"returns": {
"_0": "Compute index."
}
},
"submitClaim(uint256,bytes32)": {
"params": {
"_claimedFinalHash": "hash of the machine after computation is completed.",
"_index": "Index of instance that the claimer is interacting with"
}
},
"winByVG(uint256)": {
"params": {
"_index": "Index of compute instance which challenger is starting the VG."
}
}
},
"version": 1
},
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1FE0 CODESIZE SUB DUP1 PUSH2 0x1FE0 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1F79 DUP1 PUSH2 0x67 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0C222B4 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xC19E71C3 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC19E71C3 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xC526656C EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0xCE73B628 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xD0A068CF EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0xDED4DF63 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xE174B3BF EQ PUSH2 0x506 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0xA0C222B4 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0xA20D952B EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xA2DC7973 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xAB82D9A0 EQ PUSH2 0x366 JUMPI DUP1 PUSH4 0xBA0179B5 EQ PUSH2 0x383 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x5748C130 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x5748C130 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x6547429E EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x6C092EDD EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x73DF1612 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x82AFD23B EQ PUSH2 0x2EA JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FF62AB EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x26987B60 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x370F31AA EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x388E43BE EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x3D46B819 EQ PUSH2 0x1E8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x523 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH2 0x56E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x574 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5BC JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x630 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATAS