ETH Price: $3,917.82 (-0.56%)

Contract

0x2A23bc0EA97A89abD91214E8e4d20F02Fe14743f

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

ContractCreator

GENESIS at txn GENESIS_2a23bc0ea97a89abd91214e8e4d20f02fe14743f

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve Claim On...1291987672024-12-12 9:38:3120 hrs ago1733996311IN
Synthetix: Delegate Approvals
0 ETH0.0000002093240.00010076
Approve Issue On...1291751632024-12-11 20:31:4333 hrs ago1733949103IN
Synthetix: Delegate Approvals
0 ETH0.0000002741560.00100084
Approve Issue On...1291716582024-12-11 18:34:5335 hrs ago1733942093IN
Synthetix: Delegate Approvals
0 ETH0.0000003923170.00100114
Approve All Dele...1291637892024-12-11 14:12:3540 hrs ago1733926355IN
Synthetix: Delegate Approvals
0 ETH0.0000004119520.001003
Approve All Dele...1291205742024-12-10 14:12:052 days ago1733839925IN
Synthetix: Delegate Approvals
0 ETH0.0000015369470.00100044
Approve All Dele...1289501082024-12-06 15:29:536 days ago1733498993IN
Synthetix: Delegate Approvals
0 ETH0.0000052062820.00010073
Approve All Dele...1288896282024-12-05 5:53:538 days ago1733378033IN
Synthetix: Delegate Approvals
0 ETH0.000001514310.00100043
Approve All Dele...1288892492024-12-05 5:41:158 days ago1733377275IN
Synthetix: Delegate Approvals
0 ETH0.0000014535070.00100038
Approve All Dele...1286392432024-11-29 10:47:4313 days ago1732877263IN
Synthetix: Delegate Approvals
0 ETH0.0000001103760.00100458
Remove Claim On ...1284975752024-11-26 4:05:2717 days ago1732593927IN
Synthetix: Delegate Approvals
0 ETH0.0000021826310.0010004
Approve All Dele...1284416872024-11-24 21:02:3118 days ago1732482151IN
Synthetix: Delegate Approvals
0 ETH0.0000001689780.00100047
Approve All Dele...1284042062024-11-24 0:13:0919 days ago1732407189IN
Synthetix: Delegate Approvals
0 ETH0.0000001108040.00000061
Remove Claim On ...1283564682024-11-22 21:41:5320 days ago1732311713IN
Synthetix: Delegate Approvals
0 ETH0.0000003133190.0010006
Remove All Deleg...1283343222024-11-22 9:23:4120 days ago1732267421IN
Synthetix: Delegate Approvals
0 ETH0.0000001386450.00100302
Approve All Dele...1282168212024-11-19 16:06:5923 days ago1732032419IN
Synthetix: Delegate Approvals
0 ETH0.0000003847320.001001
Approve All Dele...1279538662024-11-13 14:01:4929 days ago1731506509IN
Synthetix: Delegate Approvals
0 ETH0.0000005742730.00110085
Approve All Dele...1278920552024-11-12 3:41:2731 days ago1731382887IN
Synthetix: Delegate Approvals
0 ETH0.0000039856980.0010005
Approve All Dele...1278260132024-11-10 15:00:0332 days ago1731250803IN
Synthetix: Delegate Approvals
0 ETH0.0000014388750.001001
Approve All Dele...1277584562024-11-09 1:28:0934 days ago1731115689IN
Synthetix: Delegate Approvals
0 ETH0.0000001175550.00100147
Remove All Deleg...1277332542024-11-08 11:28:0534 days ago1731065285IN
Synthetix: Delegate Approvals
0 ETH0.0000001658570.00100108
Approve All Dele...1277332132024-11-08 11:26:4334 days ago1731065203IN
Synthetix: Delegate Approvals
0 ETH0.0000001698870.00100112
Remove All Deleg...1273675162024-10-31 0:16:4943 days ago1730333809IN
Synthetix: Delegate Approvals
0 ETH0.0000002143750.00100044
Remove All Deleg...1270188462024-10-22 22:34:2951 days ago1729636469IN
Synthetix: Delegate Approvals
0 ETH0.00000012570.00150046
Approve All Dele...1270188192024-10-22 22:33:3551 days ago1729636415IN
Synthetix: Delegate Approvals
0 ETH0.0000000971680.00100045
Remove All Deleg...1269152442024-10-20 13:01:0553 days ago1729429265IN
Synthetix: Delegate Approvals
0 ETH0.000000171720.00120116
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
1075346122023-07-29 22:00:01502 days ago1690668001
Synthetix: Delegate Approvals
0 ETH
1075227652023-07-29 15:25:07502 days ago1690644307
Synthetix: Delegate Approvals
0 ETH
1075216712023-07-29 14:48:39502 days ago1690642119
Synthetix: Delegate Approvals
0 ETH
1075216712023-07-29 14:48:39502 days ago1690642119
Synthetix: Delegate Approvals
0 ETH
1075178792023-07-29 12:42:15502 days ago1690634535
Synthetix: Delegate Approvals
0 ETH
1075178792023-07-29 12:42:15502 days ago1690634535
Synthetix: Delegate Approvals
0 ETH
1074977832023-07-29 1:32:23503 days ago1690594343
Synthetix: Delegate Approvals
0 ETH
1074977832023-07-29 1:32:23503 days ago1690594343
Synthetix: Delegate Approvals
0 ETH
1074977512023-07-29 1:31:19503 days ago1690594279
Synthetix: Delegate Approvals
0 ETH
1074977512023-07-29 1:31:19503 days ago1690594279
Synthetix: Delegate Approvals
0 ETH
1074977252023-07-29 1:30:27503 days ago1690594227
Synthetix: Delegate Approvals
0 ETH
1074977252023-07-29 1:30:27503 days ago1690594227
Synthetix: Delegate Approvals
0 ETH
1074976832023-07-29 1:29:03503 days ago1690594143
Synthetix: Delegate Approvals
0 ETH
1074976832023-07-29 1:29:03503 days ago1690594143
Synthetix: Delegate Approvals
0 ETH
1074976412023-07-29 1:27:39503 days ago1690594059
Synthetix: Delegate Approvals
0 ETH
1074976412023-07-29 1:27:39503 days ago1690594059
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25503 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25503 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25503 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25503 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25503 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074975142023-07-29 1:23:25503 days ago1690593805
Synthetix: Delegate Approvals
0 ETH
1074974122023-07-29 1:20:01503 days ago1690593601
Synthetix: Delegate Approvals
0 ETH
1074919302023-07-28 22:17:17503 days ago1690582637
Synthetix: Delegate Approvals
0 ETH
1074919302023-07-28 22:17:17503 days ago1690582637
Synthetix: Delegate Approvals
0 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Genesis Bytecode Match Only)

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 Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction 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.