Contract 0xf239f89992688ce2539cf637614cc3f8866ea433

Tetu Token Contract 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x26f54c6b260b55ce6ae36e2a96768e31c0a4698af9e4473affccd296996a4e9aExit552148302023-02-06 19:25:483 hrs 47 mins ago0xabd4c34cc6bb50f49b633ed82ea9a3bb44cbbcec IN  Tetu: xTETU Token0 FTM0.026604234968
0xff8e47bebed4aef6d8960d8ac3a6818d97cafb0e3a1ae3f2f5d2a9c7fec3c331Exit552142492023-02-06 19:15:113 hrs 58 mins ago0xabd4c34cc6bb50f49b633ed82ea9a3bb44cbbcec IN  Tetu: xTETU Token0 FTM0.014394808444
0x114a3a44e46385974d7e6a081a1adb9ac23a38f960c5e0cc5c906d0fa2321241Get All Rewards552129152023-02-06 18:49:584 hrs 23 mins ago0xabd4c34cc6bb50f49b633ed82ea9a3bb44cbbcec IN  Tetu: xTETU Token0 FTM0.003687360317
0x0810e196bcba242972c8a016e23ee9189e04cc45233790419fd30508e90d555fExit535816962023-01-11 15:58:3426 days 7 hrs ago0xe5936d9de1527832d39d05f9f9f7ec88cc2755ed IN  Tetu: xTETU Token0 FTM0.007078593242
0xbd5b00e3e9e799c3346313dffdbb0fa121f2b33ec1db7f59e7d2e67932bee255Get All Rewards ...529246312022-12-27 8:40:3341 days 14 hrs ago0x525b41c72c4ea3af9fbd47ac8e9f1ac87364908a IN  Tetu: xTETU Token0 FTM0.031332370916
0x466bd46046c61b640b745f733cd2e74fda5f249ea8f99f6b1928782964b95b35Exit524435042022-12-16 18:59:1452 days 4 hrs ago0xcae1b304a284c700d93c861ceebce054d837dbf3 IN  Tetu: xTETU Token0 FTM0.08558772075
0xabafed839b8fa0929148deb51ee1fc9e42dbed59aa5031400bb15697673a6489Exit524430752022-12-16 18:44:3452 days 4 hrs ago0x7da4c747cf1f281db5a8d947f6196f2dbada71e3 IN  Tetu: xTETU Token0 FTM0.02889743759
0x2152be02a22c192ac7aa8c250f99c8ea773004a32d371abac21fef86ca47e757Exit524421592022-12-16 17:49:2152 days 5 hrs ago0x25676a5f575c1a99632107d979d732ee77701bd9 IN  Tetu: xTETU Token0 FTM0.0964144125
0x0bc64a83162687f795f217d633859c5ca8fa5b818d442cb8af839a44ba33e280Exit520607542022-12-09 12:32:3359 days 10 hrs ago0xda931db44ceadae8c61773c94ef531976f1f36b9 IN  Tetu: xTETU Token0 FTM0.1072417059
0x632d08ca25bee76b615152e165770c7eedee9dd4fa72a3a8e5133ff876f8c2f4Exit519657732022-12-06 21:14:2562 days 1 hr ago0x4ffb169796d2bde425f5e47f4a152877e972c155 IN  Tetu: xTETU Token0 FTM0.002066048744
0xf8614a8c74cb6f1de9591a3752fe2f216dd2082b674423d14f94c6cca2ddf648Exit517210452022-12-01 15:29:3767 days 7 hrs ago0xc41b7181d9086cb5aeea0fe220112a62306c0e34 IN  Tetu: xTETU Token0 FTM0.03921412
0xb12e773f4d80ede295a34aae9fc2f3f2a8233ed1fd7910ed89487ac785d825a1Exit516220412022-11-29 18:50:0169 days 4 hrs ago0x42e99987b8223f29cdf17f5a6d338bb2208ea23e IN  Tetu: xTETU Token0 FTM0.1072417059
0xab5c385ba0d5614b053ceed52ff48af568ed25639f9f0b25efcc6e158479522aExit514960312022-11-27 6:28:5371 days 16 hrs ago0x9dd39c2ecba7396016343f9be5f1651aff5b1b56 IN  Tetu: xTETU Token0 FTM0.0964144125
0xdf3c9304ddb4c9c3aba06e5ddfff4ff58c400b8c9e11bbf82f59114219de4e0bExit514607062022-11-26 8:23:1272 days 14 hrs ago0xc791c36f5b70ce4f63097a1a4ab48ada6d6b40d6 IN  Tetu: xTETU Token0 FTM0.004325642989
0xa5ac8e50eee2ad74d1a282ee728c69fce4ce8043d89ce662d8465a6c62075cbbExit514241992022-11-25 9:46:5673 days 13 hrs ago0x1c8ea9b4385f4653da79e8d8e09e6d6e4b2c8983 IN  Tetu: xTETU Token0 FTM0.0964144125
0x53930e7523454ae1667d0ba667cd9b3aa52c5c02fcefee238f315e3d1561e5e7Exit513621882022-11-24 0:12:2474 days 23 hrs ago0xea84e1b96bbc06af9da27572f65f3a5740f32998 IN  Tetu: xTETU Token0 FTM0.0964144125
0x48203baef11f3e44dfa327cf48bb2c761a2d68732bf2963692d5c33f583472e7Exit512079742022-11-20 22:45:5978 days 27 mins ago0x3c7ac2ff76a1b4dcb2b69b1121fef5fb8dcdec43 IN  Tetu: xTETU Token0 FTM0.0120864
0xd4041d887219b99008faacc1854adc261c2d2d0e0487715f3dd88ea2ab8a3b5aExit511665462022-11-20 4:06:2278 days 19 hrs ago0x9e3cf7abd3c0ecd0d4444fbca2c9c09d3e227e68 IN  Tetu: xTETU Token0 FTM0.011416123963
0xeb2b6b015ba7dc966e3fc4d96c59eed312110ef5e939d998eb30ca324968a5ecExit511064752022-11-19 3:10:5979 days 20 hrs ago0xf626e9a2fddbf55b0b1a87c56128a7ba6723a85a IN  Tetu: xTETU Token0 FTM0.0112175
0x6efa4d4d84b3062b486fbbdeb40213d5af136bec0b103b4cc93142860250ee31Exit506662522022-11-09 10:35:2589 days 12 hrs ago0x1b72bac3772050fdcaf468cce7e20deb3cb02d89 IN  Tetu: xTETU Token0 FTM2.516680012144
0xdfdc7d4d6535741fe5c8d40a5542f5f2c5975ba55fcfe44d857c51d8bdc44637Exit506116722022-11-08 9:57:4290 days 13 hrs ago0x5d486dad5f22e1def501075988c9edd659427e43 IN  Tetu: xTETU Token0 FTM0.0240375
0x672f896fbf82af9265ba4f4506bc78b28004d3e6e24bc26b1a0cd2ffce8b9dcfExit504745832022-11-05 2:02:4093 days 21 hrs ago0xdadb46c0aebc910ef660940fed2087492823c017 IN  Tetu: xTETU Token0 FTM0.007554
0xb2a8a034381886f792da05bae324b9fd8747d80e51e21d25b7b122292f5c17b9Exit504672932022-11-04 21:27:2994 days 1 hr ago0x8ebba7b3cfa1e1391d44cdbd4c5eb6fe9440eb89 IN  Tetu: xTETU Token0 FTM0.005344576732
0xfe3d3f20f24386758141199a411f775f18425d19428face8dcc4d270cf5d9534Exit504281502022-11-03 15:36:4895 days 7 hrs ago0xe771380c1322c61986ab8944a106923b2ee98cb8 IN  Tetu: xTETU Token0 FTM0.019700581772
0x730513fcb53a6ddf47d68edcf36f95900360890c802a1d5f3828b2a331d4fa23Exit504237622022-11-03 10:56:4595 days 12 hrs ago0xb665700e793cab8b9b018c5d97200280a082bf53 IN  Tetu: xTETU Token0 FTM1.507703500604
[ 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:27444 days 36 mins 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.