ETH Price: $2,780.92 (+4.27%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LivepeerVerifier

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *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

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"}]

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

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.