ETH Price: $2,517.76 (+0.42%)

Token

Evaverse (EVA)
 

Overview

Max Total Supply

10,000 EVA

Holders

2,558

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 EVA
0x8C2cEaB086BE999D755661D97564f2bC830C5424
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Evaverse NFT Collection is a 10,000 1/1 unique ERC-721 set of beautifully animated 3D avatars. Each avatar is created from up to 19 possible unique traits, creating 430 million total unique variations possible. Certain avatars will possess incredibly rare traits.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Evaverse

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: Evaverse.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Proxy.sol";

contract Evaverse is Proxy {
    constructor (address logicAddress) {
        _delegateAddress = logicAddress;
    }
}

File 2 of 3: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

// We can't use the default implementation of OpenZeppelin's Ownable because it uses a constructor which doesn't work with Proxy contracts

abstract contract Ownable {
    address internal _owner;

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    
    constructor () {
        _owner = msg.sender;
    }

    function SetOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _owner = newOwner;
    }
}

File 3 of 3: Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Ownable.sol";

// This is mostly lifted from: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/Proxy.sol
// Honorably mentions should be: https://fravoll.github.io/solidity-patterns/proxy_delegate.html
// which guided me to: https://github.com/fravoll/solidity-patterns/tree/master/ProxyDelegate

// Good Info here: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable

// Sample ERC721 Upgradable contract: https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/tree/master/contracts/token/ERC721

abstract contract Proxy is Ownable {

    address internal _delegateAddress;
    
    function GetLogic() external view onlyOwner returns (address) {
        return _delegateAddress;
    }

    function SetLogic(address delegate) external onlyOwner {
        _delegateAddress = delegate;
    }

    fallback () external payable {
        _delegate(_delegateAddress);
    }

    receive () external payable {
        _delegate(_delegateAddress);
    }
    
    function _delegate(address implementation) internal {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            //Optional, if we wan't to get rid of the param to this function, load from member variable
            //let _target := sload(0)
            
            // 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()) }
        }
    }
}

