Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LivepeerVerifier
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-22 */ pragma solidity 0.4.18; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; Unpause(); } } contract IController is Pausable { event SetContractInfo(bytes32 id, address contractAddress, bytes20 gitCommitHash); function setContractInfo(bytes32 _id, address _contractAddress, bytes20 _gitCommitHash) external; function updateController(bytes32 _id, address _controller) external; function getContract(bytes32 _id) public view returns (address); } contract IManager { event SetController(address controller); event ParameterUpdate(string param); function setController(address _controller) external; } contract Manager is IManager { // Controller that contract is registered with IController public controller; // Check if sender is controller modifier onlyController() { require(msg.sender == address(controller)); _; } // Check if sender is controller owner modifier onlyControllerOwner() { require(msg.sender == controller.owner()); _; } // Check if controller is not paused modifier whenSystemNotPaused() { require(!controller.paused()); _; } // Check if controller is paused modifier whenSystemPaused() { require(controller.paused()); _; } function Manager(address _controller) public { controller = IController(_controller); } /* * @dev Set controller. Only callable by current controller * @param _controller Controller contract address */ function setController(address _controller) external onlyController { controller = IController(_controller); SetController(_controller); } } /** * @title Interface for a Verifier. Can be backed by any implementaiton including oracles or Truebit */ contract IVerifier { function verify( uint256 _jobId, uint256 _claimId, uint256 _segmentNumber, string _transcodingOptions, string _dataStorageHash, bytes32[2] _dataHashes ) external payable; function getPrice() public view returns (uint256); } /* * @title Interface for contract that receives verification results */ contract IVerifiable { // External functions function receiveVerification(uint256 _jobId, uint256 _claimId, uint256 _segmentNumber, bool _result) external; } /** * @title LivepeerVerifier * @dev Manages transcoding verification requests that are processed by a trusted solver */ contract LivepeerVerifier is Manager, IVerifier { // IPFS hash of verification computation archive string public verificationCodeHash; // Solver that can submit results for requests address public solver; struct Request { uint256 jobId; uint256 claimId; uint256 segmentNumber; bytes32 commitHash; } mapping (uint256 => Request) public requests; uint256 public requestCount; event VerifyRequest(uint256 indexed requestId, uint256 indexed jobId, uint256 indexed claimId, uint256 segmentNumber, string transcodingOptions, string dataStorageHash, bytes32 dataHash, bytes32 transcodedDataHash); event Callback(uint256 indexed requestId, uint256 indexed jobId, uint256 indexed claimId, uint256 segmentNumber, bool result); event SolverUpdate(address solver); // Check if sender is JobsManager modifier onlyJobsManager() { require(msg.sender == controller.getContract(keccak256("JobsManager"))); _; } // Check if sender is a solver modifier onlySolver() { require(msg.sender == solver); _; } /** * @dev LivepeerVerifier constructor * @param _controller Controller address * @param _solver Solver address to register * @param _verificationCodeHash Content addressed hash specifying location of transcoding verification code */ function LivepeerVerifier(address _controller, address _solver, string _verificationCodeHash) public Manager(_controller) { // Solver must not be null address require(_solver != address(0)); // Set solver solver = _solver; // Set verification code hash verificationCodeHash = _verificationCodeHash; } /** * @dev Set content addressed hash specifying location of transcoding verification code. Only callable by Controller owner * @param _verificationCodeHash Content addressed hash specifying location of transcoding verification code */ function setVerificationCodeHash(string _verificationCodeHash) external onlyControllerOwner { verificationCodeHash = _verificationCodeHash; } /** * @dev Set registered solver address that is allowed to submit the result of transcoding verification computation * via `__callback()`. Only callable by Controller owner * @param _solver Solver address to register */ function setSolver(address _solver) external onlyControllerOwner { // Must not be null address require(_solver != address(0)); solver = _solver; SolverUpdate(_solver); } /** * @dev Fire VerifyRequest event which solvers should listen for to retrieve verification parameters */ function verify( uint256 _jobId, uint256 _claimId, uint256 _segmentNumber, string _transcodingOptions, string _dataStorageHash, bytes32[2] _dataHashes ) external payable onlyJobsManager whenSystemNotPaused { // Store request parameters requests[requestCount].jobId = _jobId; requests[requestCount].claimId = _claimId; requests[requestCount].segmentNumber = _segmentNumber; requests[requestCount].commitHash = keccak256(_dataHashes[0], _dataHashes[1]); VerifyRequest( requestCount, _jobId, _claimId, _segmentNumber, _transcodingOptions, _dataStorageHash, _dataHashes[0], _dataHashes[1] ); // Update request count requestCount++; } /** * @dev Callback function invoked by a solver to submit the result of a verification computation * @param _requestId Request identifier * @param _result Result of verification computation - keccak256 hash of transcoded segment data */ // solium-disable-next-line mixedcase function __callback(uint256 _requestId, bytes32 _result) external onlySolver whenSystemNotPaused { Request memory q = requests[_requestId]; // Check if transcoded data hash returned by solver matches originally submitted transcoded data hash if (q.commitHash == _result) { IVerifiable(controller.getContract(keccak256("JobsManager"))).receiveVerification(q.jobId, q.claimId, q.segmentNumber, true); Callback(_requestId, q.jobId, q.claimId, q.segmentNumber, true); } else { IVerifiable(controller.getContract(keccak256("JobsManager"))).receiveVerification(q.jobId, q.claimId, q.segmentNumber, false); Callback(_requestId, q.jobId, q.claimId, q.segmentNumber, false); } // Remove request delete requests[_requestId]; } /** * @dev Return price of verification which is zero for this implementation */ function getPrice() public view returns (uint256) { return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_solver","type":"address"}],"name":"setSolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"verificationCodeHash","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_verificationCodeHash","type":"string"}],"name":"setVerificationCodeHash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"solver","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requestCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"requests","outputs":[{"name":"jobId","type":"uint256"},{"name":"claimId","type":"uint256"},{"name":"segmentNumber","type":"uint256"},{"name":"commitHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_jobId","type":"uint256"},{"name":"_claimId","type":"uint256"},{"name":"_segmentNumber","type":"uint256"},{"name":"_transcodingOptions","type":"string"},{"name":"_dataStorageHash","type":"string"},{"name":"_dataHashes","type":"bytes32[2]"}],"name":"verify","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_requestId","type":"uint256"},{"name":"_result","type":"bytes32"}],"name":"__callback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_controller","type":"address"},{"name":"_solver","type":"address"},{"name":"_verificationCodeHash","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"requestId","type":"uint256"},{"indexed":true,"name":"jobId","type":"uint256"},{"indexed":true,"name":"claimId","type":"uint256"},{"indexed":false,"name":"segmentNumber","type":"uint256"},{"indexed":false,"name":"transcodingOptions","type":"string"},{"indexed":false,"name":"dataStorageHash","type":"string"},{"indexed":false,"name":"dataHash","type":"bytes32"},{"indexed":false,"name":"transcodedDataHash","type":"bytes32"}],"name":"VerifyRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"requestId","type":"uint256"},{"indexed":true,"name":"jobId","type":"uint256"},{"indexed":true,"name":"claimId","type":"uint256"},{"indexed":false,"name":"segmentNumber","type":"uint256"},{"indexed":false,"name":"result","type":"bool"}],"name":"Callback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"solver","type":"address"}],"name":"SolverUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"controller","type":"address"}],"name":"SetController","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"param","type":"string"}],"name":"ParameterUpdate","type":"event"}]
Contract Creation Code
6060604052341561000f57600080fd5b604051610dd8380380610dd883398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a038781169190911790915592019183161515905061006557600080fd5b60028054600160a060020a031916600160a060020a038416179055600181805161009392916020019061009c565b50505050610137565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100dd57805160ff191683800117855561010a565b8280016001018555821561010a579182015b8281111561010a5782518255916020019190600101906100ef565b5061011692915061011a565b5090565b61013491905b808211156101165760008155600101610120565b90565b610c92806101466000396000f3006060604052600436106100955763ffffffff60e060020a6000350416631f879433811461009a57806341af1524146100bb5780634862e6501461014557806349a7a26d146101635780635badbe4c1461019257806381d12c58146101b75780638c118cf1146101f957806392eefe9b146102265780639842a37c1461024557806398d5fdca1461025e578063f77c479114610271575b600080fd5b34156100a557600080fd5b6100b9600160a060020a0360043516610284565b005b34156100c657600080fd5b6100ce610384565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010a5780820151838201526020016100f2565b50505050905090810190601f1680156101375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015057600080fd5b6100b96004803560248101910135610422565b341561016e57600080fd5b6101766104b6565b604051600160a060020a03909116815260200160405180910390f35b341561019d57600080fd5b6101a56104c5565b60405190815260200160405180910390f35b34156101c257600080fd5b6101cd6004356104cb565b604051938452602084019290925260408084019190915260608301919091526080909101905180910390f35b6100b9600480359060248035916044359160643580820192908101359160843590810191013560a46104f4565b341561023157600080fd5b6100b9600160a060020a0360043516610746565b341561025057600080fd5b6100b96004356024356107c9565b341561026957600080fd5b6101a5610b92565b341561027c57600080fd5b610176610b98565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102cd57600080fd5b6102c65a03f115156102de57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561030757600080fd5b600160a060020a038116151561031c57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790557face515c35c46c2bef1424779ab5938a69fd660a490ba0a4863392ee28000666f81604051600160a060020a03909116815260200160405180910390a150565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561041a5780601f106103ef5761010080835404028352916020019161041a565b820191906000526020600020905b8154815290600101906020018083116103fd57829003601f168201915b505050505081565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561046b57600080fd5b6102c65a03f1151561047c57600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156104a557600080fd5b6104b160018383610ba7565b505050565b600254600160a060020a031681565b60045481565b600360208190526000918252604090912080546001820154600283015492909301549092919084565b600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561057557600080fd5b6102c65a03f1151561058657600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156105af57600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156105f857600080fd5b6102c65a03f1151561060957600080fd5b505050604051805115905061061d57600080fd5b6004805460009081526003602090815260408083208c9055835483528083206001018b905592548252908290206002018890558235919083013590519182526020820152604090810190518091039020600360006004548152602001908152602001600020600301816000191690555086886004547ff68da1a7e850796ae5473e78db07307108751eec3461dddf5ef610db7dfaaf5689898989898960006002811015156106c757fe5b60200201358a60016020020135604051878152606081018390526080810182905260a0602082018181529082018790526040820160c08301898980828437909101848103835287815260200190508787808284378201915050995050505050505050505060405180910390a45050600480546001019055505050505050565b60005433600160a060020a0390811691161461076157600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790557f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7081604051600160a060020a03909116815260200160405180910390a150565b6107d1610c25565b60025433600160a060020a039081169116146107ec57600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561083557600080fd5b6102c65a03f1151561084657600080fd5b505050604051805115905061085a57600080fd5b60008381526003602052604090819020906080905190810160409081528254825260018301546020830152600283015490820152600390910154606082019081529091508290511415610a0b57600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561092857600080fd5b6102c65a03f1151561093957600080fd5b5050506040518051600160a060020a03169050631e0976f3825183602001518460400151600160405160e060020a63ffffffff871602815260048101949094526024840192909252604483015215156064820152608401600060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b50505080602001518151847faa22eba262859195ec25c1d3c94f98248add6d1374bd46df08c78470225df8d384604001516001604051918252151560208201526040908101905180910390a4610b6b565b600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a8c57600080fd5b6102c65a03f11515610a9d57600080fd5b5050506040518051600160a060020a03169050631e0976f3825183602001518460400151600060405160e060020a63ffffffff871602815260048101949094526024840192909252604483015215156064820152608401600060405180830381600087803b1515610b0d57600080fd5b6102c65a03f11515610b1e57600080fd5b50505080602001518151847faa22eba262859195ec25c1d3c94f98248add6d1374bd46df08c78470225df8d384604001516000604051918252151560208201526040908101905180910390a45b50506000908152600360208190526040822082815560018101839055600281018390550155565b60005b90565b600054600160a060020a031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610be85782800160ff19823516178555610c15565b82800160010185558215610c15579182015b82811115610c15578235825591602001919060010190610bfa565b50610c21929150610c4c565b5090565b60806040519081016040908152600080835260208301819052908201819052606082015290565b610b9591905b80821115610c215760008155600101610c525600a165627a7a72305820e760cd587186cc9fb39eb724c640d00472d97399f416338209f39d3369e709e40029000000000000000000000000f96d54e490317c557a967abfa5d6e33006be69b3000000000000000000000000c613674f1876eeb89821bcaa9cfc5b9299bacbf20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002e516d554d6b31774636596d464c4679796468535667654e43534b6b344a38473338447a547a637836466459537a56000000000000000000000000000000000000
Deployed Bytecode
0x6060604052600436106100955763ffffffff60e060020a6000350416631f879433811461009a57806341af1524146100bb5780634862e6501461014557806349a7a26d146101635780635badbe4c1461019257806381d12c58146101b75780638c118cf1146101f957806392eefe9b146102265780639842a37c1461024557806398d5fdca1461025e578063f77c479114610271575b600080fd5b34156100a557600080fd5b6100b9600160a060020a0360043516610284565b005b34156100c657600080fd5b6100ce610384565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010a5780820151838201526020016100f2565b50505050905090810190601f1680156101375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015057600080fd5b6100b96004803560248101910135610422565b341561016e57600080fd5b6101766104b6565b604051600160a060020a03909116815260200160405180910390f35b341561019d57600080fd5b6101a56104c5565b60405190815260200160405180910390f35b34156101c257600080fd5b6101cd6004356104cb565b604051938452602084019290925260408084019190915260608301919091526080909101905180910390f35b6100b9600480359060248035916044359160643580820192908101359160843590810191013560a46104f4565b341561023157600080fd5b6100b9600160a060020a0360043516610746565b341561025057600080fd5b6100b96004356024356107c9565b341561026957600080fd5b6101a5610b92565b341561027c57600080fd5b610176610b98565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156102cd57600080fd5b6102c65a03f115156102de57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561030757600080fd5b600160a060020a038116151561031c57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790557face515c35c46c2bef1424779ab5938a69fd660a490ba0a4863392ee28000666f81604051600160a060020a03909116815260200160405180910390a150565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561041a5780601f106103ef5761010080835404028352916020019161041a565b820191906000526020600020905b8154815290600101906020018083116103fd57829003601f168201915b505050505081565b60008054600160a060020a031690638da5cb5b90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561046b57600080fd5b6102c65a03f1151561047c57600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156104a557600080fd5b6104b160018383610ba7565b505050565b600254600160a060020a031681565b60045481565b600360208190526000918252604090912080546001820154600283015492909301549092919084565b600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561057557600080fd5b6102c65a03f1151561058657600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156105af57600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156105f857600080fd5b6102c65a03f1151561060957600080fd5b505050604051805115905061061d57600080fd5b6004805460009081526003602090815260408083208c9055835483528083206001018b905592548252908290206002018890558235919083013590519182526020820152604090810190518091039020600360006004548152602001908152602001600020600301816000191690555086886004547ff68da1a7e850796ae5473e78db07307108751eec3461dddf5ef610db7dfaaf5689898989898960006002811015156106c757fe5b60200201358a60016020020135604051878152606081018390526080810182905260a0602082018181529082018790526040820160c08301898980828437909101848103835287815260200190508787808284378201915050995050505050505050505060405180910390a45050600480546001019055505050505050565b60005433600160a060020a0390811691161461076157600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790557f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7081604051600160a060020a03909116815260200160405180910390a150565b6107d1610c25565b60025433600160a060020a039081169116146107ec57600080fd5b60008054600160a060020a031690635c975abb90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561083557600080fd5b6102c65a03f1151561084657600080fd5b505050604051805115905061085a57600080fd5b60008381526003602052604090819020906080905190810160409081528254825260018301546020830152600283015490820152600390910154606082019081529091508290511415610a0b57600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561092857600080fd5b6102c65a03f1151561093957600080fd5b5050506040518051600160a060020a03169050631e0976f3825183602001518460400151600160405160e060020a63ffffffff871602815260048101949094526024840192909252604483015215156064820152608401600060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b50505080602001518151847faa22eba262859195ec25c1d3c94f98248add6d1374bd46df08c78470225df8d384604001516001604051918252151560208201526040908101905180910390a4610b6b565b600054600160a060020a031663e16c7d986040517f4a6f62734d616e616765720000000000000000000000000000000000000000008152600b01604051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a8c57600080fd5b6102c65a03f11515610a9d57600080fd5b5050506040518051600160a060020a03169050631e0976f3825183602001518460400151600060405160e060020a63ffffffff871602815260048101949094526024840192909252604483015215156064820152608401600060405180830381600087803b1515610b0d57600080fd5b6102c65a03f11515610b1e57600080fd5b50505080602001518151847faa22eba262859195ec25c1d3c94f98248add6d1374bd46df08c78470225df8d384604001516000604051918252151560208201526040908101905180910390a45b50506000908152600360208190526040822082815560018101839055600281018390550155565b60005b90565b600054600160a060020a031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610be85782800160ff19823516178555610c15565b82800160010185558215610c15579182015b82811115610c15578235825591602001919060010190610bfa565b50610c21929150610c4c565b5090565b60806040519081016040908152600080835260208301819052908201819052606082015290565b610b9591905b80821115610c215760008155600101610c525600a165627a7a72305820e760cd587186cc9fb39eb724c640d00472d97399f416338209f39d3369e709e40029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f96d54e490317c557a967abfa5d6e33006be69b3000000000000000000000000c613674f1876eeb89821bcaa9cfc5b9299bacbf20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002e516d554d6b31774636596d464c4679796468535667654e43534b6b344a38473338447a547a637836466459537a56000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _controller (address): 0xF96D54E490317c557A967ABfA5d6e33006BE69b3
Arg [1] : _solver (address): 0xc613674f1876eeb89821bcaa9CfC5B9299BACBF2
Arg [2] : _verificationCodeHash (string): QmUMk1wF6YmFLFyydhSVgeNCSKk4J8G38DzTzcx6FdYSzV
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000f96d54e490317c557a967abfa5d6e33006be69b3
Arg [1] : 000000000000000000000000c613674f1876eeb89821bcaa9cfc5b9299bacbf2
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [4] : 516d554d6b31774636596d464c4679796468535667654e43534b6b344a384733
Arg [5] : 38447a547a637836466459537a56000000000000000000000000000000000000
Swarm Source
bzzr://e760cd587186cc9fb39eb724c640d00472d97399f416338209f39d3369e709e4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.