ETH Price: $3,086.35 (+0.18%)

Contract

0x2A23bc0EA97A89abD91214E8e4d20F02Fe14743f
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

ContractCreator:

GENESIS at txn GENESIS_2a23bc0ea97a89abd91214e8e4d20f02fe14743f

Sponsored

Transaction Hash
Method
Block
From
To
Value
Approve All Dele...1187425432024-04-14 8:37:433 days ago1713083863IN
Synthetix: Delegate Approvals
0 ETH0.000003280.06147221
Approve All Dele...1186862592024-04-13 1:21:354 days ago1712971295IN
Synthetix: Delegate Approvals
0 ETH0.000003980.0745377
Remove Claim On ...1186185862024-04-11 11:45:495 days ago1712835949IN
Synthetix: Delegate Approvals
0 ETH0.000002020.06182548
Remove All Deleg...1186185742024-04-11 11:45:255 days ago1712835925IN
Synthetix: Delegate Approvals
0 ETH0.000003540.0620826
Approve All Dele...1186140382024-04-11 9:14:136 days ago1712826853IN
Synthetix: Delegate Approvals
0 ETH0.00000340.06377634
Approve All Dele...1186020602024-04-11 2:34:576 days ago1712802897IN
Synthetix: Delegate Approvals
0 ETH0.000003280.0615622
Approve All Dele...1183375952024-04-04 23:39:2712 days ago1712273967IN
Synthetix: Delegate Approvals
0 ETH0.000003190.0597763
Approve All Dele...1180727422024-03-29 20:31:0118 days ago1711744261IN
Synthetix: Delegate Approvals
0 ETH0.000003030.05677237
Approve All Dele...1180069512024-03-28 7:57:5920 days ago1711612679IN
Synthetix: Delegate Approvals
0 ETH0.00000160.02997213
Approve Exchange...1179029752024-03-25 22:12:0722 days ago1711404727IN
Synthetix: Delegate Approvals
0 ETH0.00000160.03015165
Remove All Deleg...1177697572024-03-22 20:11:3125 days ago1711138291IN
Synthetix: Delegate Approvals
0 ETH0.000000470.00832979
Approve All Dele...1177696822024-03-22 20:09:0125 days ago1711138141IN
Synthetix: Delegate Approvals
0 ETH0.000002260.04249288
Approve All Dele...1174018072024-03-14 7:46:3134 days ago1710402391IN
Synthetix: Delegate Approvals
0 ETH0.000000270.00508769
Approve All Dele...1171918732024-03-09 11:08:4338 days ago1709982523IN
Synthetix: Delegate Approvals
0 ETH0.000000170.00322854
Approve All Dele...1171095122024-03-07 13:23:2140 days ago1709817801IN
Synthetix: Delegate Approvals
0 ETH0.000000070.0014578
Remove All Deleg...1171091932024-03-07 13:12:4340 days ago1709817163IN
Synthetix: Delegate Approvals
0 ETH0.000000450.0079363
Approve All Dele...1170750962024-03-06 18:16:0941 days ago1709748969IN
Synthetix: Delegate Approvals
0 ETH0.000000360.0068769
Approve All Dele...1170101232024-03-05 6:10:2343 days ago1709619023IN
Synthetix: Delegate Approvals
0 ETH0.000000060.00128162
Remove Claim On ...1169812772024-03-04 14:08:5143 days ago1709561331IN
Synthetix: Delegate Approvals
0 ETH0.000002950.0903648
Remove Burn On B...1169812452024-03-04 14:07:4743 days ago1709561267IN
Synthetix: Delegate Approvals
0 ETH0.000000760.0234148
Remove Issue On ...1169812332024-03-04 14:07:2343 days ago1709561243IN
Synthetix: Delegate Approvals
0 ETH0.000002620.0798963
Remove All Deleg...1169080342024-03-02 21:27:2545 days ago1709414845IN
Synthetix: Delegate Approvals
0 ETH0.000004330.08036181
Remove All Deleg...1169080232024-03-02 21:27:0345 days ago1709414823IN
Synthetix: Delegate Approvals
0 ETH0.000004690.08223395
Approve All Dele...1166750462024-02-26 12:01:0950 days ago1708948869IN
Synthetix: Delegate Approvals
0 ETH0.000000430.0080626
Remove All Deleg...1166306192024-02-25 11:20:1551 days ago1708860015IN
Synthetix: Delegate Approvals
0 ETH0.000000190.00337962
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
1075346122023-07-29 22:00:01262 days ago1690668001
Synthetix: Delegate Approvals
0 ETH
1075227652023-07-29 15:25:07262 days ago1690644307
Synthetix: Delegate Approvals
0 ETH
1075216712023-07-29 14:48:39262 days ago1690642119
Synthetix: Delegate Approvals
0 ETH
1075216712023-07-29 14:48:39262 days ago1690642119
Synthetix: Delegate Approvals
0 ETH
1075178792023-07-29 12:42:15262 days ago1690634535
Synthetix: Delegate Approvals
0 ETH
1075178792023-07-29 12:42:15262 days ago1690634535
Synthetix: Delegate Approvals
0 ETH
1074977832023-07-29 1:32:23263 days ago1690594343
Synthetix: Delegate Approvals
0 ETH
1074977832023-07-29 1:32:23263 days ago1690594343
Synthetix: Delegate Approvals
0 ETH
1074977512023-07-29 1:31:19263 days ago1690594279
Synthetix: Delegate Approvals
0 ETH
1074977512023-07-29 1:31:19263 days ago1690594279
Synthetix: Delegate Approvals
0 ETH
1074977252023-07-29 1:30:27263 days ago1690594227
Synthetix: Delegate Approvals
0 ETH
1074977252023-07-29 1:30:27263 days ago1690594227
Synthetix: Delegate Approvals
0 ETH
1074976832023-07-29 1:29:03263 days ago1690594143
Synthetix: Delegate Approvals
0 ETH
1074976832023-07-29 1:29:03263 days ago1690594143
Synthetix: Delegate Approvals
0 ETH
1074976412023-07-29 1:27:39263 days ago1690594059
Synthetix: Delegate Approvals
0 ETH
1074976412023-07-29 1:27:39263 days ago1690594059
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25263 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25263 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25263 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25263 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25263 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25263 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074974122023-07-29 1:20:01263 days ago1690593601
Synthetix: Delegate Approvals
0 ETH
1074919302023-07-28 22:17:17263 days ago1690582637
Synthetix: Delegate Approvals
0 ETH
1074919302023-07-28 22:17:17263 days ago1690582637
Synthetix: Delegate Approvals
0 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DelegateApprovals

