Contract 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x686db6292d93770272febbe5c96b9bdb59656b8ae1c91402fc575ccc702b1a0eVote582853562023-03-24 15:11:3010 mins ago0x617676fea2f14091dce09dfdfe0f377f71b6d59c IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.02331320099
0xd32dde550dea487a545bc5b942c6a0cdaf93dcea9d094c66c799d1be9fa5d7ddVote582853432023-03-24 15:11:1610 mins ago0x617676fea2f14091dce09dfdfe0f377f71b6d59c IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.014956568987
0x7b1261642e579f4c3f2287c46e701673ab1fdf42687344ee12c63407624e9c13Vote582853132023-03-24 15:10:4911 mins ago0x617676fea2f14091dce09dfdfe0f377f71b6d59c IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.015631253572
0x4d513c56247f18d3d179b215885c08223d73d2c70f684637648a80dc779a4943Vote582811812023-03-24 13:58:111 hr 23 mins ago0x2055a98e0100d0b487ce5a901296d59ce2f84cf2 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.016116200407
0xfdac284a639a60745a30f808d035ae61f476abf9fd5e18e3ce9d501f8df2784dCancel Vote582811472023-03-24 13:57:311 hr 24 mins ago0x2055a98e0100d0b487ce5a901296d59ce2f84cf2 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.005957204475
0xe38db888c07f73e21b25cdd41fc115676bedbf87ccb9885416a0d239db7d3a68Vote582811272023-03-24 13:57:031 hr 25 mins ago0x2055a98e0100d0b487ce5a901296d59ce2f84cf2 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.016272511485
0xb1e402c4fb3c8a266c064048a2132d4825178113522cc3837789d286ef83dc02Vote582732892023-03-24 11:24:573 hrs 57 mins ago0xbcd4e5424017a55a1caf982876fd5da5e4f8a50f IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007351681622
0x5a3f8648fd3573145a38e14433d0946993410ac6b7bb1514b817d9d65fab0e18Cancel Vote582732632023-03-24 11:24:293 hrs 57 mins ago0xbcd4e5424017a55a1caf982876fd5da5e4f8a50f IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.003150549639
0x2ae6818376ac774d73cdd8f0f5cd48d27ae25300e4eead513854315ce9e09e1fVote582732392023-03-24 11:23:553 hrs 58 mins ago0xbcd4e5424017a55a1caf982876fd5da5e4f8a50f IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007407623268
0xb545274b2061ba3075e29769f65d7f43599449e502690bf00029d4d642bb1690Vote582732162023-03-24 11:23:243 hrs 58 mins ago0xbcd4e5424017a55a1caf982876fd5da5e4f8a50f IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.006969356779
0xc8255b9e5a947107e9547a1a60b5d5106aab611c78d1ea4db5a401e6fcc29222Vote582731992023-03-24 11:23:033 hrs 59 mins ago0xbcd4e5424017a55a1caf982876fd5da5e4f8a50f IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007931414314
0x5fd54bc8012c86f4d5daabd6547c188c38e1c73e1818ad436e36312276f74f9bVote582697902023-03-24 10:14:385 hrs 7 mins ago0xb6b008de290bb5a9730abe8a1d0d001078455fba IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.009330178771
0xf35f3fb761eacf90566c49ebbb5125f8d5ddadc1142ef2f985379c95f8d687d4Vote582697442023-03-24 10:13:555 hrs 8 mins ago0xb6b008de290bb5a9730abe8a1d0d001078455fba IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007832748113
0x727a55e02766f8b8b6842461b0807851857166fabe344c9feb9451cc7a58db57Vote582696942023-03-24 10:13:065 hrs 8 mins ago0xb6b008de290bb5a9730abe8a1d0d001078455fba IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007839378203
0x55a708a99cd248f820e10d6c24e8e8be1670ba13d84ecdd3d72e3b7ce90fa2d6Vote582696592023-03-24 10:12:305 hrs 9 mins ago0xb6b008de290bb5a9730abe8a1d0d001078455fba IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.00785469153
0x9fdca4a0deae1680d7e0fba0c6ba1730fba5eaeb0a7f409057cbc3d433470cecVote582666472023-03-24 9:13:406 hrs 8 mins ago0x2055a98e0100d0b487ce5a901296d59ce2f84cf2 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007730721959
0x7a492bc0c7f509da1c9b8bdb84fd3ea217a645e69168260dc23813f86d329856Vote582666152023-03-24 9:12:556 hrs 9 mins ago0x2055a98e0100d0b487ce5a901296d59ce2f84cf2 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007737814052
0x9dd6874849659fbfa9d5be5aee9ef1ebdea3906856776d83bc1629c8eb5bb372Vote582662402023-03-24 9:05:116 hrs 16 mins ago0xa3ff0c7b0e150adb2d0a4579be41f064b2a8f354 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007605361399
0x4f3b8fb95fe790f743c60228ccbb7e0734d46a7329b6b535ea227564e7eab41aVote582662292023-03-24 9:04:536 hrs 17 mins ago0xa3ff0c7b0e150adb2d0a4579be41f064b2a8f354 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.0076037986
0xc12b96b9a03662e6fc46eb2087c510762386b235d4da4d89ccf7ee50386b4b38Vote582628162023-03-24 7:55:597 hrs 26 mins ago0xc3a5a67d7a4ac4b654544b7c230dcf6d3ed78c85 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.007294605796
0x03df2d518bc77ae2302eadf602e6c7b8e1237da519526a0e0d98ed8b43efa40aVote582571452023-03-24 5:46:589 hrs 35 mins ago0xe552aac39dd942d740fb13b012b12484d14d3684 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.006687439786
0xf9d59c8afabeee6497cae6d8754086755c1d9a57498a3fc2fe864b7f34cc47d5Vote582218692023-03-23 18:38:4120 hrs 43 mins ago0x62b0d94e9af73597d30fbe900a8108ff4d3a6306 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.011190764996
0xae07687d0d9151e875dc4caddaf7ebcfb769a5f91132f9eacdc34a8a12627af9Vote582218112023-03-23 18:37:4420 hrs 44 mins ago0x62b0d94e9af73597d30fbe900a8108ff4d3a6306 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.010571943818
0xf9688830ccf042c884c21dbd71c4b0057d86cf4b7b4bc4f5ab059fc6ffc0a107Vote582217342023-03-23 18:36:2420 hrs 45 mins ago0x62b0d94e9af73597d30fbe900a8108ff4d3a6306 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.013531152753
0x932b52643c2c1e6569d47b38c5bcdf934feceec32795836e5e06660dfc560e44Vote582180162023-03-23 17:33:0221 hrs 49 mins ago0x43a336b47755b485882bdbd31abbd01e52f91dd6 IN  0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0 FTM0.013895098876
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x851d5c32f4d2d02460245badec944837c0575733ad9b3e4a67680bdf95b8fe8a581087482023-03-22 5:42:032 days 9 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef40 FTM
0xe0e47dc435edae5587b5399c6adaa59242a5c02d1af1c50304eb76882efa464b577796672023-03-17 14:31:417 days 50 mins ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0xe0e47dc435edae5587b5399c6adaa59242a5c02d1af1c50304eb76882efa464b577796672023-03-17 14:31:417 days 50 mins ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0x2db9531a81934744a8ed8a9bb81409b347a3c2a349a0b2a47ec10c8bd580502e576166622023-03-15 5:36:409 days 9 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef40 FTM
0x5b74f878869f62d56e54e2ed4bd99c7d0a8a54903658a5317a823e92cc87ce58558524582023-02-15 16:10:2136 days 23 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0x5b74f878869f62d56e54e2ed4bd99c7d0a8a54903658a5317a823e92cc87ce58558524582023-02-15 16:10:2136 days 23 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0x059084f07b8eefe19dba236821a197fda5ff34a47f8155d2af9302495524168b554376522023-02-09 20:42:5442 days 18 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef40 FTM
0xfaf1761a1f200733a9ff2a8f9bd51de4296125d4b378876b434701684a37df0e554108922023-02-09 10:48:2043 days 4 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef40 FTM
0x2ec80d700f4303f0d8ea64ef3e40181c67e7e97420400c9755ed88b05759a68f553145392023-02-08 4:41:4844 days 10 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0x2ec80d700f4303f0d8ea64ef3e40181c67e7e97420400c9755ed88b05759a68f553145392023-02-08 4:41:4844 days 10 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0x4e1b7950cf3e446fac2477cc761bb6bddf3b82dcedaba94a119eb21316b6c55e551951662023-02-06 12:39:3146 days 2 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef40 FTM
0xbbfa6b093e878b0b1a7251e918d57c5c6170264cc7bba1dce826c3d13f3eaa46551614792023-02-05 20:37:5746 days 18 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0xbbfa6b093e878b0b1a7251e918d57c5c6170264cc7bba1dce826c3d13f3eaa46551614792023-02-05 20:37:5746 days 18 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0xf77284d1c486de22328548e2382575fb3d93c2a43e494218c4ae81ebe7204f90549382712023-02-02 19:42:4349 days 19 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0xf77284d1c486de22328548e2382575fb3d93c2a43e494218c4ae81ebe7204f90549382712023-02-02 19:42:4349 days 19 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0x743c8050e87cfdaf61c88196536b4173ac01b44d75d97e009bc9adf3a9552ffd549077222023-02-02 9:48:1750 days 5 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0x743c8050e87cfdaf61c88196536b4173ac01b44d75d97e009bc9adf3a9552ffd549077222023-02-02 9:48:1750 days 5 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0x331431457a5e017ec57c62d8c01764c99a201816fc1148cfac55ec56ca5776bf546372892023-01-29 4:36:3454 days 10 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0x331431457a5e017ec57c62d8c01764c99a201816fc1148cfac55ec56ca5776bf546372892023-01-29 4:36:3454 days 10 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0x86eff51cbbc205eb73b341cc36cdf48126080f93520e88f1c084bd570242ceae545405222023-01-27 11:39:2456 days 3 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0x86eff51cbbc205eb73b341cc36cdf48126080f93520e88f1c084bd570242ceae545405222023-01-27 11:39:2456 days 3 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
0xb8a9c9818cb62c263169f444b26b58d2041c829fca5bcef5b91e2aadcc5f3dd0545021292023-01-26 22:51:0756 days 16 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef10 FTM
0x5b2e6437893855b26639c5f71d35617ebc80159c58ee03cb2db87c1668f5812e545021232023-01-26 22:51:0156 days 16 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e0x42d65e2bb06f179be33255d4bf968c475c8ea8ef40 FTM
0x0db38dd31c60dd418095efb094658e0bced9a12cb6034626032dd16866338c94540530392023-01-19 21:50:5763 days 17 hrs ago 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e 0x000000000000000000000000000000000000000050 FTM
0x0db38dd31c60dd418095efb094658e0bced9a12cb6034626032dd16866338c94540530392023-01-19 21:50:5763 days 17 hrs ago 0xc9f5aa2c93ae9e89a77dc60e7e3cfff1234e4287 0x7c3b85a71e4fce1209a81d67f1af46b5a068770e100 FTM
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

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

