ETH Price: $3,931.47 (+0.51%)

Token

Doges (Doges)
 

Overview

Max Total Supply

5,001 Doges

Holders

1,165

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 Doges
0xfbd6aa5500a3ccd2a8311c8f2b1827ed314481d7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Dogewood is an RPG that takes place 100% on-chain - with the metadata and images generated and stored fully on-chain.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Proxy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Proxy.sol
pragma solidity ^0.8.7;

/**
 * @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.
 */
contract Proxy {

    address implementation_;
    address public admin;

    constructor(address impl) {
        implementation_ = impl;
        admin = msg.sender;
    }

    receive() external payable {}

    function setImplementation(address newImpl) public {
        require(msg.sender == admin);
        implementation_ = newImpl;
    }
    
    function implementation() public view returns (address impl) {
        impl = implementation_;
    }

    /**
     * @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 returns (address) {
        return 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 {
        _delegate(_implementation());
    }

}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImpl","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161023038038061023083398101604081905261002f9161005d565b600080546001600160a01b039092166001600160a01b0319928316179055600180549091163317905561008d565b60006020828403121561006f57600080fd5b81516001600160a01b038116811461008657600080fd5b9392505050565b6101948061009c6000396000f3fe6080604052600436106100385760003560e01c80635c60da1b1461005b578063d784d42614610091578063f851a440146100b15761003f565b3661003f57005b6100596100546000546001600160a01b031690565b6100d1565b005b34801561006757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b34801561009d57600080fd5b506100596100ac36600461012e565b6100f5565b3480156100bd57600080fd5b50600154610075906001600160a01b031681565b3660008037600080366000845af43d6000803e8080156100f0573d6000f35b3d6000fd5b6001546001600160a01b0316331461010c57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014057600080fd5b81356001600160a01b038116811461015757600080fd5b939250505056fea2646970667358221220001de39dde5e7ae91a3354c2a773b0bb0ace15287bf25bdcfe0a0bfa11b586b764736f6c6343000807003300000000000000000000000019330e05464f8c6e671e7be24a8b220874ee082b

Deployed Bytecode

0x6080604052600436106100385760003560e01c80635c60da1b1461005b578063d784d42614610091578063f851a440146100b15761003f565b3661003f57005b6100596100546000546001600160a01b031690565b6100d1565b005b34801561006757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b34801561009d57600080fd5b506100596100ac36600461012e565b6100f5565b3480156100bd57600080fd5b50600154610075906001600160a01b031681565b3660008037600080366000845af43d6000803e8080156100f0573d6000f35b3d6000fd5b6001546001600160a01b0316331461010c57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014057600080fd5b81356001600160a01b038116811461015757600080fd5b939250505056fea2646970667358221220001de39dde5e7ae91a3354c2a773b0bb0ace15287bf25bdcfe0a0bfa11b586b764736f6c63430008070033

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

00000000000000000000000019330e05464f8c6e671e7be24a8b220874ee082b

-----Decoded View---------------
Arg [0] : impl (address): 0x19330e05464f8c6E671E7bE24a8B220874Ee082B

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000019330e05464f8c6e671e7be24a8b220874ee082b


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.