Compiler Version
v0.5.16

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at optimistic.etherscan.io on 2021-08-25
*/

/*
   ____            __   __        __   _
  / __/__ __ ___  / /_ / /  ___  / /_ (_)__ __
 _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ /
/___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\
     /___/

* Synthetix: DelegateApprovals.sol
*
* Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/DelegateApprovals.sol
* Docs: https://docs.synthetix.io/contracts/DelegateApprovals
*
* Contract Dependencies: 
*	- IDelegateApprovals
*	- Owned
*	- State
* Libraries: (none)
*
* MIT License
* ===========
*
* Copyright (c) 2021 Synthetix
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/



pragma solidity ^0.5.16;

// https://docs.synthetix.io/contracts/source/contracts/owned
contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) public {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner {
        _onlyOwner();
        _;
    }

    function _onlyOwner() private view {
        require(msg.sender == owner, "Only the contract owner may perform this action");
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}


// https://docs.synthetix.io/contracts/source/interfaces/idelegateapprovals
interface IDelegateApprovals {
    // Views
    function canBurnFor(address authoriser, address delegate) external view returns (bool);

    function canIssueFor(address authoriser, address delegate) external view returns (bool);

    function canClaimFor(address authoriser, address delegate) external view returns (bool);

    function canExchangeFor(address authoriser, address delegate) external view returns (bool);

    // Mutative
    function approveAllDelegatePowers(address delegate) external;

    function removeAllDelegatePowers(address delegate) external;

    function approveBurnOnBehalf(address delegate) external;

    function removeBurnOnBehalf(address delegate) external;

    function approveIssueOnBehalf(address delegate) external;

    function removeIssueOnBehalf(address delegate) external;

    function approveClaimOnBehalf(address delegate) external;

    function removeClaimOnBehalf(address delegate) external;

    function approveExchangeOnBehalf(address delegate) external;

    function removeExchangeOnBehalf(address delegate) external;
}


// Inheritance


// https://docs.synthetix.io/contracts/source/contracts/state
contract State is Owned {
    // the address of the contract that can modify variables
    // this can only be changed by the owner of this contract
    address public associatedContract;

    constructor(address _associatedContract) internal {
        // This contract is abstract, and thus cannot be instantiated directly
        require(owner != address(0), "Owner must be set");

        associatedContract = _associatedContract;
        emit AssociatedContractUpdated(_associatedContract);
    }

    /* ========== SETTERS ========== */

    // Change the associated contract to a new address
    function setAssociatedContract(address _associatedContract) external onlyOwner {
        associatedContract = _associatedContract;
        emit AssociatedContractUpdated(_associatedContract);
    }

    /* ========== MODIFIERS ========== */

    modifier onlyAssociatedContract {
        require(msg.sender == associatedContract, "Only the associated contract can perform this action");
        _;
    }

    /* ========== EVENTS ========== */

    event AssociatedContractUpdated(address associatedContract);
}


