ETH Price: $3,053.08 (-2.61%)
Gas: 4 Gwei

Token

Evolution Land Objects (EVO)
 

Overview

Max Total Supply

10,663 EVO

Holders

836

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 EVO
0xa044468730b5d51c7ce785ee04ae6bc963f8a7c7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Evolution Land is a simulation game with game asset management as its core. It is also an open platform and self-governing ecology based on the blockchain.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OwnedUpgradeabilityProxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-03-25
*/

// Dependency file: contracts/Proxy.sol

// pragma solidity ^0.4.21;

/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
contract Proxy {
  /**
  * @dev Tells the address of the implementation where every call will be delegated.
  * @return address of the implementation to which it will be delegated
  */
  function implementation() public view returns (address);

  /**
  * @dev Fallback function allowing to perform a delegatecall to the given implementation.
  * This function will return whatever the implementation call returns
  */
  function () payable public {
    address _impl = implementation();
    require(_impl != address(0));

    assembly {
      let ptr := mload(0x40)
      calldatacopy(ptr, 0, calldatasize)
      let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
      let size := returndatasize
      returndatacopy(ptr, 0, size)

      switch result
      case 0 { revert(ptr, size) }
      default { return(ptr, size) }
    }
  }
}


// Dependency file: contracts/UpgradeabilityProxy.sol

// pragma solidity ^0.4.21;

// import 'contracts/Proxy.sol';

/**
 * @title UpgradeabilityProxy
 * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
 */
contract UpgradeabilityProxy is Proxy {
  /**
   * @dev This event will be emitted every time the implementation gets upgraded
   * @param implementation representing the address of the upgraded implementation
   */
  event Upgraded(address indexed implementation);

  // Storage position of the address of the current implementation
  bytes32 private constant implementationPosition = keccak256("org.zeppelinos.proxy.implementation");

  /**
   * @dev Constructor function
   */
  function UpgradeabilityProxy() public {}

  /**
   * @dev Tells the address of the current implementation
   * @return address of the current implementation
   */
  function implementation() public view returns (address impl) {
    bytes32 position = implementationPosition;
    assembly {
      impl := sload(position)
    }
  }

  /**
   * @dev Sets the address of the current implementation
   * @param newImplementation address representing the new implementation to be set
   */
  function setImplementation(address newImplementation) internal {
    bytes32 position = implementationPosition;
    assembly {
      sstore(position, newImplementation)
    }
  }

  /**
   * @dev Upgrades the implementation address
   * @param newImplementation representing the address of the new implementation to be set
   */
  function _upgradeTo(address newImplementation) internal {
    address currentImplementation = implementation();
    require(currentImplementation != newImplementation);
    setImplementation(newImplementation);
    emit Upgraded(newImplementation);
  }
}


// Root file: contracts/OwnedUpgradeabilityProxy.sol

pragma solidity ^0.4.21;

// import 'contracts/UpgradeabilityProxy.sol';

