Contract 0x74616598378e1b4836e7e05bdd50675711f5528c

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x423f3f0af2bf00f921c6d62c594c106d5a1b8c66e412652e003155503359029cTransfer109958392021-09-17 14:50:387 hrs 47 mins ago0x1cdb9ba05ac74180bf5d7cbf125b64c7ca30271b IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.00012915
0xe27911881813678f1c7301df555afb92a6a5dedabb43640f46dfb229c350cbc4Approve108896222021-09-13 22:05:474 days 32 mins ago0x1d54e48cc63030dbfb0b9e1079755593054a3a1b IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x76689c4b7392fc1b3a6b01c393abcacae8f0a883ea6cccac11557bf6c62f7df0Approve107385692021-09-08 15:15:469 days 7 hrs ago0xdebae3a8b9da315b1bd9d1d606322c40554733e0 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x537843b9e5a91ccdfc110eca04335becad20f38cf93a1351e8f2fd9af9355bfcApprove107306082021-09-08 8:33:429 days 14 hrs ago0xe0c89cb63af7326f05f3689a2bc05046f5b9dfcd IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x5d5f609c1e28054db46015ccf317ca02fa09b15680a73216bbec6e0ca28a79daApprove106895282021-09-06 21:41:0111 days 56 mins ago0x24bb04550dca96fb2fa37c484a1efd7f3698c81c IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000283794
0x220795f17688007bce2b4d206a1fc9fd029e0098e4971b3bff39827eb2cfd397Approve106188322021-09-04 10:30:1713 days 12 hrs ago0x1c3354d276b49fe8941a09b822a9100d50e88727 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x72469d44c14a764bf32556db9e636150f1c728b02f1a95f00ebb482463b0ba68Approve105390182021-09-01 15:19:3616 days 7 hrs ago0x85ca96fe4119b8370f3b78a72fb2ffc8e77b76e0 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x6d87e1548a2d92c6f6095cdbe4f7ec2b2e5448f6dcae19543c7ff791e9aa2d73Approve105321822021-09-01 9:30:5916 days 13 hrs ago0xd36eb6329873671e9c6fe1b341d400476e57d288 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x0e719525ab223cd58a0ce574c0eedb9a258609eafc2a705991fdc8e41c9f0e5bApprove105219012021-09-01 0:49:0416 days 21 hrs ago0xef973c572a1a5003d6fa23ee2a01cac2318fbc38 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x7b399dfd3a458cf8521d9aacf05a75fbcb2324bdc4f9df4ccab0a36f511ece4eTransfer104904292021-08-30 22:08:3118 days 29 mins ago0x3e7e2fa33a6daac1c9535bd3737a5dedddb6c137 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.00012927
0x4d1a7eb74ec96440c5a8b8425561be9f55ff33fc747ad88f3649b805422baf35Approve104750292021-08-30 8:56:2118 days 13 hrs ago0x4dae5cf674bdc5ed6b88254393b46cd7c82130d1 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x33bc7ac24337a1d718b818de11af95260cdf7a80e4bf6d1e06fe04df9762fdd9Transfer104179912021-08-28 9:07:5820 days 13 hrs ago0x6ea8b3524a4e6b6b59642ebd88e0b28b318e64e1 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.00012927
0x59baa69717b03c03809ae035ba20475f07cf39fd15b9191414446de84403c5cbApprove103237242021-08-25 1:24:2223 days 21 hrs ago0x8339604439ba5f70ae55f3f3c2bb5a509519aafb IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x51f4091112c90ac52a53f3ae476ef117f57a79656c96d4da05d4b753519867c4Approve100841322021-08-16 16:40:3232 days 5 hrs ago0x13fb94ad7a73b61d0818499dc32111bd750255c8 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x7c1e108ab368e56531b53dfe16f8fb0b2a9bb153aaff2f2867634ab1792f4876Approve100784532021-08-16 11:53:5832 days 10 hrs ago0x72823cad8f133b99fcca023167a21a4ad78b16aa IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0xd88feb075f60964ba29820c1054dda5685d865585493184c9a810edb77835a85Approve99756012021-08-12 21:25:1636 days 1 hr ago0x27ef8248567e7a5381a2b272e17ca47b2bdb44c4 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x45c4b931ba42ab732337e1b9d3bb140d6c12f021fb83ae0ca6e5bd48dc0042bbApprove99633972021-08-12 11:04:5436 days 11 hrs ago0x03bd77990f28a2393792fa111e553f4665121c88 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.0003383
0x8ee6e3a13db957381f14f5826db7aa33f6d30974eaf12d4dacb96ca39dc6ad95Approve99306572021-08-11 6:39:0737 days 15 hrs ago0xc510e590e20a7d6024e89899ad2ce459c579c4d2 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x34f4eb7b9a8970c0f06288051b1937bdd80d219fa5962df674a2048bfdd7b0a0Approve99236512021-08-11 0:46:3437 days 21 hrs ago0x56563889d33acd3e38d97e27d516f2acf4e3f933 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0xfa37bcfb8ca18464b6000fd2bbb1ade2b5fd2cda79b1dee82eea5b8850a9ac97Approve98850062021-08-09 16:00:2039 days 6 hrs ago0x8edcf76e258c485b954c0300ab92eba2e5b5dfca IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0xe76d847092f9199a75367d8ebd91a5fc9f7b77931564ffb83f3d61d747428dceApprove98505132021-08-08 10:25:4040 days 12 hrs ago0x5e6629bc4c2635f9736263626d5719b37d9a7374 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x7969f70ab6652f7d6289b5907b9e4640417d7657c04c875d223f8afacf07401fApprove98469292021-08-08 7:23:1140 days 15 hrs ago0x4dae5cf674bdc5ed6b88254393b46cd7c82130d1 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x37f2e44b67f1cd955b1f316b5d1334d06b881af5b751395f6c3fa747e14c3e90Approve97120012021-08-03 11:19:4845 days 11 hrs ago0x8339604439ba5f70ae55f3f3c2bb5a509519aafb IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
0x8b9e5e64ff9b5cd26179d570262687aeae9a76830cca77b4d53e6f6b64b127edTransfer95381402021-07-28 3:49:1851 days 18 hrs ago0x4fdc8b11020f70a9100fea783dd66dc9cb80d523 IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.00012915
0x34cc6a1cb8fbb82d3332e08f4241ac740edc715db2f5351ad828c4b4a865916eApprove95151462021-07-27 6:41:2952 days 15 hrs ago0xe0c89cb63af7326f05f3689a2bc05046f5b9dfcd IN  0x74616598378e1b4836e7e05bdd50675711f5528c0 BNB0.000236495
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x7c0d4122ccf9afe0892f110efe504e6c153ed86a14923dda17bf7d58651199cf53727082021-03-04 1:46:25197 days 20 hrs ago 0x74616598378e1b4836e7e05bdd50675711f5528c 0x41a76c74bced6b2d2e5e3f521e4936da43829cb00 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

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-03-04
*/

