Contract 0xf239f89992688ce2539cf637614cc3f8866ea433

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x11aac87195eb2d60fbe5304f9720519d58f6879f1a9c0b082c7aa6df7e753b82Withdraw387249222022-05-21 9:45:191 day 20 hrs ago0xdb19d3186ea32001f6f16867d5d31a39bba139be IN  Tetu: xTETU Token0 FTM0.002280978
0xad1dcb14c992a2e4d98fb3137ea1ab2e1eb71ea81078b956e564382ea60732d4Withdraw386812572022-05-20 19:51:512 days 10 hrs ago0xa41c5504464989b219c14301e785d29961b5a719 IN  Tetu: xTETU Token0 FTM0.00880994796
0xefc63f36759506cfe462dde75616c350df619f5dbb6fb248af8d3c72c8407e12Deposit And Inve...386391742022-05-20 6:08:382 days 23 hrs ago0x9efc70ad55a304959fcf9791754da08ecc322ed2 IN  Tetu: xTETU Token0 FTM0.024817844092
0xa6a6a5e1202119a31051d1bca75ff391715e338790c7a55f337c1ad4c7f5361dExit386095792022-05-19 20:29:163 days 9 hrs ago0x129cb2eef85c3edaae8cd649b45b7ffce836cd6f IN  Tetu: xTETU Token0 FTM0.01505529795
0x0c1f7bec277d7085ccbe797699adfc0fb9d43489334018666042337ad62e7b7dDeposit And Inve...385919502022-05-19 15:00:203 days 14 hrs ago0x5976340ae917c94f1b27a1c2e7b8c100067815e5 IN  Tetu: xTETU Token0 FTM0.05774357
0x549960ee3428d9f3d4950f3a93674f22e9381bd82c27aa3cf21605fc6650d85eTransfer385127142022-05-18 12:46:204 days 17 hrs ago0xa28d6e492ca610f35547a856f1d0ba9526d1801e IN  Tetu: xTETU Token0 FTM0.084593120911
0x4f4950c3472deb4117bb9bd0461724094cc8064bb514650e3a55657f5320f1c3Exit383998682022-05-16 23:24:376 days 6 hrs ago0x05679df1e0f5719dabb8cbbfd46d9513c93907d0 IN  Tetu: xTETU Token0 FTM0.067016981303
0x5828a38563e71929a81ef5a89c6cd5ba35a159b3ede85ae20b81aa9863795368Exit383617082022-05-16 11:23:396 days 18 hrs ago0xcdbc2da6840d17df986378c674cc0024642225d9 IN  Tetu: xTETU Token0 FTM0.31988473801
0x1c7f62941b3f45f95c153d354022e25055fae6339243ab92e71cd0838d4fca8bWithdraw383153182022-05-15 19:53:007 days 10 hrs ago0x3a6601d001e866060d8006b96ed4bf0ae067b9cb IN  Tetu: xTETU Token0 FTM0.195045604997
0xd694dadd13a2e81bc977ef588321643b15f1a707be691f73d5744a2d7dc07447Exit382984892022-05-15 13:48:267 days 16 hrs ago0x5abb9ed9073e147066eabc32df59f8c31a37d61e IN  Tetu: xTETU Token0 FTM0.09515876895
0x6c0dd6fc95258b1ce34a26dcbcff322cbdc80915d62d3acfe53474529c6ff23aWithdraw382880842022-05-15 10:16:087 days 19 hrs ago0x941eaaf5f9f8463bec0cc22da1dada6f0d30e28a IN  Tetu: xTETU Token0 FTM0.0281612
0x30175c47f999e8359c4f3eea3ad8286aca94be5c0ce1c26a7a2c0492d9b1c458Exit381361422022-05-13 5:58:299 days 23 hrs ago0x0644141dd9c2c34802d28d334217bd2034206bf7 IN  Tetu: xTETU Token0 FTM0.692862
0x6199b475062ca6f41381ff15d9c10bd6a6a6bd1deabda9978899d4143f0f330aExit381126662022-05-12 19:48:2410 days 10 hrs ago0xbe1b10e7dbfbd22d189c4edcdcf39c09e4bf56c9 IN  Tetu: xTETU Token0 FTM0.4680536
0xfbe24513fb9ab6f53b1e1a162063ae176c5a4b7f46a4fa9ec1fe2bb7a2da3e18Withdraw379462172022-05-10 2:23:1713 days 3 hrs ago0x0527917905024bc5bb1588b9bd620b443ab63086 IN  Tetu: xTETU Token0 FTM0.186788686529
0xe4a27e965ac52ace3642273e9cfd77e5fe475350bf91601b94970e1a3e17815aExit378497212022-05-08 17:32:5514 days 12 hrs ago0x1d8e4ea876b434ccec2947e403876ace1cb1f997 IN  Tetu: xTETU Token0 FTM0.132825829153
0x4f575f60d094cf7af147988904d7b2312f4f865374d5337a040245cc5f23dcc6Deposit And Inve...377758822022-05-07 17:35:5915 days 12 hrs ago0x2526a6efeef588bdfb0d572d8c373dd71ef4e4f4 IN  Tetu: xTETU Token0 FTM0.0336364
0x9596aa64877b18dd638629af4f675ea1848309aad5336e45827fa0b22ef8a494Exit377654052022-05-07 14:30:4815 days 15 hrs ago0x2d42d6bb3d18a7be35d76b599aee9d3358b22b3e IN  Tetu: xTETU Token0 FTM0.10598606235
0xd8ffc788eca831e60a6eb2e1e38c7d2294468b0aa38b32df48ae8cd414b63bb8Deposit And Inve...377562212022-05-07 11:42:1115 days 18 hrs ago0x6dec0eb4f60b823fe20b718e11077a8097d174f3 IN  Tetu: xTETU Token0 FTM0.06276475
0xf7e54d12d3f85abec9c0f802f397a9cfa0d9e3780e319dcb97e77fec7f1b655bWithdraw377538542022-05-07 11:00:4515 days 18 hrs ago0x8661039d1db385a34fa25887dddcba5a047d6afc IN  Tetu: xTETU Token0 FTM0.0847159299
0x372793fd99bdef15340c17910b302a56ab1e747326fc87eefb25725da3a9a426Exit377416562022-05-07 7:05:1515 days 22 hrs ago0x051a3190c9342211eb311723b23b8c7cbd7b5a5d IN  Tetu: xTETU Token0 FTM0.02154836921
0x3f1d0645dcfadc16c2533aabdddeca05c91d0b842323c11d2636ffb2e919924fExit377052032022-05-06 19:38:5316 days 10 hrs ago0x30044b7c080a6e456386d5b9c370dc7c259ae2cd IN  Tetu: xTETU Token0 FTM0.05326384
0xd489d8e1def664a3a1dbd0be1ff689b533e4447edbe292e072b18bd21bb8e89fDeposit And Inve...376843982022-05-06 12:11:0916 days 17 hrs ago0xc41b7181d9086cb5aeea0fe220112a62306c0e34 IN  Tetu: xTETU Token0 FTM0.063359813285
0x41db278c4723447109a83deef1de1d85a6fbbc7c16a79624fefa9ee7347c3b45Exit376729972022-05-06 8:27:1516 days 21 hrs ago0xd80da4487c1ad77189821dc50696b9a619ee39a5 IN  Tetu: xTETU Token0 FTM0.10598606235
0xf66485639b21343257304a012d63476e58589ba74c2c7626a76941b0167cca65Deposit And Inve...376335732022-05-05 20:46:0817 days 9 hrs ago0x62e1af3e818afc059d111c4f53cf0a2d9fd29110 IN  Tetu: xTETU Token0 FTM0.084091
0x6987a6fe1ac1e4fb6aaf696657458622eeba1f36a0b99fbd6076d17520408607Exit376180082022-05-05 15:03:1117 days 14 hrs ago0xc67c8439fda654532cce7d8fe04485651c8d8129 IN  Tetu: xTETU Token0 FTM0.09515876895
[ Download CSV Export 

OVERVIEW

TETU is a DeFi application built on Fantom that implements automated yield farming strategies in order to provide investors with a safe and secure method of receiving high and stable yield on their investments providing automated yield aggregation and distribution through xTETU.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xeb587bdf1b1ec6ebeb703e61c897bb49d21e001675cb6169c4b6a20f99567c16225499132021-11-19 22:37:27184 days 7 hrs ago Tetu: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

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

Contract Name:
TetuProxyControlled

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 150 runs

Other Settings:
default evmVersion
File 1 of 6 : TetuProxyControlled.sol
// SPDX-License-Identifier: ISC
/**
* By using this software, you understand, acknowledge and accept that Tetu
* and/or the underlying software are provided “as is” and “as available”
* basis and without warranties or representations of any kind either expressed
* or implied. Any use of this open source software released under the ISC
* Internet Systems Consortium license is done at your own risk to the fullest
* extent permissible pursuant to applicable law any and all liability as well
* as all warranties, including any fitness for a particular purpose with respect
* to Tetu and/or the underlying software and the use thereof are disclaimed.
*/

pragma solidity 0.8.4;

import "../base/interface/IControllable.sol";
import "./UpgradeableProxy.sol";
import "./interface/ITetuProxy.sol";

/// @title EIP1967 Upgradable proxy implementation.
/// @dev Only Controller has access and should implement time-lock for upgrade action.
/// @author belbix
contract TetuProxyControlled is UpgradeableProxy, ITetuProxy {

  constructor(address _logic) UpgradeableProxy(_logic) {
  }

  /// @notice Upgrade contract logic
  /// @dev Upgrade allowed only for Controller and should be done only after time-lock period
  /// @param _newImplementation Implementation address
  function upgrade(address _newImplementation) external override {
    require(IControllable(address(this)).isController(msg.sender), "forbidden");
    _upgradeTo(_newImplementation);

    // the new contract must have the same ABI and you must have the power to change it again
    require(IControllable(address(this)).isController(msg.sender), "wrong impl");
  }

  /// @notice Return current logic implementation
  function implementation() external override view returns (address) {
    return _implementation();
  }
}

File 2 of 6 : IControllable.sol
// SPDX-License-Identifier: ISC
/**
* By using this software, you understand, acknowledge and accept that Tetu
* and/or the underlying software are provided “as is” and “as available”
* basis and without warranties or representations of any kind either expressed
* or implied. Any use of this open source software released under the ISC
* Internet Systems Consortium license is done at your own risk to the fullest
* extent permissible pursuant to applicable law any and all liability as well
* as all warranties, including any fitness for a particular purpose with respect
* to Tetu and/or the underlying software and the use thereof are disclaimed.
*/

pragma solidity 0.8.4;

interface IControllable {

  function isController(address _contract) external view returns (bool);

  function isGovernance(address _contract) external view returns (bool);
}

File 3 of 6 : UpgradeableProxy.sol
// SPDX-License-Identifier: ISC
/**
* By using this software, you understand, acknowledge and accept that Tetu
* and/or the underlying software are provided “as is” and “as available”
* basis and without warranties or representations of any kind either expressed
* or implied. Any use of this open source software released under the ISC
* Internet Systems Consortium license is done at your own risk to the fullest
* extent permissible pursuant to applicable law any and all liability as well
* as all warranties, including any fitness for a particular purpose with respect
* to Tetu and/or the underlying software and the use thereof are disclaimed.
*/

pragma solidity 0.8.4;

import "@openzeppelin/contracts/proxy/Proxy.sol";
import "@openzeppelin/contracts/utils/Address.sol";


/// @title OpenZeppelin https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.4/contracts/proxy/UpgradeableProxy.sol
/// @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
///      implementation address that can be changed. This address is stored in storage in the location specified by
///      https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
///      implementation behind the proxy.
///      Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see
///      {TransparentUpgradeableProxy}.
abstract 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) payable {
    assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
    _setImplementation(_logic);
  }

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

