Contract 0xa2bc98bf14fd40eb9032fce6ba611ed06653feb7

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x31edfc40062fe693a7c1d23f533e73aaf6d94f6a5e4b93e696101b19b1eb0f020xaca812ac200126972021-10-25 2:09:1734 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.09737926754
0xa5ef4bb77fab4e630deb88516e8d72b9f496c693820db5deeee8e3f3c57c9af60xaca812ac200126932021-10-25 2:09:1134 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x010d18250b9d888de901e22e4e15a25c33b5a30e69ef90691d19588e5ad149e10xaca812ac200126932021-10-25 2:09:1134 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495932351184
0x3ccd65bc29c78d9982dab82be77ce1d5df6760a0455a06335f8deacf2ac6bb450xaca812ac200126872021-10-25 2:09:0334 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495787511128
0x093b8caf8a2192f932cafb0ccc759d0a79faef898ae80304e61a86a3d47f211e0xaca812ac200126852021-10-25 2:09:0135 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0xffd621c7710233d44d569133a6ea960b5c4e4f71ad513533ea737bf640fb314e0xaca812ac200126612021-10-25 2:08:3935 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0xf88d68389c1334728757c248644ac4cc55a51b1fbc3a1206210d660c8f79c7760xaca812ac200126582021-10-25 2:08:3635 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0x35c969f337cdd82cfb6250d51f63cb5119ea848423d6d9b32d208d0183bee1b00xaca812ac200126402021-10-25 2:08:1935 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x2f1bf689b31e95f20a1a234f16628f7cc9693ccd1a28f3c3169f7b7424e8a8450xaca812ac200126222021-10-25 2:08:0335 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0xa38956e5fc27b54315c9036b9206fafa28e44295740c9bcc32ceaa828bd5ec860xaca812ac200126222021-10-25 2:08:0335 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0xab1f7055e53bf93a4945f77de30126b77a91d77c55dd98aadb1d6f05633b56ef0xaca812ac200126082021-10-25 2:07:4936 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0xeda6f24bbdc81e975f7e0df1026882f38a704161b9764bf354b8d2b9fbcd8f7d0xaca812ac200126062021-10-25 2:07:4836 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0x7b5ec09507e29c76e016b7470092707e2ac850ae963341d3d8fd63c372ab61b10xaca812ac200125972021-10-25 2:07:3436 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0xdbffa4927cb09edf8e11e2996d0266918f89bc656ce948726f7f572cc5c7d5790xaca812ac200125972021-10-25 2:07:3436 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495934391185
0x6c9471003f46bd35cab1effc5b9b22c1b4732f6d58912c0eeb547657cfa0ebc60xaca812ac200125892021-10-25 2:07:2436 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495934391185
0x2dcaabff0284705332bbccfc2810c80eb3324f8887ff34e5f4671afc8c6998e90xaca812ac200125852021-10-25 2:07:1936 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x0ae2a80a74f1c92cb64ac4a4d18e7d1b552a7f8d473c12cbe6f2d065468b22fe0xaca812ac200125822021-10-25 2:07:1536 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0x7dd357799f61e7eac8fa88e7ed731f986a5dd7aa5cfbfac2a004967bfed440850xaca812ac200125802021-10-25 2:07:1436 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x3778edea9d1ab9975b756afd3867eed4e7a3aef754835d05a5c0bd301b9991480xaca812ac200125692021-10-25 2:07:0236 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0x1fb327686070a4e6617518e3965be97ccc440c61a5e4209fa85cee77ac23a8450xaca812ac200125692021-10-25 2:07:0236 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x563a3aa60412662cf1e28c4ddaefa2d4e91a6aa94441f5a7e343f9bc5ba516ab0xaca812ac200125622021-10-25 2:06:5337 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
0xb9834f56470a884d37e886fcf67c805f61c1c3bf607b12494c194becc34639d10xaca812ac200125582021-10-25 2:06:4937 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x3133089fd024c22e28259474a5c9eb0863780156091f0a5eb9370c6f39dc579b0xaca812ac200125542021-10-25 2:06:4537 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0xf418291b34031c64c1a5342ef345d472f2fa752f79f24ab4c6782f542785d49f0xaca812ac200125512021-10-25 2:06:4237 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495938471187
0x9399a59c779cefe315b782d21848ba42a6364e9371d498bc0f7c03a66b753a270xaca812ac200125462021-10-25 2:06:3637 mins ago0x69a5c0db191697d11b0ac5637c3445d38af4b15b IN  0xa2bc98bf14fd40eb9032fce6ba611ed06653feb70 FTM0.495936431186
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x0e52ccb5149c1e1e50e4a1fadd3114c1700fad600dce655ebe13a32d027ae49c169888352021-09-13 7:49:3941 days 18 hrs ago 0x00001ad0000214818190d6103ef0e981d7067a33  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

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