//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"}]

6080604052604051610ca3380380610ca38339818101604052606081101561002657600080fd5b8101908080519060200190929190805190602001909291908051604051939291908464010000000082111561005a57600080fd5b8382019150602082018581111561007057600080fd5b825186600182028301116401000000008211171561008d57600080fd5b8083526020830192505050908051906020019080838360005b838110156100c15780820151818401526020810190506100a6565b50505050905090810190601f1680156100ee5780820380516001836020036101000a031916815260200191505b506040525050508281600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b1461016157fe5b610170826102bf60201b60201c565b60008151111561023c5760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106101c757805182526020820191506020810190506020830392506101a4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610227576040519150601f19603f3d011682016040523d82523d6000602084013e61022c565b606091505b505090508061023a57600080fd5b505b5050600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b146102a857fe5b6102b78261035660201b60201c565b505050610398565b6102d28161038560201b6107d61760201c565b610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610c68603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b600080823b905060008111915050919050565b6108c1806103a76000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100a55780635c60da1b1461013e5780638f28397014610195578063f851a440146101e6575b61005261023d565b005b34801561006057600080fd5b506100a36004803603602081101561007757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610257565b005b61013c600480360360408110156100bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156100f857600080fd5b82018360208201111561010a57600080fd5b8035906020019184600183028401116401000000008311171561012c57600080fd5b90919293919293905050506102ac565b005b34801561014a57600080fd5b50610153610382565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a157600080fd5b506101e4600480360360208110156101b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103da565b005b3480156101f257600080fd5b506101fb610553565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102456105ab565b610255610250610641565b610672565b565b61025f610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102a05761029b816106c9565b6102a9565b6102a861023d565b5b50565b6102b4610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610374576102f0836106c9565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d806000811461035b576040519150601f19603f3d011682016040523d82523d6000602084013e610360565b606091505b505090508061036e57600080fd5b5061037d565b61037c61023d565b5b505050565b600061038c610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103ce576103c7610641565b90506103d7565b6103d661023d565b5b90565b6103e2610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561054757600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061081c6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104c4610698565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161054281610718565b610550565b61054f61023d565b5b50565b600061055d610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561059f57610598610698565b90506105a8565b6105a761023d565b5b90565b6105b3610698565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806107ea6032913960400191505060405180910390fd5b61063f610747565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610693573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b6106d281610749565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b565b610752816107d6565b6107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610852603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b600080823b90506000811191505091905056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a723158203c57b0b4c21af8328c0e3979e2c41c6c2a8d808f97f8f00d2b0d8d9688148da064736f6c6343000511003243616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000000000000000000041a76c74bced6b2d2e5e3f521e4936da43829cb0000000000000000000000000b49bde5efd5378dc3bb0072c38c306f60ebf96ea000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000048129fc1c00000000000000000000000000000000000000000000000000000000

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

00000000000000000000000041a76c74bced6b2d2e5e3f521e4936da43829cb0000000000000000000000000b49bde5efd5378dc3bb0072c38c306f60ebf96ea000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000048129fc1c00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0x41a76c74bced6b2d2e5e3f521e4936da43829cb0
Arg [1] : _admin (address): 0xb49bde5efd5378dc3bb0072c38c306f60ebf96ea
Arg [2] : _data (bytes): 0x8129fc1c

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000041a76c74bced6b2d2e5e3f521e4936da43829cb0
Arg [1] : 000000000000000000000000b49bde5efd5378dc3bb0072c38c306f60ebf96ea
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 8129fc1c00000000000000000000000000000000000000000000000000000000


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://3c57b0b4c21af8328c0e3979e2c41c6c2a8d808f97f8f00d2b0d8d9688148da0
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.