Contract 0x206340f3361404910f45ca0893980ef3f9b418ea

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7a21645dd5fa7a87764c446fc621081e9cb75f2e621dd4915be1f01adc240314Approve144897492022-01-19 2:49:4710 hrs 48 mins ago0xde3520c797730c53ebfa8635861a4d04d9cab755 IN  MemeFarm: MFRM Token0 BNB0.000236385
0x5fc41e2073ccc69869644345d3c47dcc8980c0b3b29057780eabe36fb9a70a87Approve141564232022-01-07 11:58:3812 days 1 hr ago0x72d2b655d74f2363c0a0f35665124f7de26e97fc IN  MemeFarm: MFRM Token0 BNB0.000236385
0xee9db37f36dc9a4c92e56678b3897b25bcd9abb432fdaebb05cbbc5a829bceafApprove141080442022-01-05 19:33:0113 days 18 hrs ago0x45ee79e35913a0c0cdd26fbd1cd61d1400e26cc0 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xfbebd989e37bd67a1ba368795a8874ba6dacb39088a3f74c2913804ff71c168aApprove140983112022-01-05 11:25:1114 days 2 hrs ago0x547c621354358f900d8c5bde13e0a670a54fc887 IN  MemeFarm: MFRM Token0 BNB0.000235485
0x5a1ff406f176ad1cc0352b5233d0745ead8ece4b337492a723860a569c17fdf4Approve140774672022-01-04 17:59:3114 days 19 hrs ago0x5e40719da8cb764614fb790ab0d31ab82b69cfeb IN  MemeFarm: MFRM Token0 BNB0.000139485
0x8a9e252693293a6d3f5449312d87e9b4ab16dc6dcd8c4efc71d20ec55afd840dApprove140774582022-01-04 17:59:0414 days 19 hrs ago0x5e40719da8cb764614fb790ab0d31ab82b69cfeb IN  MemeFarm: MFRM Token0 BNB0.000235485
0x00a6ae0e272a54eb6db69a726c0f1f9ecf4ed0717e826199c3b3700595397885Approve140483392022-01-03 17:41:3015 days 19 hrs ago0x8687cd0a232006e691f3f030cba09f2a38dca308 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xcf8d64d6051f2654f691491c66e048a5f34be6dc244b07c11cc520635d0dcbc3Approve139721282022-01-01 2:03:4318 days 11 hrs ago0x90b5cab5ce37a96ff2240cf835a75bcd439b01ac IN  MemeFarm: MFRM Token0 BNB0.000236385
0x834fb33caf4e3b0d5f7f5f8d5aa404445771213c254c42f1d3c6ea67b708c5dbApprove139572692021-12-31 13:39:4018 days 23 hrs ago0xa8773a5e85662882a0ad7853a215eaa20d3a8689 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xbf5ded19534f506c8d4eadf0cf7191deee87f55e829b73636af12883d081b18bApprove139347592021-12-30 18:53:3119 days 18 hrs ago0x2afe45e04c861a28cde5051885af0985e36f8488 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xbfc65399937ba927d1f28c997923b67ad6e433fc7aca3c4724f7b98a6d69006dTransfer138710432021-12-28 13:45:3621 days 23 hrs ago0x6de959eeb8d9850a08f12019a195552e979a5b7a IN  MemeFarm: MFRM Token0 BNB0.000195505
0x2141332e6cc1cd564accc45931ff61d56fcdea5e48b8c7e5b22ea4bfedf8841fApprove138561652021-12-28 1:18:5822 days 12 hrs ago0x6ddc7aff1c06505fc8aaa43b737b5fdf41911dc6 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xd3086e9c8957b50e48b1f31dae7924d2ed82c870c2019ddbe6b6c5d9ce724b33Approve137986662021-12-26 1:19:2324 days 12 hrs ago0xcf282f079561b090598bca43885e345ab553f8a0 IN  MemeFarm: MFRM Token0 BNB0.000235485
0x596da797d718fa84f50ffee8c39c8011ed7e4e87676baf21cbaef9ad1932f4a5Approve137510112021-12-24 9:34:3126 days 4 hrs ago0x174466d61dde5614814b82fa8a1e4b3ab84ece01 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xc6d194a12f158b74c1dff69bef032ff94526b239eeaaf72ccb3fea770074f395Approve137173252021-12-23 5:29:2627 days 8 hrs ago0xa73e23403628a41612c57e2d4d95692961b80416 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xfb56520f49b6c592d89792893abc17dbf587a0d2ea1dbe27a177729bdf243d49Approve136548752021-12-21 0:46:0529 days 12 hrs ago0x461db62a9f6e2fd38421f70bcab178b7fa521191 IN  MemeFarm: MFRM Token0 BNB0.000236385
0x1f9cd1e58f3785e57e09464beb4cbc18d063ea8215609e7ae8af6362bb5699f7Approve135206982021-12-16 8:44:0734 days 4 hrs ago0xa5728238b0cc264f59f47f6c1e9cd20a31cfbb11 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xfbe58100ab01554eb9ee19166cb8e37352831602e351e86301dc47a7757b9754Approve134799062021-12-14 22:38:3735 days 14 hrs ago0x8687cd0a232006e691f3f030cba09f2a38dca308 IN  MemeFarm: MFRM Token0 BNB0.000236385
0x485d6d468830a5b9facb5ca770e9b1e9536eaf060333f62377c1f2674cb48179Approve134224672021-12-12 22:24:1437 days 15 hrs ago0xd6d5ec972798591cdc4e8d31d5f2e7d7ec081780 IN  MemeFarm: MFRM Token0 BNB0.000236385
0x5b0129619ff0bae4b567dbcfb46ea2965736d3029e84f962d5beb3659de41d20Approve132946372021-12-08 10:42:5942 days 2 hrs ago0x7ca0c565f698f1ab46d810f76145a1c94a2fd0ba IN  MemeFarm: MFRM Token0 BNB0.0021412755
0x859dd9d4ab4fd2c726553def46c17f96174cf1217a084464ae42a9d10e1d26b3Approve132482102021-12-06 16:26:3243 days 21 hrs ago0x9cc04e1ee746e5d2d059aeed4c5857cc23ea5a7f IN  MemeFarm: MFRM Token0 BNB0.000236385
0xabcbfaa858b62e9598ba89e2ab4eae1c90674f457a5293d34bf2fb164f8fe6bbApprove131599902021-12-03 13:21:1147 days 16 mins ago0x34ad53757d9489fbc43d3030325817646f1e1c38 IN  MemeFarm: MFRM Token0 BNB0.000084465
0x14430f6e2f585601c3a01f894a4ae845ed8f5c242d043d319ef8e620d20a9ddbTransfer131234002021-12-02 6:20:4048 days 7 hrs ago0xc39f1635781df3af797936c07336c8d7cf95f559 IN  MemeFarm: MFRM Token0 BNB0.000120805
0x481b158d28a447f83dd5ed7b7141092f5ff33029519f0da44b3b0adc83a35e4fApprove131135842021-12-01 21:40:2748 days 15 hrs ago0x6f50f0c944f545f39010fa6df7f035e0ac253787 IN  MemeFarm: MFRM Token0 BNB0.000236385
0xa789514ef13a74ddfdde4a08d31e3fa38c8e6a8b4b0d02aaf485e1473083d996Approve130746132021-11-30 10:50:3450 days 2 hrs ago0x79f3e18e7f2ffbcfefea4a25cd3910577b455e57 IN  MemeFarm: MFRM Token0 BNB0.000235485
[ Download CSV Export 

OVERVIEW

A marketplace for NFTs where farmers earn not just $MFRM but also NFTs.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2ace39792303477c65d833ab081a1a89aac7b4a37288793d62645a28434f290c54709742021-03-07 11:41:39318 days 1 hr ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x2ace39792303477c65d833ab081a1a89aac7b4a37288793d62645a28434f290c54709742021-03-07 11:41:39318 days 1 hr ago PancakeSwap: MFRM MemeFarm: MFRM Token0 BNB
0x2ace39792303477c65d833ab081a1a89aac7b4a37288793d62645a28434f290c54709742021-03-07 11:41:39318 days 1 hr ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x2ace39792303477c65d833ab081a1a89aac7b4a37288793d62645a28434f290c54709742021-03-07 11:41:39318 days 1 hr ago PancakeSwap: Router MemeFarm: MFRM Token0 BNB
0x0aadcbe162dfb85f44ec4dab592d3fe1a8e87612df2bdcfdaf7985b6f7b6c12254698462021-03-07 10:45:15318 days 2 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x0aadcbe162dfb85f44ec4dab592d3fe1a8e87612df2bdcfdaf7985b6f7b6c12254698462021-03-07 10:45:15318 days 2 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0x0aadcbe162dfb85f44ec4dab592d3fe1a8e87612df2bdcfdaf7985b6f7b6c12254698462021-03-07 10:45:15318 days 2 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x0aadcbe162dfb85f44ec4dab592d3fe1a8e87612df2bdcfdaf7985b6f7b6c12254698462021-03-07 10:45:15318 days 2 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0x0aadcbe162dfb85f44ec4dab592d3fe1a8e87612df2bdcfdaf7985b6f7b6c12254698462021-03-07 10:45:15318 days 2 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x0aadcbe162dfb85f44ec4dab592d3fe1a8e87612df2bdcfdaf7985b6f7b6c12254698462021-03-07 10:45:15318 days 2 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0x27643c633cd6a83c5178ab8be362534e4530b8e19995fc18b43d308af59bf14a54698402021-03-07 10:44:57318 days 2 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x27643c633cd6a83c5178ab8be362534e4530b8e19995fc18b43d308af59bf14a54698402021-03-07 10:44:57318 days 2 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0x27643c633cd6a83c5178ab8be362534e4530b8e19995fc18b43d308af59bf14a54698402021-03-07 10:44:57318 days 2 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x27643c633cd6a83c5178ab8be362534e4530b8e19995fc18b43d308af59bf14a54698402021-03-07 10:44:57318 days 2 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0x27643c633cd6a83c5178ab8be362534e4530b8e19995fc18b43d308af59bf14a54698402021-03-07 10:44:57318 days 2 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0x27643c633cd6a83c5178ab8be362534e4530b8e19995fc18b43d308af59bf14a54698402021-03-07 10:44:57318 days 2 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0xa2620c93e91f87ad893fd7e4f69c5805a13c563eb2fee7361894a29e0ccc2c2454695922021-03-07 10:32:33318 days 3 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0xa2620c93e91f87ad893fd7e4f69c5805a13c563eb2fee7361894a29e0ccc2c2454695922021-03-07 10:32:33318 days 3 hrs ago PancakeSwap: MFRM MemeFarm: MFRM Token0 BNB
0xa2620c93e91f87ad893fd7e4f69c5805a13c563eb2fee7361894a29e0ccc2c2454695922021-03-07 10:32:33318 days 3 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0xa2620c93e91f87ad893fd7e4f69c5805a13c563eb2fee7361894a29e0ccc2c2454695922021-03-07 10:32:33318 days 3 hrs ago PancakeSwap: Router MemeFarm: MFRM Token0 BNB
0xd9f2e6fce7313e3820f181fe6643b97f3e8aa3671b0c9fb99af91e750bb104b254687952021-03-07 9:52:42318 days 3 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0xd9f2e6fce7313e3820f181fe6643b97f3e8aa3671b0c9fb99af91e750bb104b254687952021-03-07 9:52:42318 days 3 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0xd9f2e6fce7313e3820f181fe6643b97f3e8aa3671b0c9fb99af91e750bb104b254687952021-03-07 9:52:42318 days 3 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
0xd9f2e6fce7313e3820f181fe6643b97f3e8aa3671b0c9fb99af91e750bb104b254687952021-03-07 9:52:42318 days 3 hrs ago 0xa0a4ab8c15c5b7c9f0d73a23786b5b51ba2d5399 MemeFarm: MFRM Token0 BNB
0xd9f2e6fce7313e3820f181fe6643b97f3e8aa3671b0c9fb99af91e750bb104b254687952021-03-07 9:52:42318 days 3 hrs ago MemeFarm: MFRM Token 0xffe998e124983d56782cdcc8bc7107fd8ffe29000 BNB
[ Download CSV Export 
Loading

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

Contract Name:
AdminUpgradeabilityProxy

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-02-23
*/

//OpenZeppelin_UpgradableProxy.sol

pragma solidity ^0.5.0;


//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/utils/Address.sol
/**
 * Utility library of inline functions on addresses
 *
 * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/utils/Address.sol
 * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
 * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
 * build/artifacts folder) as well as the vanilla Address implementation from an openzeppelin version.
 */
library OpenZeppelinUpgradesAddress {
    /**
     * Returns whether the target address is a contract
     * @dev This function will return false if invoked during the constructor of a contract,
     * as the code is not actually created until after the constructor finishes.
     * @param account address of the account to check
     * @return whether the target address is a contract
     */
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // XXX Currently there is no better way to check if there is a contract in an address
        // than to check the size of the code at that address.
        // See https://ethereum.stackexchange.com/a/14016/36603
        // for more details about how this works.
        // TODO Check this again before the Serenity release, because all addresses will be
        // contracts then.
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}








//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/ownership/Ownable.sol
/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 *
 * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/ownership/Ownable.sol
 * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
 * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
 * build/artifacts folder) as well as the vanilla Ownable implementation from an openzeppelin version.
 */
contract OpenZeppelinUpgradesOwnable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}









