POL Price: $0.671332 (-3.46%)
 

Overview

Max Total Supply

5,000,000,000 EPILLO

Holders

13,329

Total Transfers

-

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
EpilloToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at polygonscan.com on 2022-10-28
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}
contract EpilloToken is Proxy {
    
    // Storage position of the address of the current implementation
    bytes32 private constant implementationPosition = 
        keccak256("org.smartdefi.implementation.address");
    
    // Storage position of the owner of the contract
    bytes32 private constant proxyOwnerPosition = 
        keccak256("org.smartdefi.proxy.owner");
    
    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyProxyOwner() {
        require (msg.sender == proxyOwner(), "Not Proxy owner");
        _;
    }

    /**
    * @dev the constructor sets owner
    */
    constructor() {
        _setUpgradeabilityOwner(msg.sender);
    }

    /**
     * @dev Allows the current owner to transfer ownership
     * @param _newOwner The address to transfer ownership to
     */
    function transferProxyOwnership(address _newOwner) 
        public onlyProxyOwner 
    {
        require(_newOwner != address(0));
        _setUpgradeabilityOwner(_newOwner);
    }
    
    /**
     * @dev Allows the proxy owner to upgrade the implementation
     * @param _impl address of the new implementation
     */
    function upgradeTo(address _impl) 
        public onlyProxyOwner
    {
        _upgradeTo(_impl);
    }
    
    /**
     * @dev Tells the address of the current implementation
     * @return impl address of the current implementation
     */
    function _implementation()
        internal
        view
        override
        returns (address impl)
    {
        bytes32 position = implementationPosition;
        assembly {
            impl := sload(position)
        }
    }

    function implementation() external view returns (address) {
        return _implementation();
    }
    
    /**
     * @dev Tells the address of the owner
     * @return owner the address of the owner
     */
    function proxyOwner() public view returns (address owner) {
        bytes32 position = proxyOwnerPosition;
        assembly {
            owner := sload(position)
        }
    }
    
    /**
     * @dev Sets the address of the current implementation
     * @param _newImplementation address of the new implementation
     */
    function _setImplementation(address _newImplementation) 
        internal 
    {
        bytes32 position = implementationPosition;
        assembly {
            sstore(position, _newImplementation)
        }
    }
    
    /**
     * @dev Upgrades the implementation address
     * @param _newImplementation address of the new implementation
     */
    function _upgradeTo(address _newImplementation) internal {
        address currentImplementation = _implementation();
        require(currentImplementation != _newImplementation);
        _setImplementation(_newImplementation);
    }
    
    /**
     * @dev Sets the address of the owner
     */
    function _setUpgradeabilityOwner(address _newProxyOwner) 
        internal 
    {
        bytes32 position = proxyOwnerPosition;
        assembly {
            sstore(position, _newProxyOwner)
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50610039337f41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeb55565b610340806100486000396000f3fe6080604052600436106100435760003560e01c8063025313a21461005a5780633659cfe6146100945780635c60da1b146100b4578063f1739cae146100c957610052565b36610052576100506100e9565b005b6100506100e9565b34801561006657600080fd5b506000805160206102eb833981519152545b6040516001600160a01b03909116815260200160405180910390f35b3480156100a057600080fd5b506100506100af36600461029a565b610109565b3480156100c057600080fd5b5061007861017c565b3480156100d557600080fd5b506100506100e436600461029a565b610199565b6101076101026000805160206102cb8339815191525490565b610224565b565b6000805160206102eb833981519152546001600160a01b0316336001600160a01b0316146101705760405162461bcd60e51b815260206004820152600f60248201526e2737ba10283937bc3c9037bbb732b960891b60448201526064015b60405180910390fd5b61017981610248565b50565b60006101946000805160206102cb8339815191525490565b905090565b6000805160206102eb833981519152546001600160a01b0316336001600160a01b0316146101fb5760405162461bcd60e51b815260206004820152600f60248201526e2737ba10283937bc3c9037bbb732b960891b6044820152606401610167565b6001600160a01b03811661020e57600080fd5b610179816000805160206102eb83398151915255565b3660008037600080366000845af43d6000803e808015610243573d6000f35b3d6000fd5b60006102606000805160206102cb8339815191525490565b9050816001600160a01b0316816001600160a01b03160361028057600080fd5b610296826000805160206102cb83398151915255565b5050565b6000602082840312156102ac57600080fd5b81356001600160a01b03811681146102c357600080fd5b939250505056fefede9e42e1fa6028f70c9467c66f74b1840d179d4e78cd28a66d5f518a70a7ae41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeba2646970667358221220b8624ad8f2def3382b9a920ec1140e38edfbcce278da33e2f989bc249a58bd7764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106100435760003560e01c8063025313a21461005a5780633659cfe6146100945780635c60da1b146100b4578063f1739cae146100c957610052565b36610052576100506100e9565b005b6100506100e9565b34801561006657600080fd5b506000805160206102eb833981519152545b6040516001600160a01b03909116815260200160405180910390f35b3480156100a057600080fd5b506100506100af36600461029a565b610109565b3480156100c057600080fd5b5061007861017c565b3480156100d557600080fd5b506100506100e436600461029a565b610199565b6101076101026000805160206102cb8339815191525490565b610224565b565b6000805160206102eb833981519152546001600160a01b0316336001600160a01b0316146101705760405162461bcd60e51b815260206004820152600f60248201526e2737ba10283937bc3c9037bbb732b960891b60448201526064015b60405180910390fd5b61017981610248565b50565b60006101946000805160206102cb8339815191525490565b905090565b6000805160206102eb833981519152546001600160a01b0316336001600160a01b0316146101fb5760405162461bcd60e51b815260206004820152600f60248201526e2737ba10283937bc3c9037bbb732b960891b6044820152606401610167565b6001600160a01b03811661020e57600080fd5b610179816000805160206102eb83398151915255565b3660008037600080366000845af43d6000803e808015610243573d6000f35b3d6000fd5b60006102606000805160206102cb8339815191525490565b9050816001600160a01b0316816001600160a01b03160361028057600080fd5b610296826000805160206102cb83398151915255565b5050565b6000602082840312156102ac57600080fd5b81356001600160a01b03811681146102c357600080fd5b939250505056fefede9e42e1fa6028f70c9467c66f74b1840d179d4e78cd28a66d5f518a70a7ae41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeba2646970667358221220b8624ad8f2def3382b9a920ec1140e38edfbcce278da33e2f989bc249a58bd7764736f6c63430008110033

Deployed Bytecode Sourcemap

3264:3174:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2905:11;:9;:11::i;:::-;3264:3174;;2674:11;:9;:11::i;5200:183::-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5350:15:0;5200:183;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5200:183:0;;;;;;;4471:107;;;;;;;;;;-1:-1:-1;4471:107:0;;;;;:::i;:::-;;:::i;4978:101::-;;;;;;;;;;;;;:::i;4135:185::-;;;;;;;;;;-1:-1:-1;4135:185:0;;;;;:::i;:::-;;:::i;2311:113::-;2388:28;2398:17;-1:-1:-1;;;;;;;;;;;4937:15:0;;4728:242;2398:17;2388:9;:28::i;:::-;2311:113::o;4471:107::-;-1:-1:-1;;;;;;;;;;;5350:15:0;-1:-1:-1;;;;;3789:26:0;:10;-1:-1:-1;;;;;3789:26:0;;3780:55;;;;-1:-1:-1;;;3780:55:0;;715:2:1;3780:55:0;;;697:21:1;754:2;734:18;;;727:30;-1:-1:-1;;;773:18:1;;;766:45;828:18;;3780:55:0;;;;;;;;;4553:17:::1;4564:5;4553:10;:17::i;:::-;4471:107:::0;:::o;4978:101::-;5027:7;5054:17;-1:-1:-1;;;;;;;;;;;4937:15:0;;4728:242;5054:17;5047:24;;4978:101;:::o;4135:185::-;-1:-1:-1;;;;;;;;;;;5350:15:0;-1:-1:-1;;;;;3789:26:0;:10;-1:-1:-1;;;;;3789:26:0;;3780:55;;;;-1:-1:-1;;;3780:55:0;;715:2:1;3780:55:0;;;697:21:1;754:2;734:18;;;727:30;-1:-1:-1;;;773:18:1;;;766:45;828:18;;3780:55:0;513:339:1;3780:55:0;-1:-1:-1;;;;;4243:23:0;::::1;4235:32;;;::::0;::::1;;4278:34;4302:9;-1:-1:-1::0;;;;;;;;;;;6385:32:0;6220:215;901:918;1244:14;1241:1;1238;1225:34;1462:1;1459;1443:14;1440:1;1424:14;1417:5;1404:60;1541:16;1538:1;1535;1520:38;1581:6;1650:68;;;;1769:16;1766:1;1759:27;1650:68;1686:16;1683:1;1676:27;5910:237;5978:29;6010:17;-1:-1:-1;;;;;;;;;;;4937:15:0;;4728:242;6010:17;5978:49;;6071:18;-1:-1:-1;;;;;6046:43:0;:21;-1:-1:-1;;;;;6046:43:0;;6038:52;;;;;;6101:38;6120:18;-1:-1:-1;;;;;;;;;;;5709:36:0;5541:222;6101:38;5967:180;5910:237;:::o;222:286:1:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;376:23;;-1:-1:-1;;;;;428:31:1;;418:42;;408:70;;474:1;471;464:12;408:70;497:5;222:286;-1:-1:-1;;;222:286:1:o

Swarm Source

ipfs://b8624ad8f2def3382b9a920ec1140e38edfbcce278da33e2f989bc249a58bd77
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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.