abstract contract ProxyTarget is Ownable {
    address internal _delegateAddress;
    
    function GetLogicContract() external view onlyOwner returns (address) {
        return _delegateAddress;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"logicAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"GetLogic","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"SetLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"SetOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516103ca3803806103ca83398101604081905261002f91610062565b60008054336001600160a01b031991821617909155600180549091166001600160a01b0392909216919091179055610090565b600060208284031215610073578081fd5b81516001600160a01b0381168114610089578182fd5b9392505050565b61032b8061009f6000396000f3fe6080604052600436106100435760003560e01c8063167d3e9c146100745780638da5cb5b146100945780639204395f146100ca578063d8d7a176146100ea5761005f565b3661005f5760015461005d906001600160a01b03166100ff565b005b60015461005d906001600160a01b03166100ff565b34801561008057600080fd5b5061005d61008f366004610292565b610123565b3480156100a057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100d657600080fd5b5061005d6100e5366004610292565b6101ec565b3480156100f657600080fd5b506100ae610247565b3660008037600080366000845af43d6000803e80801561011e573d6000f35b3d6000fd5b336101366000546001600160a01b031690565b6001600160a01b0316146101655760405162461bcd60e51b815260040161015c906102c0565b60405180910390fd5b6001600160a01b0381166101ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161015c565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b336101ff6000546001600160a01b031690565b6001600160a01b0316146102255760405162461bcd60e51b815260040161015c906102c0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60003361025c6000546001600160a01b031690565b6001600160a01b0316146102825760405162461bcd60e51b815260040161015c906102c0565b506001546001600160a01b031690565b6000602082840312156102a3578081fd5b81356001600160a01b03811681146102b9578182fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220f22896e01da378028fba3cdf6dc4a9796aa7e448f6fb5d7aeb27c78393f49c8c64736f6c63430008040033000000000000000000000000cee36bdd217b368858367b952d3cc578e2ee39b5

Deployed Bytecode

0x6080604052600436106100435760003560e01c8063167d3e9c146100745780638da5cb5b146100945780639204395f146100ca578063d8d7a176146100ea5761005f565b3661005f5760015461005d906001600160a01b03166100ff565b005b60015461005d906001600160a01b03166100ff565b34801561008057600080fd5b5061005d61008f366004610292565b610123565b3480156100a057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100d657600080fd5b5061005d6100e5366004610292565b6101ec565b3480156100f657600080fd5b506100ae610247565b3660008037600080366000845af43d6000803e80801561011e573d6000f35b3d6000fd5b336101366000546001600160a01b031690565b6001600160a01b0316146101655760405162461bcd60e51b815260040161015c906102c0565b60405180910390fd5b6001600160a01b0381166101ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161015c565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b336101ff6000546001600160a01b031690565b6001600160a01b0316146102255760405162461bcd60e51b815260040161015c906102c0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60003361025c6000546001600160a01b031690565b6001600160a01b0316146102825760405162461bcd60e51b815260040161015c906102c0565b506001546001600160a01b031690565b6000602082840312156102a3578081fd5b81356001600160a01b03811681146102b9578182fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220f22896e01da378028fba3cdf6dc4a9796aa7e448f6fb5d7aeb27c78393f49c8c64736f6c63430008040033

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

000000000000000000000000cee36bdd217b368858367b952d3cc578e2ee39b5

-----Decoded View---------------
Arg [0] : logicAddress (address): 0xCeE36BdD217b368858367B952d3CC578e2EE39B5

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


Deployed Bytecode Sourcemap

87:122:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:16:2;;1078:27;;-1:-1:-1;;;;;1088:16:2;1078:9;:27::i;:::-;87:122:0;;1006:16:2;;996:27;;-1:-1:-1;;;;;1006:16:2;996:9;:27::i;547:175:1:-;;;;;;;;;;-1:-1:-1;547:175:1;;;;;:::i;:::-;;:::i;269:79::-;;;;;;;;;;-1:-1:-1;307:7:1;334:6;-1:-1:-1;;;;;334:6:1;269:79;;;-1:-1:-1;;;;;489:32:3;;;471:51;;459:2;444:18;269:79:1;;;;;;;847:101:2;;;;;;;;;;-1:-1:-1;847:101:2;;;;;:::i;:::-;;:::i;735:104::-;;;;;;;;;;;;;:::i;1125:1065::-;1675:14;1672:1;1669;1656:34;1893:1;1890;1874:14;1871:1;1855:14;1848:5;1835:60;1972:16;1969:1;1966;1951:38;2012:6;2081:38;;;;2153:16;2150:1;2143:27;2081:38;2100:16;2097:1;2090:27;547:175:1;407:10;396:7;307;334:6;-1:-1:-1;;;;;334:6:1;;269:79;396:7;-1:-1:-1;;;;;396:21:1;;388:66;;;;-1:-1:-1;;;388:66:1;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;621:22:1;::::1;613:73;;;::::0;-1:-1:-1;;;613:73:1;;735:2:3;613:73:1::1;::::0;::::1;717:21:3::0;774:2;754:18;;;747:30;813:34;793:18;;;786:62;-1:-1:-1;;;864:18:3;;;857:36;910:19;;613:73:1::1;707:228:3::0;613:73:1::1;697:6;:17:::0;;-1:-1:-1;;;;;;697:17:1::1;-1:-1:-1::0;;;;;697:17:1;;;::::1;::::0;;;::::1;::::0;;547:175::o;847:101:2:-;407:10:1;396:7;307;334:6;-1:-1:-1;;;;;334:6:1;;269:79;396:7;-1:-1:-1;;;;;396:21:1;;388:66;;;;-1:-1:-1;;;388:66:1;;;;;;;:::i;:::-;913:16:2::1;:27:::0;;-1:-1:-1;;;;;;913:27:2::1;-1:-1:-1::0;;;;;913:27:2;;;::::1;::::0;;;::::1;::::0;;847:101::o;735:104::-;788:7;407:10:1;396:7;307;334:6;-1:-1:-1;;;;;334:6:1;;269:79;396:7;-1:-1:-1;;;;;396:21:1;;388:66;;;;-1:-1:-1;;;388:66:1;;;;;;;:::i;:::-;-1:-1:-1;815:16:2::1;::::0;-1:-1:-1;;;;;815:16:2::1;735:104:::0;:::o;14:306:3:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;178:23;;-1:-1:-1;;;;;230:31:3;;220:42;;210:2;;281:6;273;266:22;210:2;309:5;84:236;-1:-1:-1;;;84:236:3:o;940:356::-;1142:2;1124:21;;;1161:18;;;1154:30;1220:34;1215:2;1200:18;;1193:62;1287:2;1272:18;;1114:182::o

Swarm Source

ipfs://f22896e01da378028fba3cdf6dc4a9796aa7e448f6fb5d7aeb27c78393f49c8c
Loading...
Loading
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.