// Inheritance


// https://docs.synthetix.io/contracts/source/contracts/eternalstorage
/**
 * @notice  This contract is based on the code available from this blog
 * https://blog.colony.io/writing-upgradeable-contracts-in-solidity-6743f0eecc88/
 * Implements support for storing a keccak256 key and value pairs. It is the more flexible
 * and extensible option. This ensures data schema changes can be implemented without
 * requiring upgrades to the storage contract.
 */
contract EternalStorage is Owned, State {
    constructor(address _owner, address _associatedContract) public Owned(_owner) State(_associatedContract) {}

    /* ========== DATA TYPES ========== */
    mapping(bytes32 => uint) internal UIntStorage;
    mapping(bytes32 => string) internal StringStorage;
    mapping(bytes32 => address) internal AddressStorage;
    mapping(bytes32 => bytes) internal BytesStorage;
    mapping(bytes32 => bytes32) internal Bytes32Storage;
    mapping(bytes32 => bool) internal BooleanStorage;
    mapping(bytes32 => int) internal IntStorage;

    // UIntStorage;
    function getUIntValue(bytes32 record) external view returns (uint) {
        return UIntStorage[record];
    }

    function setUIntValue(bytes32 record, uint value) external onlyAssociatedContract {
        UIntStorage[record] = value;
    }

    function deleteUIntValue(bytes32 record) external onlyAssociatedContract {
        delete UIntStorage[record];
    }

    // StringStorage
    function getStringValue(bytes32 record) external view returns (string memory) {
        return StringStorage[record];
    }

    function setStringValue(bytes32 record, string calldata value) external onlyAssociatedContract {
        StringStorage[record] = value;
    }

    function deleteStringValue(bytes32 record) external onlyAssociatedContract {
        delete StringStorage[record];
    }

    // AddressStorage
    function getAddressValue(bytes32 record) external view returns (address) {
        return AddressStorage[record];
    }

    function setAddressValue(bytes32 record, address value) external onlyAssociatedContract {
        AddressStorage[record] = value;
    }

    function deleteAddressValue(bytes32 record) external onlyAssociatedContract {
        delete AddressStorage[record];
    }

    // BytesStorage
    function getBytesValue(bytes32 record) external view returns (bytes memory) {
        return BytesStorage[record];
    }

    function setBytesValue(bytes32 record, bytes calldata value) external onlyAssociatedContract {
        BytesStorage[record] = value;
    }

    function deleteBytesValue(bytes32 record) external onlyAssociatedContract {
        delete BytesStorage[record];
    }

    // Bytes32Storage
    function getBytes32Value(bytes32 record) external view returns (bytes32) {
        return Bytes32Storage[record];
    }

    function setBytes32Value(bytes32 record, bytes32 value) external onlyAssociatedContract {
        Bytes32Storage[record] = value;
    }

    function deleteBytes32Value(bytes32 record) external onlyAssociatedContract {
        delete Bytes32Storage[record];
    }

    // BooleanStorage
    function getBooleanValue(bytes32 record) external view returns (bool) {
        return BooleanStorage[record];
    }

    function setBooleanValue(bytes32 record, bool value) external onlyAssociatedContract {
        BooleanStorage[record] = value;
    }

    function deleteBooleanValue(bytes32 record) external onlyAssociatedContract {
        delete BooleanStorage[record];
    }

    // IntStorage
    function getIntValue(bytes32 record) external view returns (int) {
        return IntStorage[record];
    }

    function setIntValue(bytes32 record, int value) external onlyAssociatedContract {
        IntStorage[record] = value;
    }

    function deleteIntValue(bytes32 record) external onlyAssociatedContract {
        delete IntStorage[record];
    }
}


// Inheritance


// Internal references