// File: contracts/3_Ballot.sol

pragma solidity >=0.6.0 <0.8.0;

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback () external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {
    }
}

contract UpgradeableProxy is Proxy {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) public payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            Address.functionDelegateCall(_logic, _data);
        }
    }

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    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 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal virtual {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }
}

contract TransparentUpgradeableProxy is UpgradeableProxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.
     */
    constructor(address _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(admin_);
    }

    /**
     * @dev Emitted when the admin account has changed.
     */
    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 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external ifAdmin returns (address admin_) {
        admin_ = _admin();
    }

    /**
     * @dev Returns the current implementation.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external ifAdmin returns (address implementation_) {
        implementation_ = _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external virtual ifAdmin {
        require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address");
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external virtual ifAdmin {
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable virtual ifAdmin {
        _upgradeTo(newImplementation);
        Address.functionDelegateCall(newImplementation, data);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual returns (address adm) {
        bytes32 slot = _ADMIN_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            adm := sload(slot)
        }
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        bytes32 slot = _ADMIN_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newAdmin)
        }
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405162000c7e38038062000c7e833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060405250849150829050620000f98262000137565b8051156200011a57620001188282620001ae60201b620003841760201c565b505b50620001239050565b6200012e82620001dd565b505050620003bf565b6200014d816200020160201b620003b01760201c565b6200018a5760405162461bcd60e51b815260040180806020018281038252603681526020018062000c226036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6060620001d6838360405180606001604052806027815260200162000bfb6027913962000207565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6060620002148462000201565b620002515760405162461bcd60e51b815260040180806020018281038252602681526020018062000c586026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b60208310620002915780518252601f19909201916020918201910162000270565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620002f3576040519150601f19603f3d011682016040523d82523d6000602084013e620002f8565b606091505b5090925090506200030b82828662000315565b9695505050505050565b6060831562000326575081620001d6565b825115620003375782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200038357818101518382015260200162000369565b50505050905090810190601f168015620003b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b61082c80620003cf6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610262565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b031661029f565b34801561018857600080fd5b5061012d610359565b6101996103b6565b6101a96101a4610416565b61043b565b565b6101b361045f565b6001600160a01b0316336001600160a01b031614156101da576101d581610484565b6101e2565b6101e2610191565b50565b6101ed61045f565b6001600160a01b0316336001600160a01b031614156102555761020f83610484565b61024f8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038492505050565b5061025d565b61025d610191565b505050565b600061026c61045f565b6001600160a01b0316336001600160a01b031614156102945761028d610416565b905061029c565b61029c610191565b90565b6102a761045f565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103055760405162461bcd60e51b815260040180806020018281038252603a8152602001806106f8603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e61045f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c4565b600061036361045f565b6001600160a01b0316336001600160a01b031614156102945761028d61045f565b60606103a98383604051806060016040528060278152602001610732602791396104e8565b9392505050565b3b151590565b6103be61045f565b6001600160a01b0316336001600160a01b0316141561040e5760405162461bcd60e51b81526004018080602001828103825260428152602001806107b56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561045a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61048d816105eb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60606104f3846103b0565b61052e5760405162461bcd60e51b815260040180806020018281038252602681526020018061078f6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b6020831061056c5780518252601f19909201916020918201910161054d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146105cc576040519150601f19603f3d011682016040523d82523d6000602084013e6105d1565b606091505b50915091506105e1828286610653565b9695505050505050565b6105f4816103b0565b61062f5760405162461bcd60e51b81526004018080602001828103825260368152602001806107596036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156106625750816103a9565b8251156106725782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106bc5781810151838201526020016106a4565b50505050905090810190601f1680156106e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220f2fbdb02ba8bf40a4bc25a658103424e72e39696d068058a6858732489c3f9fa64736f6c634300060c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163740000000000000000000000001b021c68f76a1f2a227b05c9e3e71e91fb4cdee700000000000000000000000000001ad0000214818190d6103ef0e981d7067a3300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

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

0000000000000000000000001b021c68f76a1f2a227b05c9e3e71e91fb4cdee700000000000000000000000000001ad0000214818190d6103ef0e981d7067a3300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0x1b021c68f76a1f2a227b05c9e3e71e91fb4cdee7
Arg [1] : admin_ (address): 0x00001ad0000214818190d6103ef0e981d7067a33
Arg [2] : _data (bytes): 0x

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b021c68f76a1f2a227b05c9e3e71e91fb4cdee7
Arg [1] : 00000000000000000000000000001ad0000214818190d6103ef0e981d7067a33
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

12822:4701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10174:11;:9;:11::i;:::-;12822:4701;;9942:11;:9;:11::i;15868:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15868:119:0;-1:-1:-1;;;;;15868:119:0;;:::i;16372:219::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16372:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16372:219:0;;-1:-1:-1;16372:219:0;-1:-1:-1;16372:219:0;:::i;15102:131::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;15102:131:0;;;;;;;;;;;;;;15447:254;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15447:254:0;-1:-1:-1;;;;;15447:254:0;;:::i;14536:95::-;;;;;;;;;;;;;:::i;9578:113::-;9627:17;:15;:17::i;:::-;9655:28;9665:17;:15;:17::i;:::-;9655:9;:28::i;:::-;9578:113::o;15868:119::-;13994:8;:6;:8::i;:::-;-1:-1:-1;;;;;13980:22:0;:10;-1:-1:-1;;;;;13980:22:0;;13976:100;;;15950:29:::1;15961:17;15950:10;:29::i;:::-;13976:100:::0;;;14053:11;:9;:11::i;:::-;15868:119;:::o;16372:219::-;13994:8;:6;:8::i;:::-;-1:-1:-1;;;;;13980:22:0;:10;-1:-1:-1;;;;;13980:22:0;;13976:100;;;16490:29:::1;16501:17;16490:10;:29::i;:::-;16530:53;16559:17;16578:4;;16530:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;16530:28:0::1;::::0;-1:-1:-1;;;16530:53:0:i:1;:::-;;13976:100:::0;;;14053:11;:9;:11::i;:::-;16372:219;;;:::o;15102:131::-;15154:23;13994:8;:6;:8::i;:::-;-1:-1:-1;;;;;13980:22:0;:10;-1:-1:-1;;;;;13980:22:0;;13976:100;;;15208:17:::1;:15;:17::i;:::-;15190:35;;13976:100:::0;;;14053:11;:9;:11::i;:::-;15102:131;:::o;15447:254::-;13994:8;:6;:8::i;:::-;-1:-1:-1;;;;;13980:22:0;:10;-1:-1:-1;;;;;13980:22:0;;13976:100;;;-1:-1:-1;;;;;15530:22:0;::::1;15522:93;;;;-1:-1:-1::0;;;15522:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15631:32;15644:8;:6;:8::i;:::-;15631:32;::::0;;-1:-1:-1;;;;;15631:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;15674:19;15684:8;15674:9;:19::i;14536:95::-:0;14579:14;13994:8;:6;:8::i;:::-;-1:-1:-1;;;;;13980:22:0;:10;-1:-1:-1;;;;;13980:22:0;;13976:100;;;14615:8:::1;:6;:8::i;6365:200::-:0;6448:12;6480:77;6501:6;6509:4;6480:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6473:84;6365:200;-1:-1:-1;;;6365:200:0:o;680:422::-;1047:20;1086:8;;;680:422::o;17313:207::-;17399:8;:6;:8::i;:::-;-1:-1:-1;;;;;17385:22:0;:10;-1:-1:-1;;;;;17385:22:0;;;17377:101;;;;-1:-1:-1;;;17377:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17489:23;:21;:23::i;11805:256::-;11655:66;12032:11;;12009:45::o;8171:915::-;8571:14;8568:1;8565;8552:34;8789:1;8786;8770:14;8767:1;8751:14;8744:5;8731:60;8868:16;8865:1;8862;8847:38;8908:6;8977:38;;;;9049:16;9046:1;9039:27;8977:38;8996:16;8993:1;8986:27;16657:227;13733:66;16855:11;;16833:44::o;12187:163::-;12262:37;12281:17;12262:18;:37::i;:::-;12315:27;;-1:-1:-1;;;;;12315:27:0;;;;;;;;12187:163;:::o;16971:216::-;13733:66;17147:22;17132:48::o;6759:423::-;6870:12;6903:18;6914:6;6903:10;:18::i;:::-;6895:69;;;;-1:-1:-1;;;6895:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7038:12;7052:23;7079:6;-1:-1:-1;;;;;7079:19:0;7099:4;7079:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7079:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7037:67;;;;7122:52;7140:7;7149:10;7161:12;7122:17;:52::i;:::-;7115:59;6759:423;-1:-1:-1;;;;;;6759:423:0:o;12446:369::-;12528:37;12547:17;12528:18;:37::i;:::-;12520:104;;;;-1:-1:-1;;;12520:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11655:66;12766:31;12751:57::o;7190:742::-;7305:12;7334:7;7330:595;;;-1:-1:-1;7365:10:0;7358:17;;7330:595;7479:17;;:21;7475:439;;7742:10;7736:17;7803:15;7790:10;7786:2;7782:19;7775:44;7690:148;7885:12;7878:20;;-1:-1:-1;;;7878:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://f2fbdb02ba8bf40a4bc25a658103424e72e39696d068058a6858732489c3f9fa
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.