Contract Name:
FantomUpgradeabilityProxy

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 5000000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at FtmScan.com on 2021-02-24
*/

pragma solidity ^0.5.0;

/**
 * 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;
    }
}

/**
 * @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());
  }
}

/**
 * @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)
    }
  }
}

/**
 * @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);
    }
  }
}

/**
 * @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();
  }
}

/**
 * @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);
  }
}

// FantomUpgradeabilityProxy inherits fully from OpenZeppelin Upgradeability Proxy
// contract with admin access control.
contract FantomUpgradeabilityProxy is AdminUpgradeabilityProxy {
    // create the contract instance
    constructor(address _logic, address _admin, bytes memory _data) AdminUpgradeabilityProxy(_logic, _admin, _data) public payable
    {
        // nothing to do here
    }
}

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

6080604052604051610aec380380610aec8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902086935085925084915083908290600080516020610a918339815191526000199091011461013657fe5b610148826001600160e01b0361026d16565b805115610200576000826001600160a01b0316826040518082805190602001908083835b6020831061018b5780518252601f19909201916020918201910161016c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101eb576040519150601f19603f3d011682016040523d82523d6000602084013e6101f0565b606091505b50509050806101fe57600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e0000000000000000000000000081529051908190036013019020600080516020610a718339815191526000199091011461025057fe5b610262826001600160e01b036102cd16565b5050505050506102e5565b610280816102df60201b61069f1760201c565b6102bb5760405162461bcd60e51b815260040180806020018281038252603b815260200180610ab1603b913960400191505060405180910390fd5b600080516020610a9183398151915255565b600080516020610a7183398151915255565b3b151590565b61077d806102f46000396000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b146101315780638f2839701461016f578063f851a440146101af5761005a565b80633659cfe6146100645780634f1ef286146100a4575b6100626101c4565b005b34801561007057600080fd5b506100626004803603602081101561008757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101de565b610062600480360360408110156100ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100f257600080fd5b82018360208201111561010457600080fd5b8035906020019184600183028401116401000000008311171561012657600080fd5b509092509050610232565b34801561013d57600080fd5b50610146610306565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561017b57600080fd5b506100626004803603602081101561019257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661035d565b3480156101bb57600080fd5b50610146610465565b6101cc6104aa565b6101dc6101d761053e565b610563565b565b6101e6610587565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561022757610222816105ac565b61022f565b61022f6101c4565b50565b61023a610587565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102f957610276836105ac565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102e0576040519150601f19603f3d011682016040523d82523d6000602084013e6102e5565b606091505b50509050806102f357600080fd5b50610301565b6103016101c4565b505050565b6000610310610587565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103525761034b61053e565b905061035a565b61035a6101c4565b90565b610365610587565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102275773ffffffffffffffffffffffffffffffffffffffff8116610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806106d86036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61042d610587565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a1610222816105f9565b600061046f610587565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103525761034b610587565b6104b2610587565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806106a66032913960400191505060405180910390fd5b6101dc6101dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610582573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6105b58161061d565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6106268161069f565b61067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061070e603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a723158208abfa213c4c42435b020723c4ca2627b6ef8b08d62f7e55edb56330c106250da64736f6c63430005110032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000000000000000000e34e3b088aeffa21b6705f4034c471dab7f259a200000000000000000000000042d65e2bb06f179be33255d4bf968c475c8ea8ef00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

11520:281:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2017:11;:9;:11::i;:::-;11520:281;8753:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8753:105:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8753:105:0;;;;:::i;9386:225::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9386:225:0;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9386:225:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9386: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;-1:-1;9386:225:0;;-1:-1:-1;9386:225:0;-1:-1:-1;9386:225:0;:::i;8053:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8053:98:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8334:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8334:228:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8334:228:0;;;;:::i;7904:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7904:80:0;;;:::i;3563:93::-;3600:15;:13;:15::i;:::-;3622:28;3632:17;:15;:17::i;:::-;3622:9;:28::i;:::-;3563:93::o;8753:105::-;7771:8;:6;:8::i;:::-;7757:22;;:10;:22;;;7753:80;;;8823:29;8834:17;8823:10;:29::i;:::-;7753:80;;;7814:11;:9;:11::i;:::-;8753:105;:::o;9386:225::-;7771:8;:6;:8::i;:::-;7757:22;;:10;:22;;;7753:80;;;9492:29;9503:17;9492:10;:29::i;:::-;9529:12;9546:17;:30;;9577:4;;9546:36;;;;;30:3:-1;22:6;14;1:33;9546:36:0;;45:16:-1;;;-1:-1;9546:36:0;;-1:-1:-1;9546:36:0;;-1:-1:-1;;9546: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;;9528:54:0;;;9597:7;9589:16;;;;;;7790:1;7753:80;;;7814:11;:9;:11::i;:::-;9386:225;;;:::o;8053:98::-;8105:7;7771:8;:6;:8::i;:::-;7757:22;;:10;:22;;;7753:80;;;8128:17;:15;:17::i;:::-;8121:24;;7753:80;;;7814:11;:9;:11::i;:::-;8053:98;:::o;8334:228::-;7771:8;:6;:8::i;:::-;7757:22;;:10;:22;;;7753:80;;;8405:22;;;8397:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8498:32;8511:8;:6;:8::i;:::-;8498:32;;;;;;;;;;;;;;;;;;;;;;;;;8537:19;8547:8;8537:9;:19::i;7904:80::-;7947:7;7771:8;:6;:8::i;:::-;7757:22;;:10;:22;;;7753:80;;;7970:8;:6;:8::i;10143:160::-;10206:8;:6;:8::i;:::-;10192:22;;:10;:22;;;;10184:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10276:21;:19;:21::i;4566:161::-;4380:66;4704:11;;4687:35::o;2456:750::-;2763:12;2760:1;2757;2744:32;2957:1;2954;2940:12;2937:1;2921:14;2916:3;2903:56;3024:14;3021:1;3018;3003:36;3056:6;3113:36;;;;3177:14;3174:1;3167:25;3113:36;3132:14;3129:1;3122:25;9661:141;7464:66;9779:11;;9763:34::o;4868:145::-;4931:37;4950:17;4931:18;:37::i;:::-;4980:27;;;;;;;;;;;4868:145;:::o;9924:139::-;7464:66;10029:22;10020:38::o;5156:313::-;5235:57;5274:17;5235:38;:57::i;:::-;5227:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4380:66;5426:31;5417:47::o;942:627::-;1514:20;1553:8;;;942:627::o

Swarm Source

bzzr://8abfa213c4c42435b020723c4ca2627b6ef8b08d62f7e55edb56330c106250da
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.