// https://docs.synthetix.io/contracts/source/contracts/delegateapprovals
contract DelegateApprovals is Owned, IDelegateApprovals {
    bytes32 public constant BURN_FOR_ADDRESS = "BurnForAddress";
    bytes32 public constant ISSUE_FOR_ADDRESS = "IssueForAddress";
    bytes32 public constant CLAIM_FOR_ADDRESS = "ClaimForAddress";
    bytes32 public constant EXCHANGE_FOR_ADDRESS = "ExchangeForAddress";
    bytes32 public constant APPROVE_ALL = "ApproveAll";

    bytes32[5] private _delegatableFunctions = [
        APPROVE_ALL,
        BURN_FOR_ADDRESS,
        ISSUE_FOR_ADDRESS,
        CLAIM_FOR_ADDRESS,
        EXCHANGE_FOR_ADDRESS
    ];

    /* ========== STATE VARIABLES ========== */
    EternalStorage public eternalStorage;

    constructor(address _owner, EternalStorage _eternalStorage) public Owned(_owner) {
        eternalStorage = _eternalStorage;
    }

    /* ========== VIEWS ========== */

    // Move it to setter and associatedState

    // util to get key based on action name + address of authoriser + address for delegate
    function _getKey(
        bytes32 _action,
        address _authoriser,
        address _delegate
    ) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(_action, _authoriser, _delegate));
    }

    // hash of actionName + address of authoriser + address for the delegate
    function canBurnFor(address authoriser, address delegate) external view returns (bool) {
        return _checkApproval(BURN_FOR_ADDRESS, authoriser, delegate);
    }

    function canIssueFor(address authoriser, address delegate) external view returns (bool) {
        return _checkApproval(ISSUE_FOR_ADDRESS, authoriser, delegate);
    }

    function canClaimFor(address authoriser, address delegate) external view returns (bool) {
        return _checkApproval(CLAIM_FOR_ADDRESS, authoriser, delegate);
    }

    function canExchangeFor(address authoriser, address delegate) external view returns (bool) {
        return _checkApproval(EXCHANGE_FOR_ADDRESS, authoriser, delegate);
    }

    function approvedAll(address authoriser, address delegate) public view returns (bool) {
        return eternalStorage.getBooleanValue(_getKey(APPROVE_ALL, authoriser, delegate));
    }

    // internal function to check approval based on action
    // if approved for all actions then will return true
    // before checking specific approvals
    function _checkApproval(
        bytes32 action,
        address authoriser,
        address delegate
    ) internal view returns (bool) {
        if (approvedAll(authoriser, delegate)) return true;

        return eternalStorage.getBooleanValue(_getKey(action, authoriser, delegate));
    }

    /* ========== SETTERS ========== */

    // Approve All
    function approveAllDelegatePowers(address delegate) external {
        _setApproval(APPROVE_ALL, msg.sender, delegate);
    }

    // Removes all delegate approvals
    function removeAllDelegatePowers(address delegate) external {
        for (uint i = 0; i < _delegatableFunctions.length; i++) {
            _withdrawApproval(_delegatableFunctions[i], msg.sender, delegate);
        }
    }

    // Burn on behalf
    function approveBurnOnBehalf(address delegate) external {
        _setApproval(BURN_FOR_ADDRESS, msg.sender, delegate);
    }

    function removeBurnOnBehalf(address delegate) external {
        _withdrawApproval(BURN_FOR_ADDRESS, msg.sender, delegate);
    }

    // Issue on behalf
    function approveIssueOnBehalf(address delegate) external {
        _setApproval(ISSUE_FOR_ADDRESS, msg.sender, delegate);
    }

    function removeIssueOnBehalf(address delegate) external {
        _withdrawApproval(ISSUE_FOR_ADDRESS, msg.sender, delegate);
    }

    // Claim on behalf
    function approveClaimOnBehalf(address delegate) external {
        _setApproval(CLAIM_FOR_ADDRESS, msg.sender, delegate);
    }

    function removeClaimOnBehalf(address delegate) external {
        _withdrawApproval(CLAIM_FOR_ADDRESS, msg.sender, delegate);
    }

    // Exchange on behalf
    function approveExchangeOnBehalf(address delegate) external {
        _setApproval(EXCHANGE_FOR_ADDRESS, msg.sender, delegate);
    }

    function removeExchangeOnBehalf(address delegate) external {
        _withdrawApproval(EXCHANGE_FOR_ADDRESS, msg.sender, delegate);
    }

    function _setApproval(
        bytes32 action,
        address authoriser,
        address delegate
    ) internal {
        require(delegate != address(0), "Can't delegate to address(0)");
        eternalStorage.setBooleanValue(_getKey(action, authoriser, delegate), true);
        emit Approval(authoriser, delegate, action);
    }

    function _withdrawApproval(
        bytes32 action,
        address authoriser,
        address delegate
    ) internal {
        // Check approval is set otherwise skip deleting approval
        if (eternalStorage.getBooleanValue(_getKey(action, authoriser, delegate))) {
            eternalStorage.deleteBooleanValue(_getKey(action, authoriser, delegate));
            emit WithdrawApproval(authoriser, delegate, action);
        }
    }

    function setEternalStorage(EternalStorage _eternalStorage) external onlyOwner {
        require(address(_eternalStorage) != address(0), "Can't set eternalStorage to address(0)");
        eternalStorage = _eternalStorage;
        emit EternalStorageUpdated(address(eternalStorage));
    }

    /* ========== EVENTS ========== */
    event Approval(address indexed authoriser, address delegate, bytes32 action);
    event WithdrawApproval(address indexed authoriser, address delegate, bytes32 action);
    event EternalStorageUpdated(address newEternalStorage);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract EternalStorage","name":"_eternalStorage","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authoriser","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newEternalStorage","type":"address"}],"name":"EternalStorageUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authoriser","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"WithdrawApproval","type":"event"},{"constant":true,"inputs":[],"name":"APPROVE_ALL","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BURN_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CLAIM_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EXCHANGE_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ISSUE_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveAllDelegatePowers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveBurnOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveClaimOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveExchangeOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveIssueOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"approvedAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canBurnFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canClaimFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canExchangeFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canIssueFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eternalStorage","outputs":[{"internalType":"contract EternalStorage","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeAllDelegatePowers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeBurnOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeClaimOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeExchangeOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeIssueOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract EternalStorage","name":"_eternalStorage","type":"address"}],"name":"setEternalStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

80604052348015610019576000806100166110d8565b50505b50600436106101975760003560e01c80638da5cb5b116100e7578063b5bb5619116100a0578063c5e17ab01161007a578063c5e17ab014610529578063d8eeb7c114610531578063e32b3f5214610539578063faf431bb1461054157610197565b8063b5bb56191461049c578063b9156efa146104cb578063bc87acbf146104fa57610197565b80638da5cb5b146103ef57806398ff9c54146103f75780639c79ce35146103ff5780639cbc2ebe1461042e5780639f61d33614610436578063b42e0f151461046557610197565b8063447fbc63116101545780636c8bc9fe1161012e5780636c8bc9fe146103525780636f95200b1461038157806379ba5097146103b05780637d3f0ba2146103b857610197565b8063447fbc63146102d057806353a47bb7146102ff57806359cec3d61461032357610197565b806304872617146101a55780631627540c146101f057806321f4ae57146102215780632c70aecf146102585780634180e5b514610272578063431ce540146102a1575b6000806101a26110d8565b50505b6101dc600480360360408110156101c4576000806101c16110d8565b50505b506001600160a01b0381358116916020013516610578565b604051901515815260200160405180910390f35b61021f6004803603602081101561020f5760008061020c6110d8565b50505b50356001600160a01b03166105a0565b005b6101dc600480360360408110156102405760008061023d6110d8565b50505b506001600160a01b038135811691602001351661061a565b610260610639565b60405190815260200160405180910390f35b61021f600480360360208110156102915760008061028e6110d8565b50505b50356001600160a01b031661064f565b61021f600480360360208110156102c0576000806102bd6110d8565b50505b50356001600160a01b0316610677565b61021f600480360360208110156102ef576000806102ec6110d8565b50505b50356001600160a01b031661069c565b6103076106be565b6040516001600160a01b03909116815260200160405180910390f35b61021f600480360360208110156103425760008061033f6110d8565b50505b50356001600160a01b03166106dd565b61021f600480360360208110156103715760008061036e6110d8565b50505b50356001600160a01b03166106fb565b61021f600480360360208110156103a05760008061039d6110d8565b50505b50356001600160a01b031661071a565b61021f61075a565b6101dc600480360360408110156103d7576000806103d46110d8565b50505b506001600160a01b03813581169160200135166108dd565b6103076108fb565b610307610906565b61021f6004803603602081101561041e5760008061041b6110d8565b50505b50356001600160a01b0316610912565b610260610930565b61021f60048036036020811015610455576000806104526110d8565b50505b50356001600160a01b0316610941565b6101dc60048036036040811015610484576000806104816110d8565b50505b506001600160a01b0381358116916020013516610960565b61021f600480360360208110156104bb576000806104b86110d8565b50505b50356001600160a01b0316610a42565b61021f600480360360208110156104ea576000806104e76110d8565b50505b50356001600160a01b0316610b27565b61021f60048036036020811015610519576000806105166110d8565b50505b50356001600160a01b0316610b49565b610260610b63565b610260610b79565b610260610b92565b6101dc600480360360408110156105605760008061055d6110d8565b50505b506001600160a01b0381358116916020013516610ba7565b60006105976e4973737565466f724164647265737360881b8484610bc5565b90505b92915050565b6105a8610cb5565b80600180806105b5611143565b816001600160a01b0302191690836001600160a01b03160217906105d761119e565b5050507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22816040516001600160a01b03909116815260200160405180910390a150565b60006105976e436c61696d466f724164647265737360881b8484610bc5565b6e4973737565466f724164647265737360881b81565b6106746e436c61696d466f724164647265737360881b5a61066e6111ec565b83610d2f565b50565b6106746e4973737565466f724164647265737360881b5a6106966111ec565b83610e9a565b6106747145786368616e6765466f724164647265737360701b5a61066e6111ec565b600060016106ca611143565b906101000a90046001600160a01b031681565b6106746d4275726e466f724164647265737360901b5a6106966111ec565b6106746e436c61696d466f724164647265737360881b5a6106966111ec565b60005b60058110156107565761074e6002826005811061073657fe5b0161073f611143565b5a6107486111ec565b84610e9a565b60010161071d565b5050565b60006001610766611143565b906101000a90046001600160a01b03166001600160a01b03165a6107886111ec565b6001600160a01b0316146107d65760405162461bcd60e51b815260040180806020018281038252603581526020018061145660359139604001915050604051809103906107d36110d8565b50505b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c600080610802611143565b906101000a90046001600160a01b0316600160009061081f611143565b906101000a90046001600160a01b03166040516001600160a01b039283168152911660208201526040908101905180910390a16000600161085e611143565b906101000a90046001600160a01b03166000806101000a8161087e611143565b816001600160a01b0302191690836001600160a01b03160217906108a061119e565b5050506000600160006101000a816108b6611143565b816001600160a01b0302191690836001600160a01b03160217906108d861119e565b505050565b60006105976d4275726e466f724164647265737360901b8484610bc5565b6000806106ca611143565b600060076106ca611143565b6106746d4275726e466f724164647265737360901b5a61066e6111ec565b69105c1c1c9bdd99505b1b60b21b81565b6106746e4973737565466f724164647265737360881b5a61066e6111ec565b600080600761096d611143565b906101000a90046001600160a01b03166001600160a01b03166317e7dd226109a369105c1c1c9bdd99505b1b60b21b868661106d565b6040516001600160e01b031960e084901b168152600481019190915260240160206040518083038186806109d5611232565b1580156109ea576000806109e76110d8565b50505b505a6109f461127e565b5050505050158015610a13573d6000803e3d6000610a106110d8565b50505b505050506040513d6020811015610a3257600080610a2f6110d8565b50505b8101908080519695505050505050565b610a4a610cb5565b6001600160a01b038116610a985760405162461bcd60e51b81526004018080602001828103825260268152602001806114306026913960400191505060405180910390610a956110d8565b50505b806007600181610aa6611143565b816001600160a01b0302191690836001600160a01b0316021790610ac861119e565b5050507fe3ebe3d58e84fbd094152babb730cf99a14b47f65ed04f35a3bd6356f8161a176007600090610af9611143565b906101000a90046001600160a01b03166040516001600160a01b03909116815260200160405180910390a150565b6106747145786368616e6765466f724164647265737360701b5a6106966111ec565b61067469105c1c1c9bdd99505b1b60b21b5a61066e6111ec565b6e436c61696d466f724164647265737360881b81565b7145786368616e6765466f724164647265737360701b81565b6d4275726e466f724164647265737360901b81565b60006105977145786368616e6765466f724164647265737360701b84845b6000610bd18383610960565b15610bde57506001610cae565b60006007610bea611143565b906101000a90046001600160a01b03166001600160a01b03166317e7dd22610c1386868661106d565b6040516001600160e01b031960e084901b16815260048101919091526024016020604051808303818680610c45611232565b158015610c5a57600080610c576110d8565b50505b505a610c6461127e565b5050505050158015610c83573d6000803e3d6000610c806110d8565b50505b505050506040513d6020811015610ca257600080610c9f6110d8565b50505b81019080805193505050505b9392505050565b600080610cc0611143565b906101000a90046001600160a01b03166001600160a01b03165a610ce26111ec565b6001600160a01b031614610d2d5760405162461bcd60e51b815260040180806020018281038252602f81526020018061148b602f9139604001915050604051809103906107566110d8565b565b6001600160a01b038116610d925760405162461bcd60e51b815260206004820152601c60248201527f43616e27742064656c656761746520746f206164647265737328302900000000604482015260640160405180910390610d8f6110d8565b50505b60006007610d9e611143565b906101000a90046001600160a01b03166001600160a01b0316633eba9ed2610dc785858561106d565b60016040516001600160e01b031960e085901b16815260048101929092521515602482015260440160006040518083038160008780610e04611232565b158015610e1957600080610e166110d8565b50505b505a610e23611369565b505050505050158015610e43573d6000803e3d6000610e406110d8565b50505b50505050816001600160a01b03167f36a9e0c1da9cdc6d8f4bd4cb261f9ad6a45eb1641a557ead7530fbeff9a2633682856040516001600160a01b03909216825260208201526040908101905180910390a2505050565b60006007610ea6611143565b906101000a90046001600160a01b03166001600160a01b03166317e7dd22610ecf85858561106d565b6040516001600160e01b031960e084901b16815260048101919091526024016020604051808303818680610f01611232565b158015610f1657600080610f136110d8565b50505b505a610f2061127e565b5050505050158015610f3f573d6000803e3d6000610f3c6110d8565b50505b505050506040513d6020811015610f5e57600080610f5b6110d8565b50505b8101908080511592506108d89150505760006007610f7a611143565b906101000a90046001600160a01b03166001600160a01b0316633cc1635c610fa385858561106d565b6040516001600160e01b031960e084901b168152600481019190915260240160006040518083038160008780610fd7611232565b158015610fec57600080610fe96110d8565b50505b505a610ff6611369565b505050505050158015611016573d6000803e3d60006110136110d8565b50505b50505050816001600160a01b03167f7e8dc09322ac82342d9dbfd49eb6497fa7ab69ac444f3763a9b8e16530342f4182856040516001600160a01b03909216825260208201526040908101905180910390a2505050565b600083838360405160200180848152602001836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b8152601401935050505060405160208183030381529060405280519060200120949350505050565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156111105780860151828201604001526020016110f5565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b60408110156108d857600082820152602001611187565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b600081526020611187565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611187565b638435035b598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611187565b638540661f598160e01b81526112af565b808083111561059a575090919050565b808083101561059a575090919050565b836004820152846024820152606060448201528660648201526084810160005b888110156112e75780880151828201526020016112cf565b506060828960a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8b8b82606087013350600060045af1505961133c8d3d61129f565b8c01611348818761128f565b5b8281101561135d5760008152602001611349565b50929c50505050505050565b6385979f76598160e01b8152836004820152846024820152606060448201528760648201526084810160005b898110156113ad578089015182820152602001611395565b506060828a60a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8c8c82606087013350600060045af150596114028e3d61129f565b8d0161140e818761128f565b5b82811015611423576000815260200161140f565b50929d5050505050505056fe43616e27742073657420657465726e616c53746f7261676520746f2061646472657373283029596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80638da5cb5b116100de578063b5bb561911610097578063c5e17ab011610071578063c5e17ab014610487578063d8eeb7c11461048f578063e32b3f5214610497578063faf431bb1461049f5761018e565b8063b5bb561914610415578063b9156efa1461043b578063bc87acbf146104615761018e565b80638da5cb5b1461038357806398ff9c541461038b5780639c79ce35146103935780639cbc2ebe146103b95780639f61d336146103c1578063b42e0f15146103e75761018e565b8063447fbc631161014b5780636c8bc9fe116101255780636c8bc9fe146103015780636f95200b1461032757806379ba50971461034d5780637d3f0ba2146103555761018e565b8063447fbc631461029157806353a47bb7146102b757806359cec3d6146102db5761018e565b806304872617146101935780631627540c146101d557806321f4ae57146101fd5780632c70aecf1461022b5780634180e5b514610245578063431ce5401461026b575b600080fd5b6101c1600480360360408110156101a957600080fd5b506001600160a01b03813581169160200135166104cd565b604080519115158252519081900360200190f35b6101fb600480360360208110156101eb57600080fd5b50356001600160a01b03166104f3565b005b6101c16004803603604081101561021357600080fd5b506001600160a01b038135811691602001351661054f565b61023361056e565b60408051918252519081900360200190f35b6101fb6004803603602081101561025b57600080fd5b50356001600160a01b0316610584565b6101fb6004803603602081101561028157600080fd5b50356001600160a01b03166105a4565b6101fb600480360360208110156102a757600080fd5b50356001600160a01b03166105c1565b6102bf6105e1565b604080516001600160a01b039092168252519081900360200190f35b6101fb600480360360208110156102f157600080fd5b50356001600160a01b03166105f0565b6101fb6004803603602081101561031757600080fd5b50356001600160a01b031661060c565b6101fb6004803603602081101561033d57600080fd5b50356001600160a01b0316610629565b6101fb61065a565b6101c16004803603604081101561036b57600080fd5b506001600160a01b0381358116916020013516610716565b6102bf610734565b6102bf610743565b6101fb600480360360208110156103a957600080fd5b50356001600160a01b0316610752565b61023361076e565b6101fb600480360360208110156103d757600080fd5b50356001600160a01b031661077f565b6101c1600480360360408110156103fd57600080fd5b506001600160a01b038135811691602001351661079c565b6101fb6004803603602081101561042b57600080fd5b50356001600160a01b031661082f565b6101fb6004803603602081101561045157600080fd5b50356001600160a01b03166108d6565b6101fb6004803603602081101561047757600080fd5b50356001600160a01b03166108f6565b61023361090e565b610233610924565b61023361093d565b6101c1600480360360408110156104b557600080fd5b506001600160a01b0381358116916020013516610952565b60006104ec6e4973737565466f724164647265737360881b8484610970565b9392505050565b6104fb610a0d565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b60006104ec6e436c61696d466f724164647265737360881b8484610970565b6e4973737565466f724164647265737360881b81565b6105a16e436c61696d466f724164647265737360881b3383610a58565b50565b6105a16e4973737565466f724164647265737360881b3383610b78565b6105a17145786368616e6765466f724164647265737360701b3383610a58565b6001546001600160a01b031681565b6105a16d4275726e466f724164647265737360901b3383610b78565b6105a16e436c61696d466f724164647265737360881b3383610b78565b60005b60058110156106565761064e6002826005811061064557fe5b01543384610b78565b60010161062c565b5050565b6001546001600160a01b031633146106a35760405162461bcd60e51b8152600401808060200182810382526035815260200180610d256035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006104ec6d4275726e466f724164647265737360901b8484610970565b6000546001600160a01b031681565b6007546001600160a01b031681565b6105a16d4275726e466f724164647265737360901b3383610a58565b69105c1c1c9bdd99505b1b60b21b81565b6105a16e4973737565466f724164647265737360881b3383610a58565b6007546000906001600160a01b03166317e7dd226107c869105c1c1c9bdd99505b1b60b21b8686610cb2565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156107fc57600080fd5b505afa158015610810573d6000803e3d6000fd5b505050506040513d602081101561082657600080fd5b50519392505050565b610837610a0d565b6001600160a01b03811661087c5760405162461bcd60e51b8152600401808060200182810382526026815260200180610cff6026913960400191505060405180910390fd5b600780546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fe3ebe3d58e84fbd094152babb730cf99a14b47f65ed04f35a3bd6356f8161a17916020908290030190a150565b6105a17145786368616e6765466f724164647265737360701b3383610b78565b6105a169105c1c1c9bdd99505b1b60b21b3383610a58565b6e436c61696d466f724164647265737360881b81565b7145786368616e6765466f724164647265737360701b81565b6d4275726e466f724164647265737360901b81565b60006104ec7145786368616e6765466f724164647265737360701b84845b600061097c838361079c565b15610989575060016104ec565b6007546001600160a01b03166317e7dd226109a5868686610cb2565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d6020811015610a0357600080fd5b5051949350505050565b6000546001600160a01b03163314610a565760405162461bcd60e51b815260040180806020018281038252602f815260200180610d5a602f913960400191505060405180910390fd5b565b6001600160a01b038116610ab3576040805162461bcd60e51b815260206004820152601c60248201527f43616e27742064656c656761746520746f206164647265737328302900000000604482015290519081900360640190fd5b6007546001600160a01b0316633eba9ed2610acf858585610cb2565b60016040518363ffffffff1660e01b8152600401808381526020018215151515815260200192505050600060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b5050604080516001600160a01b03858116825260208201889052825190871694507f36a9e0c1da9cdc6d8f4bd4cb261f9ad6a45eb1641a557ead7530fbeff9a2633693509081900390910190a2505050565b6007546001600160a01b03166317e7dd22610b94858585610cb2565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610bc857600080fd5b505afa158015610bdc573d6000803e3d6000fd5b505050506040513d6020811015610bf257600080fd5b505115610cad576007546001600160a01b0316633cc1635c610c15858585610cb2565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610c4b57600080fd5b505af1158015610c5f573d6000803e3d6000fd5b5050604080516001600160a01b03858116825260208201889052825190871694507f7e8dc09322ac82342d9dbfd49eb6497fa7ab69ac444f3763a9b8e16530342f4193509081900390910190a25b505050565b6040805160208082018690526bffffffffffffffffffffffff19606086811b82168486015285901b1660548301528251604881840301815260689092019092528051910120939250505056fe43616e27742073657420657465726e616c53746f7261676520746f2061646472657373283029596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a72315820e12b7b14c18eca217ff78f5999c2f2cb4e2a6a9b5bc34992f3bd69f69dbc445164736f6c63430005100032

Library Used


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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.