Contract 0x38093cdca43aecd7bb474983519a246e93a3b0a7 1

 

Contract Overview

Livepeer: Target Service Registry
Balance:
0 ETH

ETH Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xdaaecb08430281d4a40d2b18cfd9107fde74e9bd4f3b57bd7b13806bc58cce120x6080604058564012022-02-11 13:25:54183 days 1 hr agoLivepeer: Deployer IN  Create: ServiceRegistry0 ETH0.003715944415 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x7ec4093b669c58e63bc6eb0a194c348f63c8266008135e78368dbc816d4f2c01201373172022-08-13 7:20:127 hrs 24 mins ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x89aa1a998cc9804d46c75c8504ca946af1b1b8b95966d3724c8f8cae18ab0d75200905372022-08-12 15:00:2223 hrs 44 mins ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x771c1cb9b2d3dea3c227f7394e753a8a1a75ca687c58c48bfd3918349e06f74e198403082022-08-09 18:07:013 days 20 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xe277a1ba57a5a70e9ad521c9782ed6bd7da0418beac974af7af8de50577b3293197988602022-08-09 11:53:414 days 2 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x1f98d79fbba88837ac883f60eb497532de82b22b3eaaf0a8f334ebe81e34e6ca197988262022-08-09 11:53:414 days 2 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xdba2c3de654427f75b3d9d17cf63e5dede85a63927355a5189f87f352094af6f197798122022-08-09 7:08:574 days 7 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xf81e5dee07c85c3433af1511b2bebc086853111c40b6535972082ac36e3aff1c197507522022-08-08 21:04:524 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xaf408be688e10ee8c00f080eca7b88b9dd17bd4473cb89ad264d4a38d55c22b8196378042022-08-07 15:20:305 days 23 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x37d32aa921b24acc199857737f20c833176a8806ca62d8ab7e4d6441d16283d9194967732022-08-06 0:20:167 days 14 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x0553e31050185526dbdb85e181561f3c00139cc022aeebde88938abd7477071f194870592022-08-05 20:59:077 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x4d5a429db6ccccc508f60e8f26791b66fba3d5c85b554eb77a228ebd1d1d99c0193171252022-08-03 21:26:409 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x8d28bd11f9de0a48824c51b164a54d41bd9fb85865672d9c6b85f28e8f04b711192237002022-08-02 19:33:2910 days 19 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xc2c4024ad1450d71ce86feec8703f7bca98895936cf1d80124a863bdaa7956de191137472022-08-01 11:52:1912 days 2 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x835fa73b3efa00f7e21528c94d10323e30f59b0545586866efe61573943af055190444362022-07-31 14:46:0412 days 23 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x6252b89554ce9bf10686c49826ed68b285adfd00f6e3940699fe014e898bceb2187035862022-07-27 15:18:0616 days 23 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x9d1fdf35e8261ee1a07bc5f6c53fead6d70b691a9ae5b3d0100e028a55ffcd22184725452022-07-24 21:29:3719 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x9d89c4b4f022cde52d5e1716911ddef5e80af16694f70e55b241a16931b6880e182021252022-07-21 12:27:3023 days 2 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x9b50bf7c48da41e5e0c8412053d5ac41705d914486dc6854f02c5604c92c8fd3181436652022-07-20 21:23:0423 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xdbace6895e64f93df966a34e3fcdaa238afadbdbab91bea18bb525b773383d86181427272022-07-20 21:06:4123 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x73ed8ab9b4a92994cd2a22ea02969dcc30f98bd7c2b64942816d609bcd799044180658802022-07-20 2:48:1624 days 11 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xf6b88b7969a23a534c8d9b5c5ade094ff8a40d7042fbe05a28a67d929ba357e1174359962022-07-11 18:00:1832 days 20 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x9c4f53bc523be73bb5873e2b97742deb6dd4e7caa2902fe820c7340ba2ec2da7173896292022-07-10 20:52:5633 days 17 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x14c26a526ca4782313319f77f67658b8bcd0adcd826a8006dabb553bac90a989173864532022-07-10 19:10:2233 days 19 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0x59018d0e1b2e3ba26faee09eed6047bffd811224201db0390390d8da50fa390d173400172022-07-09 23:38:4134 days 15 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
0xcbce7c4c5b0809cf13455233a2107ebd4c77c0a19a48645e9f38b64aa9395e62172706892022-07-08 18:32:5435 days 20 hrs ago Livepeer: Proxy Service Registry Livepeer: Target Service Registry0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ServiceRegistry

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : IController.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./zeppelin/Pausable.sol";

abstract contract IController is Pausable {
    event SetContractInfo(bytes32 id, address contractAddress, bytes20 gitCommitHash);

    function setContractInfo(
        bytes32 _id,
        address _contractAddress,
        bytes20 _gitCommitHash
    ) external virtual;

    function updateController(bytes32 _id, address _controller) external virtual;

    function getContract(bytes32 _id) public view virtual returns (address);
}

File 2 of 7 : IManager.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

interface IManager {
    event SetController(address controller);
    event ParameterUpdate(string param);

    function setController(address _controller) external;
}

File 3 of 7 : Manager.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./IManager.sol";
import "./IController.sol";