File 4 of 6 : ITetuProxy.sol
// SPDX-License-Identifier: ISC
/**
* By using this software, you understand, acknowledge and accept that Tetu
* and/or the underlying software are provided “as is” and “as available”
* basis and without warranties or representations of any kind either expressed
* or implied. Any use of this open source software released under the ISC
* Internet Systems Consortium license is done at your own risk to the fullest
* extent permissible pursuant to applicable law any and all liability as well
* as all warranties, including any fitness for a particular purpose with respect
* to Tetu and/or the underlying software and the use thereof are disclaimed.
*/

pragma solidity 0.8.4;

interface ITetuProxy {

  function upgrade(address _newImplementation) external;

  function implementation() external returns (address);

}

File 5 of 6 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
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 {
        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 {}
}

File 6 of 6 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
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;
        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");

        (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");

        (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");

        (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");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 150
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161058938038061058983398101604081905261002f91610136565b8061005b60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610164565b6000805160206105698339815191521461008557634e487b7160e01b600052600160045260246000fd5b61008e81610095565b5050610187565b6100a88161013060201b6102541760201c565b61011e5760405162461bcd60e51b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160448201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606482015260840160405180910390fd5b60008051602061056983398151915255565b3b151590565b600060208284031215610147578081fd5b81516001600160a01b038116811461015d578182fd5b9392505050565b60008282101561018257634e487b7160e01b81526011600452602481fd5b500390565b6103d3806101966000396000f3fe60806040526004361061002d5760003560e01c80630900f010146100445780635c60da1b146100645761003c565b3661003c5761003a610095565b005b61003a610095565b34801561005057600080fd5b5061003a61005f36600461034f565b6100c7565b34801561007057600080fd5b50610079610225565b6040516001600160a01b03909116815260200160405180910390f35b6100c56100c07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b61025a565b565b60405163b429afeb60e01b8152336004820152309063b429afeb9060240160206040518083038186803b1580156100fd57600080fd5b505afa158015610111573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610135919061037d565b6101725760405162461bcd60e51b81526020600482015260096024820152683337b93134b23232b760b91b60448201526064015b60405180910390fd5b61017b8161027e565b60405163b429afeb60e01b8152336004820152309063b429afeb9060240160206040518083038186803b1580156101b157600080fd5b505afa1580156101c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e9919061037d565b6102225760405162461bcd60e51b815260206004820152600a6024820152691ddc9bdb99c81a5b5c1b60b21b6044820152606401610169565b50565b600061024f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3b151590565b3660008037600080366000845af43d6000803e808015610279573d6000f35b3d6000fd5b610287816102be565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b803b61032b5760405162461bcd60e51b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e74616044820152751d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd60521b6064820152608401610169565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b600060208284031215610360578081fd5b81356001600160a01b0381168114610376578182fd5b9392505050565b60006020828403121561038e578081fd5b81518015158114610376578182fdfea26469706673582212203d2cc27a9e9ba30ef42e58f5e0e5cd91fe6239ef5724907ce8a98a25a755cf4764736f6c63430008040033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc000000000000000000000000bf1fc29668e5f5eaa819948599c9ac1b1e03e75f

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.