/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
contract OwnedUpgradeabilityProxy is UpgradeabilityProxy {
  /**
  * @dev Event to show ownership has been transferred
  * @param previousOwner representing the address of the previous owner
  * @param newOwner representing the address of the new owner
  */
  event ProxyOwnershipTransferred(address previousOwner, address newOwner);

  // Storage position of the owner of the contract
  bytes32 private constant proxyOwnerPosition = keccak256("org.zeppelinos.proxy.owner");

  /**
  * @dev the constructor sets the original owner of the contract to the sender account.
  */
  function OwnedUpgradeabilityProxy() public {
    setUpgradeabilityOwner(msg.sender);
  }

  /**
  * @dev Throws if called by any account other than the owner.
  */
  modifier onlyProxyOwner() {
    require(msg.sender == proxyOwner());
    _;
  }

  /**
   * @dev Tells the address of the owner
   * @return 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 owner
   */
  function setUpgradeabilityOwner(address newProxyOwner) internal {
    bytes32 position = proxyOwnerPosition;
    assembly {
      sstore(position, newProxyOwner)
    }
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferProxyOwnership(address newOwner) public onlyProxyOwner {
    require(newOwner != address(0));
    emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
    setUpgradeabilityOwner(newOwner);
  }

  /**
   * @dev Allows the proxy owner to upgrade the current version of the proxy.
   * @param implementation representing the address of the new implementation to be set.
   */
  function upgradeTo(address implementation) public onlyProxyOwner {
    _upgradeTo(implementation);
  }

  /**
   * @dev Allows the proxy owner to upgrade the current version of the proxy and call the new implementation
   * to initialize whatever is needed through a low level call.
   * @param implementation representing the address of the new implementation to be set.
   * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
   * signature of the implementation to be called with the needed payload
   */
  function upgradeToAndCall(address implementation, bytes data) payable public onlyProxyOwner {
    upgradeTo(implementation);
    require(this.call.value(msg.value)(data));
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"},{"name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]

608060405234801561001057600080fd5b5061002333640100000000610028810204565b61005d565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b6104a38061006c6000396000f30060806040526004361061006c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100b25780633659cfe6146100e35780634f1ef286146101065780635c60da1b14610160578063f1739cae14610175575b6000610076610196565b9050600160a060020a038116151561008d57600080fd5b60405136600082376000803683855af43d806000843e8180156100ae578184f35b8184fd5b3480156100be57600080fd5b506100c76101f2565b60408051600160a060020a039092168252519081900360200190f35b3480156100ef57600080fd5b50610104600160a060020a0360043516610228565b005b60408051602060046024803582810135601f8101859004850286018501909652858552610104958335600160a060020a03169536956044949193909101919081908401838280828437509497506102509650505050505050565b34801561016c57600080fd5b506100c7610196565b34801561018157600080fd5b50610104600160a060020a03600435166102fc565b604080517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e0000000000000000000000000000000000000000000000000000000000602082015290519081900360230190205490565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a0190205490565b6102306101f2565b600160a060020a0316331461024457600080fd5b61024d81610381565b50565b6102586101f2565b600160a060020a0316331461026c57600080fd5b61027582610228565b30600160a060020a0316348260405180828051906020019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156102f857600080fd5b5050565b6103046101f2565b600160a060020a0316331461031857600080fd5b600160a060020a038116151561032d57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103566101f2565b60408051600160a060020a03928316815291841660208301528051918290030190a161024d816103e7565b600061038b610196565b9050600160a060020a0380821690831614156103a657600080fd5b6103af8261041c565b604051600160a060020a038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b604080517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e000000000000000000000000000000000000000000000000000000000060208201529051908190036023019020555600a165627a7a723058202c2e0d622a46f6b6ef030a41e2843ad7ea64185a2407073c7e65966d18a01fb80029

Deployed Bytecode

0x60806040526004361061006c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100b25780633659cfe6146100e35780634f1ef286146101065780635c60da1b14610160578063f1739cae14610175575b6000610076610196565b9050600160a060020a038116151561008d57600080fd5b60405136600082376000803683855af43d806000843e8180156100ae578184f35b8184fd5b3480156100be57600080fd5b506100c76101f2565b60408051600160a060020a039092168252519081900360200190f35b3480156100ef57600080fd5b50610104600160a060020a0360043516610228565b005b60408051602060046024803582810135601f8101859004850286018501909652858552610104958335600160a060020a03169536956044949193909101919081908401838280828437509497506102509650505050505050565b34801561016c57600080fd5b506100c7610196565b34801561018157600080fd5b50610104600160a060020a03600435166102fc565b604080517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e0000000000000000000000000000000000000000000000000000000000602082015290519081900360230190205490565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a0190205490565b6102306101f2565b600160a060020a0316331461024457600080fd5b61024d81610381565b50565b6102586101f2565b600160a060020a0316331461026c57600080fd5b61027582610228565b30600160a060020a0316348260405180828051906020019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156102f857600080fd5b5050565b6103046101f2565b600160a060020a0316331461031857600080fd5b600160a060020a038116151561032d57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103566101f2565b60408051600160a060020a03928316815291841660208301528051918290030190a161024d816103e7565b600061038b610196565b9050600160a060020a0380821690831614156103a657600080fd5b6103af8261041c565b604051600160a060020a038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b604080517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e000000000000000000000000000000000000000000000000000000000060208201529051908190036023019020555600a165627a7a723058202c2e0d622a46f6b6ef030a41e2843ad7ea64185a2407073c7e65966d18a01fb80029

Deployed Bytecode Sourcemap

3236:2681:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;647:13;663:16;:14;:16::i;:::-;647:32;-1:-1:-1;;;;;;694:19:0;;;;686:28;;;;;;758:4;752:11;792:12;789:1;784:3;771:34;874:1;871;857:12;852:3;845:5;840:3;827:49;896:14;941:4;938:1;933:3;918:28;963:6;977:28;;;;1035:4;1030:3;1023:17;977:28;998:4;993:3;986:17;4183:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4183:163:0;;;;;;;;-1:-1:-1;;;;;4183:163:0;;;;;;;;;;;;;;5155:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5155:104:0;-1:-1:-1;;;;;5155:104:0;;;;;;;5736:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5736:178:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5736:178:0;;-1:-1:-1;5736:178:0;;-1:-1:-1;;;;;;;5736:178:0;2011:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2011:169:0;;;;4750:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4750:216:0;-1:-1:-1;;;;;4750:216:0;;;;;2011:169;1739:48;;;;;;;;;;;;;;;;;;;;;2153:15;;2136:39::o;4183:163::-;3679:39;;;;;;;;;;;;;;;;4319:15;;4301:40::o;5155:104::-;4055:12;:10;:12::i;:::-;-1:-1:-1;;;;;4041:26:0;:10;:26;4033:35;;;;;;5227:26;5238:14;5227:10;:26::i;:::-;5155:104;:::o;5736:178::-;4055:12;:10;:12::i;:::-;-1:-1:-1;;;;;4041:26:0;:10;:26;4033:35;;;;;;5835:25;5845:14;5835:9;:25::i;:::-;5875:4;-1:-1:-1;;;;;5875:9:0;5891;5902:4;5875:32;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5875:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5867:41;;;;;;;;5736:178;;:::o;4750:216::-;4055:12;:10;:12::i;:::-;-1:-1:-1;;;;;4041:26:0;:10;:26;4033:35;;;;;;-1:-1:-1;;;;;4837:22:0;;;;4829:31;;;;;;4872:49;4898:12;:10;:12::i;:::-;4872:49;;;-1:-1:-1;;;;;4872:49:0;;;;;;;;;;;;;;;;;;;;;4928:32;4951:8;4928:22;:32::i;2685:257::-;2748:29;2780:16;:14;:16::i;:::-;2748:48;-1:-1:-1;;;;;;2811:42:0;;;;;;;;2803:51;;;;;;2861:36;2879:17;2861;:36::i;:::-;2909:27;;-1:-1:-1;;;;;2909:27:0;;;;;;;;2685:257;;:::o;4407:176::-;3679:39;;;;;;;;;;;;;;;;4540:31;4531:47::o;2343:183::-;1739:48;;;;;;;;;;;;;;;;;;;;;2479:35;2470:51::o

Swarm Source

bzzr://2c2e0d622a46f6b6ef030a41e2843ad7ea64185a2407073c7e65966d18a01fb8
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.