contract Manager is IManager {
    // Controller that contract is registered with
    IController public controller;

    // Check if sender is controller
    modifier onlyController() {
        _onlyController();
        _;
    }

    // Check if sender is controller owner
    modifier onlyControllerOwner() {
        _onlyControllerOwner();
        _;
    }

    // Check if controller is not paused
    modifier whenSystemNotPaused() {
        _whenSystemNotPaused();
        _;
    }

    // Check if controller is paused
    modifier whenSystemPaused() {
        _whenSystemPaused();
        _;
    }

    constructor(address _controller) {
        controller = IController(_controller);
    }

    /**
     * @notice Set controller. Only callable by current controller
     * @param _controller Controller contract address
     */
    function setController(address _controller) external onlyController {
        controller = IController(_controller);

        emit SetController(_controller);
    }

    function _onlyController() private view {
        require(msg.sender == address(controller), "caller must be Controller");
    }

    function _onlyControllerOwner() private view {
        require(msg.sender == controller.owner(), "caller must be Controller owner");
    }

    function _whenSystemNotPaused() private view {
        require(!controller.paused(), "system is paused");
    }

    function _whenSystemPaused() private view {
        require(controller.paused(), "system is not paused");
    }
}

File 4 of 7 : ManagerProxyTarget.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./Manager.sol";

/**
 * @title ManagerProxyTarget
 * @notice The base contract that target contracts used by a proxy contract should inherit from
 * @dev Both the target contract and the proxy contract (implemented as ManagerProxy) MUST inherit from ManagerProxyTarget in order to guarantee
 that both contracts have the same storage layout. Differing storage layouts in a proxy contract and target contract can
 potentially break the delegate proxy upgradeability mechanism
 */
abstract contract ManagerProxyTarget is Manager {
    // Used to look up target contract address in controller's registry
    bytes32 public targetContractId;
}

File 5 of 7 : ServiceRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./ManagerProxyTarget.sol";

/**
 * @title ServiceRegistry
 * @notice Maintains a registry of service metadata associated with service provider addresses (transcoders/orchestrators)
 */
contract ServiceRegistry is ManagerProxyTarget {
    // Store service metadata
    struct Record {
        string serviceURI; // Service URI endpoint that can be used to send off-chain requests
    }

    // Track records for addresses
    mapping(address => Record) private records;

    // Event fired when a caller updates its service URI endpoint
    event ServiceURIUpdate(address indexed addr, string serviceURI);

    /**
     * @notice ServiceRegistry constructor. Only invokes constructor of base Manager contract with provided Controller address
     * @param _controller Address of a Controller that this contract will be registered with
     */
    constructor(address _controller) Manager(_controller) {}

    /**
     * @notice Stores service URI endpoint for the caller that can be used to send requests to the caller off-chain
     * @param _serviceURI Service URI endpoint for the caller
     */
    function setServiceURI(string calldata _serviceURI) external {
        records[msg.sender].serviceURI = _serviceURI;

        emit ServiceURIUpdate(msg.sender, _serviceURI);
    }

    /**
     * @notice Returns service URI endpoint stored for a given address
     * @param _addr Address for which a service URI endpoint is desired
     */
    function getServiceURI(address _addr) public view returns (string memory) {
        return records[_addr].serviceURI;
    }
}

File 6 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

/**
 * @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.
     */
    constructor() {
        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));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

File 7 of 7 : Pausable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./Ownable.sol";

/**
 * @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;

    /**
     * @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() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"param","type":"string"}],"name":"ParameterUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"string","name":"serviceURI","type":"string"}],"name":"ServiceURIUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"controller","type":"address"}],"name":"SetController","type":"event"},{"inputs":[],"name":"controller","outputs":[{"internalType":"contract IController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getServiceURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_serviceURI","type":"string"}],"name":"setServiceURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"targetContractId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5060405161057c38038061057c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6104e9806100936000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063214c2a4b1461005c57806351720b41146100855780635f11301b1461009c57806392eefe9b146100b1578063f77c4791146100c4575b600080fd5b61006f61006a366004610352565b6100ef565b60405161007c9190610382565b60405180910390f35b61008e60015481565b60405190815260200161007c565b6100af6100aa3660046103d7565b61019b565b005b6100af6100bf366004610352565b6101fd565b6000546100d7906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001600160a01b038116600090815260026020526040902080546060919061011690610449565b80601f016020809104026020016040519081016040528092919081815260200182805461014290610449565b801561018f5780601f106101645761010080835404028352916020019161018f565b820191906000526020600020905b81548152906001019060200180831161017257829003601f168201915b50505050509050919050565b3360009081526002602052604090206101b59083836102b9565b50336001600160a01b03167ffbb63068732c85741c9f8e61caffaabe038d577bfafd2d2dcc0e352a4f653a4c83836040516101f1929190610484565b60405180910390a25050565b610205610259565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709060200160405180910390a150565b6000546001600160a01b031633146102b75760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015260640160405180910390fd5b565b8280546102c590610449565b90600052602060002090601f0160209004810192826102e7576000855561032d565b82601f106103005782800160ff1982351617855561032d565b8280016001018555821561032d579182015b8281111561032d578235825591602001919060010190610312565b5061033992915061033d565b5090565b5b80821115610339576000815560010161033e565b60006020828403121561036457600080fd5b81356001600160a01b038116811461037b57600080fd5b9392505050565b600060208083528351808285015260005b818110156103af57858101830151858201604001528201610393565b818111156103c1576000604083870101525b50601f01601f1916929092016040019392505050565b600080602083850312156103ea57600080fd5b823567ffffffffffffffff8082111561040257600080fd5b818501915085601f83011261041657600080fd5b81358181111561042557600080fd5b86602082850101111561043757600080fd5b60209290920196919550909350505050565b600181811c9082168061045d57607f821691505b6020821081141561047e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea2646970667358221220072fab04e9b0eb88e7ce73c7ea0dd0e46030826f89b48af04a185d7ac13df8de64736f6c63430008090033000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4

-----Decoded View---------------
Arg [0] : _controller (address): 0xd8e8328501e9645d16cf49539efc04f734606ee4

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.