//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/Proxy.sol
/**
 * @title Proxy
 * @dev Implements delegation of calls to other contracts, with proper
 * forwarding of return values and bubbling of failures.
 * It defines a fallback function that delegates all calls to the address
 * returned by the abstract _implementation() internal function.
 */
contract Proxy {
  /**
   * @dev Fallback function.
   * Implemented entirely in `_fallback`.
   */
  function () payable external {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() internal view returns (address);

  /**
   * @dev Delegates execution to an implementation contract.
   * This is a low level function that doesn't return to its internal call site.
   * It will return to the external caller whatever the implementation returns.
   * @param implementation Address to delegate.
   */
  function _delegate(address implementation) internal {
    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 Function that is run as the first thing in the fallback function.
   * Can be redefined in derived contracts to add functionality.
   * Redefinitions must call super._willFallback().
   */
  function _willFallback() internal {
  }

  /**
   * @dev fallback implementation.
   * Extracted to enable manual triggering.
   */
  function _fallback() internal {
    _willFallback();
    _delegate(_implementation());
  }
}





//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/BaseUpgradeabilityProxy.sol
/**
 * @title BaseUpgradeabilityProxy
 * @dev This contract implements a proxy that allows to change the
 * implementation address to which it will delegate.
 * Such a change is called an implementation upgrade.
 */
contract BaseUpgradeabilityProxy is Proxy {
  /**
   * @dev Emitted when the implementation is upgraded.
   * @param implementation Address of the new implementation.
   */
  event Upgraded(address indexed implementation);

  /**
   * @dev Storage slot with the address of the current implementation.
   * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
   * validated in the constructor.
   */
  bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

  /**
   * @dev Returns the current implementation.
   * @return Address of the current implementation
   */
  function _implementation() internal view returns (address impl) {
    bytes32 slot = IMPLEMENTATION_SLOT;
    assembly {
      impl := sload(slot)
    }
  }

  /**
   * @dev Upgrades the proxy to a new implementation.
   * @param newImplementation Address of the new implementation.
   */
  function _upgradeTo(address newImplementation) internal {
    _setImplementation(newImplementation);
    emit Upgraded(newImplementation);
  }

  /**
   * @dev Sets the implementation address of the proxy.
   * @param newImplementation Address of the new implementation.
   */
  function _setImplementation(address newImplementation) internal {
    require(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address");

    bytes32 slot = IMPLEMENTATION_SLOT;

    assembly {
      sstore(slot, newImplementation)
    }
  }
}





//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/UpgradeabilityProxy.sol
/**
 * @title UpgradeabilityProxy
 * @dev Extends BaseUpgradeabilityProxy with a constructor for initializing
 * implementation and init data.
 */
contract UpgradeabilityProxy is BaseUpgradeabilityProxy {
  /**
   * @dev Contract constructor.
   * @param _logic Address of the initial implementation.
   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
   */
  constructor(address _logic, bytes memory _data) public payable {
    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
    _setImplementation(_logic);
    if(_data.length > 0) {
      (bool success,) = _logic.delegatecall(_data);
      require(success);
    }
  }  
}








//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/BaseAdminUpgradeabilityProxy.sol
/**
 * @title BaseAdminUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with an authorization
 * mechanism for administrative tasks.
 * All external functions in this contract must be guarded by the
 * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
 * feature proposal that would enable this to be done automatically.
 */
contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
  /**
   * @dev Emitted when the administration has been transferred.
   * @param previousAdmin Address of the previous admin.
   * @param newAdmin Address of the new admin.
   */
  event AdminChanged(address previousAdmin, address newAdmin);

  /**
   * @dev Storage slot with the admin of the contract.
   * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
   * validated in the constructor.
   */

  bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

  /**
   * @dev Modifier to check whether the `msg.sender` is the admin.
   * If it is, it will run the function. Otherwise, it will delegate the call
   * to the implementation.
   */
  modifier ifAdmin() {
    if (msg.sender == _admin()) {
      _;
    } else {
      _fallback();
    }
  }

  /**
   * @return The address of the proxy admin.
   */
  function admin() external ifAdmin returns (address) {
    return _admin();
  }

  /**
   * @return The address of the implementation.
   */
  function implementation() external ifAdmin returns (address) {
    return _implementation();
  }

  /**
   * @dev Changes the admin of the proxy.
   * Only the current admin can call this function.
   * @param newAdmin Address to transfer proxy administration to.
   */
  function changeAdmin(address newAdmin) external ifAdmin {
    require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address");
    emit AdminChanged(_admin(), newAdmin);
    _setAdmin(newAdmin);
  }

  /**
   * @dev Upgrade the backing implementation of the proxy.
   * Only the admin can call this function.
   * @param newImplementation Address of the new implementation.
   */
  function upgradeTo(address newImplementation) external ifAdmin {
    _upgradeTo(newImplementation);
  }

  /**
   * @dev Upgrade the backing implementation of the proxy and call a function
   * on the new implementation.
   * This is useful to initialize the proxied contract.
   * @param newImplementation Address of the new implementation.
   * @param data Data to send as msg.data in the low level call.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   */
  function upgradeToAndCall(address newImplementation, bytes calldata data) payable external ifAdmin {
    _upgradeTo(newImplementation);
    (bool success,) = newImplementation.delegatecall(data);
    require(success);
  }

  /**
   * @return The admin slot.
   */
  function _admin() internal view returns (address adm) {
    bytes32 slot = ADMIN_SLOT;
    assembly {
      adm := sload(slot)
    }
  }

  /**
   * @dev Sets the address of the proxy admin.
   * @param newAdmin Address of the new proxy admin.
   */
  function _setAdmin(address newAdmin) internal {
    bytes32 slot = ADMIN_SLOT;

    assembly {
      sstore(slot, newAdmin)
    }
  }

  /**
   * @dev Only fall back when the sender is not the admin.
   */
  function _willFallback() internal {
    require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin");
    super._willFallback();
  }
}





//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/AdminUpgradeabilityProxy.sol
/**
 * @title AdminUpgradeabilityProxy
 * @dev Extends from BaseAdminUpgradeabilityProxy with a constructor for 
 * initializing the implementation, admin, and init data.
 */
contract AdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, UpgradeabilityProxy {
  /**
   * Contract constructor.
   * @param _logic address of the initial implementation.
   * @param _admin Address of the proxy administrator.
   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
   */
  constructor(address _logic, address _admin, bytes memory _data) UpgradeabilityProxy(_logic, _data) public payable {
    assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1));
    _setAdmin(_admin);
  }
}




