Token ECO

 

Overview [ERC-20]

Max Total Supply:
10,000,002,800.000392000036586668 ECO

Holders:
1,033

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x8c02D4cc62F79AcEB652321a9f8988c0f6E71E68

Contract Name:
ForwardProxy

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 2 : ForwardProxy.sol
/* -*- c-basic-offset: 4 -*- */
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ForwardTarget.sol";

/* solhint-disable avoid-low-level-calls, no-inline-assembly */

/** @title Upgradable proxy */
contract ForwardProxy {
    // this is the storage slot to hold the target of the proxy
    // keccak256("com.eco.ForwardProxy.target")
    uint256 private constant IMPLEMENTATION_SLOT =
        0xf86c915dad5894faca0dfa067c58fdf4307406d255ed0a65db394f82b77f53d4;

    /** Construct a new proxy.
     *
     * @param _impl The default target address.
     */
    constructor(ForwardTarget _impl) {
        (bool _success, ) = address(_impl).delegatecall(
            abi.encodeWithSelector(_impl.initialize.selector, _impl)
        );
        require(_success, "initialize call failed");

        // Store forwarding target address at specified storage slot, copied
        // from ForwardTarget#IMPLEMENTATION_SLOT
        assembly {
            sstore(IMPLEMENTATION_SLOT, _impl)
        }
    }

    /** @notice Default function that forwards call to proxy target
     */
    fallback() external payable {
        /* This default-function is optimized for minimum gas cost, to make the
         * proxy overhead as small as possible. As such, the entire function is
         * structured to optimize gas cost in the case of successful function
         * calls. As such, calls to e.g. calldatasize and calldatasize are
         * repeated, since calling them again is no more expensive than
         * duplicating them on stack.
         * This is also the only function in this contract, which avoids the
         * function dispatch overhead.
         */

        assembly {
            // Copy all call arguments to memory starting at 0x0
            calldatacopy(0x0, 0, calldatasize())

            // Forward to proxy target (loaded from IMPLEMENTATION_SLOT), using
            // arguments from memory 0x0 and having results written to
            // memory 0x0.
            let delegate_result := delegatecall(
                gas(),
                sload(IMPLEMENTATION_SLOT),
                0x0,
                calldatasize(),
                0x0,
                0
            )

            let result_size := returndatasize()

            //copy result into return buffer
            returndatacopy(0x0, 0, result_size)

            if delegate_result {
                // If the call was successful, return
                return(0x0, result_size)
            }

            // If the call was not successful, revert
            revert(0x0, result_size)
        }
    }
}

File 2 of 2 : ForwardTarget.sol
/* -*- c-basic-offset: 4 -*- */
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/* solhint-disable no-inline-assembly */

/** @title Target for ForwardProxy and EcoInitializable */
abstract contract ForwardTarget {
    // Must match definition in ForwardProxy
    // keccak256("com.eco.ForwardProxy.target")
    uint256 private constant IMPLEMENTATION_SLOT =
        0xf86c915dad5894faca0dfa067c58fdf4307406d255ed0a65db394f82b77f53d4;

    modifier onlyConstruction() {
        require(
            implementation() == address(0),
            "Can only be called during initialization"
        );
        _;
    }

    constructor() {
        setImplementation(address(this));
    }

    /** @notice Storage initialization of cloned contract
     *
     * This is used to initialize the storage of the forwarded contract, and
     * should (typically) copy or repeat any work that would normally be
     * done in the constructor of the proxied contract.
     *
     * Implementations of ForwardTarget should override this function,
     * and chain to super.initialize(_self).
     *
     * @param _self The address of the original contract instance (the one being
     *              forwarded to).
     */
    function initialize(address _self) public virtual onlyConstruction {
        address _implAddress = address(ForwardTarget(_self).implementation());
        require(
            _implAddress != address(0),
            "initialization failure: nothing to implement"
        );
        setImplementation(_implAddress);
    }

    /** Get the address of the proxy target contract.
     */
    function implementation() public view returns (address _impl) {
        assembly {
            _impl := sload(IMPLEMENTATION_SLOT)
        }
    }

    /** @notice Set new implementation */
    function setImplementation(address _impl) internal {
        require(implementation() != _impl, "Implementation already matching");
        assembly {
            sstore(IMPLEMENTATION_SLOT, _impl)
        }
    }
}

Settings
{
  "metadata": {
    "bytecodeHash": "none"
  },
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract ForwardTarget","name":"_impl","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]

608060405234801561001057600080fd5b5060405161020a38038061020a83398101604081905261002f9161013c565b604080516001600160a01b038316602480830182905283518084039091018152604490920183526020820180516001600160e01b031663189acdbd60e31b17905291516000929161007f9161016c565b600060405180830381855af49150503d80600081146100ba576040519150601f19603f3d011682016040523d82523d6000602084013e6100bf565b606091505b50509050806101145760405162461bcd60e51b815260206004820152601660248201527f696e697469616c697a652063616c6c206661696c656400000000000000000000604482015260640160405180910390fd5b507ff86c915dad5894faca0dfa067c58fdf4307406d255ed0a65db394f82b77f53d4556101a7565b60006020828403121561014e57600080fd5b81516001600160a01b038116811461016557600080fd5b9392505050565b6000825160005b8181101561018d5760208186018101518583015201610173565b8181111561019c576000828501525b509190910192915050565b6055806101b56000396000f3fe608060405236600080376000803660007ff86c915dad5894faca0dfa067c58fdf4307406d255ed0a65db394f82b77f53d4545af43d806000803e8115604357806000f35b806000fdfea164736f6c6343000809000a000000000000000000000000fa4bf0c3669bfda1b7afae7495a323fd0bf07adb

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.