//https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/ProxyAdmin.sol

/**
 * @title ProxyAdmin
 * @dev This contract is the admin of a proxy, and is in charge
 * of upgrading it as well as transferring it to another admin.
 */
contract ProxyAdmin is OpenZeppelinUpgradesOwnable {
  
  /**
   * @dev Returns the current implementation of a proxy.
   * This is needed because only the proxy admin can query it.
   * @return The address of the current implementation of the proxy.
   */
  function getProxyImplementation(AdminUpgradeabilityProxy proxy) public view returns (address) {
    // We need to manually run the static call since the getter cannot be flagged as view
    // bytes4(keccak256("implementation()")) == 0x5c60da1b
    (bool success, bytes memory returndata) = address(proxy).staticcall(hex"5c60da1b");
    require(success);
    return abi.decode(returndata, (address));
  }

  /**
   * @dev Returns the admin of a proxy. Only the admin can query it.
   * @return The address of the current admin of the proxy.
   */
  function getProxyAdmin(AdminUpgradeabilityProxy proxy) public view returns (address) {
    // We need to manually run the static call since the getter cannot be flagged as view
    // bytes4(keccak256("admin()")) == 0xf851a440
    (bool success, bytes memory returndata) = address(proxy).staticcall(hex"f851a440");
    require(success);
    return abi.decode(returndata, (address));
  }

  /**
   * @dev Changes the admin of a proxy.
   * @param proxy Proxy to change admin.
   * @param newAdmin Address to transfer proxy administration to.
   */
  function changeProxyAdmin(AdminUpgradeabilityProxy proxy, address newAdmin) public onlyOwner {
    proxy.changeAdmin(newAdmin);
  }

  /**
   * @dev Upgrades a proxy to the newest implementation of a contract.
   * @param proxy Proxy to be upgraded.
   * @param implementation the address of the Implementation.
   */
  function upgrade(AdminUpgradeabilityProxy proxy, address implementation) public onlyOwner {
    proxy.upgradeTo(implementation);
  }

  /**
   * @dev Upgrades a proxy to the newest implementation of a contract and forwards a function call to it.
   * This is useful to initialize the proxied contract.
   * @param proxy Proxy to be upgraded.
   * @param implementation Address of the Implementation.
   * @param data Data to send as msg.data in the low level call.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   */
  function upgradeAndCall(AdminUpgradeabilityProxy proxy, address implementation, bytes memory data) payable public onlyOwner {
    proxy.upgradeToAndCall.value(msg.value)(implementation, data);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]

6080604052604051610ca3380380610ca38339818101604052606081101561002657600080fd5b8101908080519060200190929190805190602001909291908051604051939291908464010000000082111561005a57600080fd5b8382019150602082018581111561007057600080fd5b825186600182028301116401000000008211171561008d57600080fd5b8083526020830192505050908051906020019080838360005b838110156100c15780820151818401526020810190506100a6565b50505050905090810190601f1680156100ee5780820380516001836020036101000a031916815260200191505b506040525050508281600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b1461016157fe5b610170826102bf60201b60201c565b60008151111561023c5760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106101c757805182526020820191506020810190506020830392506101a4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610227576040519150601f19603f3d011682016040523d82523d6000602084013e61022c565b606091505b505090508061023a57600080fd5b505b5050600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b146102a857fe5b6102b78261035660201b60201c565b505050610398565b6102d28161038560201b6107d61760201c565b610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610c68603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b600080823b905060008111915050919050565b6108c1806103a76000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100a55780635c60da1b1461013e5780638f28397014610195578063f851a440146101e6575b61005261023d565b005b34801561006057600080fd5b506100a36004803603602081101561007757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610257565b005b61013c600480360360408110156100bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156100f857600080fd5b82018360208201111561010a57600080fd5b8035906020019184600183028401116401000000008311171561012c57600080fd5b90919293919293905050506102ac565b005b34801561014a57600080fd5b50610153610382565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a157600080fd5b506101e4600480360360208110156101b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103da565b005b3480156101f257600080fd5b506101fb610553565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102456105ab565b610255610250610641565b610672565b565b61025f610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102a05761029b816106c9565b6102a9565b6102a861023d565b5b50565b6102b4610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610374576102f0836106c9565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d806000811461035b576040519150601f19603f3d011682016040523d82523d6000602084013e610360565b606091505b505090508061036e57600080fd5b5061037d565b61037c61023d565b5b505050565b600061038c610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103ce576103c7610641565b90506103d7565b6103d661023d565b5b90565b6103e2610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561054757600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061081c6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104c4610698565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161054281610718565b610550565b61054f61023d565b5b50565b600061055d610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561059f57610598610698565b90506105a8565b6105a761023d565b5b90565b6105b3610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806107ea6032913960400191505060405180910390fd5b61063f610747565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610693573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b6106d281610749565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b565b610752816107d6565b6107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610852603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b600080823b90506000811191505091905056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a7231582069b8716bf80b84f072c4d174256675e6795b7ae2a64d284fb1af75f026b5b22b64736f6c6343000511003243616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000000000000000000a35c7f80fc2a7a43266d969b752a7b1833a393a8000000000000000000000000cee9d0fe3ced340e1602c3ae8e390484fac2833b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

14057:903:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5022:11;:9;:11::i;:::-;14057:903;12181:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12181:105:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12181:105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12814:225;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12814:225:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;12814:225:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12814:225:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12814:225:0;;;;;;;;;;;;:::i;:::-;;11481:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11481:98:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11762:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11762:228:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11762:228:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11332:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11332:80:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6568:93;6605:15;:13;:15::i;:::-;6627:28;6637:17;:15;:17::i;:::-;6627:9;:28::i;:::-;6568:93::o;12181:105::-;11199:8;:6;:8::i;:::-;11185:22;;:10;:22;;;11181:80;;;12251:29;12262:17;12251:10;:29::i;:::-;11181:80;;;11242:11;:9;:11::i;:::-;11181:80;12181:105;:::o;12814:225::-;11199:8;:6;:8::i;:::-;11185:22;;:10;:22;;;11181:80;;;12920:29;12931:17;12920:10;:29::i;:::-;12957:12;12974:17;:30;;13005:4;;12974:36;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;12974:36:0;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12956:54:0;;;13025:7;13017:16;;;;;;11218:1;11181:80;;;11242:11;:9;:11::i;:::-;11181:80;12814:225;;;:::o;11481:98::-;11533:7;11199:8;:6;:8::i;:::-;11185:22;;:10;:22;;;11181:80;;;11556:17;:15;:17::i;:::-;11549:24;;11181:80;;;11242:11;:9;:11::i;:::-;11181:80;11481:98;:::o;11762:228::-;11199:8;:6;:8::i;:::-;11185:22;;:10;:22;;;11181:80;;;11853:1;11833:22;;:8;:22;;;;11825:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11926:32;11939:8;:6;:8::i;:::-;11949;11926:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11965:19;11975:8;11965:9;:19::i;:::-;11181:80;;;11242:11;:9;:11::i;:::-;11181:80;11762:228;:::o;11332:80::-;11375:7;11199:8;:6;:8::i;:::-;11185:22;;:10;:22;;;11181:80;;;11398:8;:6;:8::i;:::-;11391:15;;11181:80;;;11242:11;:9;:11::i;:::-;11181:80;11332;:::o;13571:160::-;13634:8;:6;:8::i;:::-;13620:22;;:10;:22;;;;13612:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13704:21;:19;:21::i;:::-;13571:160::o;7709:161::-;7759:12;7780;7523:66;7795:19;;7780:34;;7853:4;7847:11;7839:19;;7830:35;;:::o;5461:750::-;5768:12;5765:1;5762;5749:32;5962:1;5959;5945:12;5942:1;5926:14;5921:3;5908:56;6029:14;6026:1;6023;6008:36;6061:6;6123:1;6118:36;;;;6182:14;6179:1;6172:25;6118:36;6137:14;6134:1;6127:25;13089:141;13130:11;13150:12;10892:66;13165:10;;13150:25;;13213:4;13207:11;13200:18;;13191:34;;:::o;8011:145::-;8074:37;8093:17;8074:18;:37::i;:::-;8132:17;8123:27;;;;;;;;;;;;8011:145;:::o;13352:139::-;13405:12;10892:66;13420:10;;13405:25;;13470:8;13464:4;13457:22;13448:38;;:::o;6427:40::-;:::o;8299:313::-;8378:57;8417:17;8378:38;:57::i;:::-;8370:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8508:12;7523:66;8523:19;;8508:34;;8582:17;8576:4;8569:31;8560:47;;:::o;1087:627::-;1147:4;1164:12;1671:7;1659:20;1651:28;;1705:1;1698:4;:8;1691:15;;;1087:627;;;:::o

Swarm Source

bzzr://69b8716bf80b84f072c4d174256675e6795b7ae2a64d284fb1af75f026b5b22b
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.