Contract 0x48bf8fcd44e2977c8a9a744658431a8e6c0d866c 11

 
Txn Hash Method
Block
From
To
Value
0x589d0d5910c65860fafe806305df6a03efd0cad8109d1608c44a962c217a233eApprove132265202024-04-16 4:39:471 min ago0x46b28db0488222ff0e20b5a09f41fbcf7cf97d6b IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000013204490.025368524
0x6931b846dd3ad1db2c1652cf42d63e227e2577250fabb911a3b56cb0e4f8e978Approve132264852024-04-16 4:38:372 mins ago0x08645f4dc097a7c678d232fe91d96a44dae87303 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000020349280.038992123
0xf972d587cc5a0739f1e2f392d3a2c65141ddc623bf95cff574e671b0991382beApprove132264812024-04-16 4:38:292 mins ago0xdb298662fda87758bfb4fbf72d1db7094a148172 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000013578590.02599305
0xc089c95fd1607f249f66b56f3b8474210b18d768db6290703a0ef30aa0dba4abApprove132264322024-04-16 4:36:513 mins ago0x85e6a873b58e4a6e4a6db7d0c69f93c871028549 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000013328020.025496338
0x72860b18d3b0320f89bf1f11fd95ff256ad550480e19a61953aa38aa56033d0eApprove132264302024-04-16 4:36:474 mins ago0xb5f1fb8fc2772953f64c60820fb693e21a7fde26 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000007706750.025506969
0x3f6a0a3927162cc0f07655aa9656c4d2b09876daf1ed0643dedef1a14eb3b526Approve132263552024-04-16 4:34:176 mins ago0x2b354ecd9e547321051f39554aea0c673c10bbbb IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000013518270.025794035
0x5b2cea56e5c1d27e2604c087e02547ff219a6140dcf5587d5b40d8a10f62f000Approve132263152024-04-16 4:32:577 mins ago0xe9d58f2470d2c0684231de355403c5cc6c2f2de6 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009429450.02678743
0xa9c1d81f7029f237205f30cf15f65cd0f2cf6b858e95d7e915cf66b4765b8839Approve132263082024-04-16 4:32:438 mins ago0xa4c12d7de82c39c6da48a8435d41375ff8b311d6 IN  Seamless Protocol: WETH sWETH Token0 ETH0.000001384170.026474862
0x018c6fb41eb4a979a81625a5002037873104545ece2b10b0fa1a5407c73b7cbcApprove132262882024-04-16 4:32:038 mins ago0xf18007b6db5224e5d9341ab4c1e10af6b49052c0 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009355360.026623652
0xea77499387af4cfecf46bf3f6beab31a6c3b1bee864dc80895e6661d27fddc4cApprove132261772024-04-16 4:28:2112 mins ago0xbfb4db20b966db4cfc2187b33c6ba9de53a49e78 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009500810.027091618
0xc46d5872842b1db8848ae603382fb8018f91795e8d49517be5be8721d99e0f83Approve132261682024-04-16 4:28:0312 mins ago0x66e238465a58a62174539a02f7e49309e8d545e5 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000014084290.026755125
0x78e7d98f5061eaa1fb6382ca06638647f26ec06d8702d4e2a19939d87ea32c2dApprove132261652024-04-16 4:27:5712 mins ago0x604a4ada9f6e3a4d77051741693f4c28d1318e2a IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000300330541.025971783
0xe9076734ab0fe76d03455e58729b9b547cb08c61b72df2c40ead80de2995efa8Approve132261002024-04-16 4:25:4715 mins ago0xc2a4922925d6ffd1bfac096a3ee7b0f359a73cc9 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009273850.026365312
0x26e0d1cf35cc90d605c7160280c870e4ef11396c7830283b69d013ada608e502Approve132260452024-04-16 4:23:5716 mins ago0xc2a4922925d6ffd1bfac096a3ee7b0f359a73cc9 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009450230.026688659
0x6f0885ea8d0c8bdf9564348def21d17b035a89347b4c83374970c75820b46e32Approve132258852024-04-16 4:18:3722 mins ago0xe9d58f2470d2c0684231de355403c5cc6c2f2de6 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009459590.026912729
0xfa6b1be1a15f76f526ede2712cb62737e0aa304c8ff5cfd2d0f22670a55310c8Approve132258652024-04-16 4:17:5722 mins ago0x1de676f1b0b0205ab97e8c2c4c77674323c70c7b IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000014245390.02726527
0x4b022e515975950d07ec5c66ae327429c7caae5ad5e91e4e83ebf166f9369383Approve132257202024-04-16 4:13:0727 mins ago0x56abdda35ba31133e5519383df701c565030682a IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000009263430.026559257
0x6683341f814a7e81db5fdc96c7b21fb45dac8463fb09baf4c93587c33ebacef2Approve132256972024-04-16 4:12:2128 mins ago0x00a16b658d3776ec4d950d6a0d6cf44428d71a6a IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000013401030.025535023
0x8a83ddea13aac99c7d08d2bbf748927fd161728c037d2f0c8483921e60927551Approve132256752024-04-16 4:11:3729 mins ago0x166065c30eafe7dd5de59f03ebbd9483bf04a7c1 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000012609530.024002709
0x98f4fc4512be83a5b4487c51dae3d43dab2476e1663113593a10bcf480855e6bApprove132256732024-04-16 4:11:3329 mins ago0x444c0aa0d30b9cc3861022a5d9d8183147afd447 IN  Seamless Protocol: WETH sWETH Token0 ETH0.000000865390.024672318
0xb29767f5430f2f89a971f6962cc095038c30a144cdffc65b53e2cd328a14bb94Approve132256702024-04-16 4:11:2729 mins ago0x56abdda35ba31133e5519383df701c565030682a IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000012616940.024155618
0xe9ef8350fcf291b8c4e34a63d472e8a2b4ba79fab1939642cc2e447ffe2d77d8Approve132256072024-04-16 4:09:2131 mins ago0xbfb4db20b966db4cfc2187b33c6ba9de53a49e78 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000008344940.023790511
0x046b168578fb2c1f33268732c88ad80af4bc1dff50ab63d10e4890bdf860b08dApprove132255692024-04-16 4:08:0532 mins ago0x444c0aa0d30b9cc3861022a5d9d8183147afd447 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000012133470.023228703
0xd8491a34c870d02c13ae64ecaec7b8f8fb1763f5e69171c769739c1cf34ebb4bApprove132254782024-04-16 4:05:0335 mins ago0xc2a4922925d6ffd1bfac096a3ee7b0f359a73cc9 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000012359210.023682011
0xc1cb9ccda1808602a588ba2e8d476d7af26de115e9df6e631449465c3ef68d1aApprove132254652024-04-16 4:04:3736 mins ago0x4581c169ac4632938fc850a2d056abc93a755262 IN  Seamless Protocol: WETH sWETH Token0 ETH0.0000012244590.023464817
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xcef54385e7487729c5b2f00cae8b7592465772421f164c5eef7e3c7df732b95e33186722023-08-30 20:18:11229 days 8 hrs ago Seamless Protocol: Pool Configurator Proxy Base  Contract Creation0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
InitializableImmutableAdminUpgradeabilityProxy

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 100000 runs

Other Settings:
berlin EvmVersion
File 1 of 6 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)

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);
      }
    }
  }
}

File 2 of 6 : BaseUpgradeabilityProxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

import './Proxy.sol';
import '../contracts/Address.sol';

/**
 * @title BaseUpgradeabilityProxy
 * @dev This contract implements a proxy that allows to change the
 * implementation address to which it will delegate.
 * Such a change is called an implementation upgrade.
 */
contract BaseUpgradeabilityProxy is Proxy {
  /**
   * @dev Emitted when the implementation is upgraded.
   * @param implementation Address of the new implementation.
   */
  event Upgraded(address indexed implementation);

  /**
   * @dev Storage slot with the address of the current implementation.
   * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
   * validated in the constructor.
   */
  bytes32 internal constant IMPLEMENTATION_SLOT =
    0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

  /**
   * @dev Returns the current implementation.
   * @return impl Address of the current implementation
   */
  function _implementation() internal view override returns (address impl) {
    bytes32 slot = IMPLEMENTATION_SLOT;
    //solium-disable-next-line
    assembly {
      impl := sload(slot)
    }
  }

  /**
   * @dev Upgrades the proxy to a new implementation.
   * @param newImplementation Address of the new implementation.
   */
  function _upgradeTo(address newImplementation) internal {
    _setImplementation(newImplementation);
    emit Upgraded(newImplementation);
  }

  /**
   * @dev Sets the implementation address of the proxy.
   * @param newImplementation Address of the new implementation.
   */
  function _setImplementation(address newImplementation) internal {
    require(
      Address.isContract(newImplementation),
      'Cannot set a proxy implementation to a non-contract address'
    );

    bytes32 slot = IMPLEMENTATION_SLOT;

    //solium-disable-next-line
    assembly {
      sstore(slot, newImplementation)
    }
  }
}

File 3 of 6 : InitializableUpgradeabilityProxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

import './BaseUpgradeabilityProxy.sol';

/**
 * @title InitializableUpgradeabilityProxy
 * @dev Extends BaseUpgradeabilityProxy with an initializer for initializing
 * implementation and init data.
 */
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
  /**
   * @dev Contract initializer.
   * @param _logic Address of the initial implementation.
   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
   */
  function initialize(address _logic, bytes memory _data) public payable {
    require(_implementation() == address(0));
    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
    _setImplementation(_logic);
    if (_data.length > 0) {
      (bool success, ) = _logic.delegatecall(_data);
      require(success);
    }
  }
}

File 4 of 6 : Proxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

/**
 * @title Proxy
 * @dev Implements delegation of calls to other contracts, with proper
 * forwarding of return values and bubbling of failures.
 * It defines a fallback function that delegates all calls to the address
 * returned by the abstract _implementation() internal function.
 */
abstract contract Proxy {
  /**
   * @dev Fallback function.
   * Will run if no other function in the contract matches the call data.
   * Implemented entirely in `_fallback`.
   */
  fallback() external payable {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() internal view virtual returns (address);

  /**
   * @dev Delegates execution to an implementation contract.
   * This is a low level function that doesn't return to its internal call site.
   * It will return to the external caller whatever the implementation returns.
   * @param implementation Address to delegate.
   */
  function _delegate(address implementation) internal {
    //solium-disable-next-line
    assembly {
      // Copy msg.data. We take full control of memory in this inline assembly
      // block because it will not return to Solidity code. We overwrite the
      // Solidity scratch pad at memory position 0.
      calldatacopy(0, 0, calldatasize())

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

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

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

  /**
   * @dev Function that is run as the first thing in the fallback function.
   * Can be redefined in derived contracts to add functionality.
   * Redefinitions must call super._willFallback().
   */
  function _willFallback() internal virtual {}

  /**
   * @dev fallback implementation.
   * Extracted to enable manual triggering.
   */
  function _fallback() internal {
    _willFallback();
    _delegate(_implementation());
  }
}

File 5 of 6 : BaseImmutableAdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

import {BaseUpgradeabilityProxy} from '../../../dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol';

/**
 * @title BaseImmutableAdminUpgradeabilityProxy
 * @author Aave, inspired by the OpenZeppelin upgradeability proxy pattern
 * @notice This contract combines an upgradeability proxy with an authorization
 * mechanism for administrative tasks.
 * @dev The admin role is stored in an immutable, which helps saving transactions costs
 * All external functions in this contract must be guarded by the
 * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
 * feature proposal that would enable this to be done automatically.
 */
contract BaseImmutableAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
  address internal immutable _admin;

  /**
   * @dev Constructor.
   * @param admin The address of the admin
   */
  constructor(address admin) {
    _admin = admin;
  }

  modifier ifAdmin() {
    if (msg.sender == _admin) {
      _;
    } else {
      _fallback();
    }
  }

  /**
   * @notice Return the admin address
   * @return The address of the proxy admin.
   */
  function admin() external ifAdmin returns (address) {
    return _admin;
  }

  /**
   * @notice Return the implementation address
   * @return The address of the implementation.
   */
  function implementation() external ifAdmin returns (address) {
    return _implementation();
  }

  /**
   * @notice Upgrade the backing implementation of the proxy.
   * @dev Only the admin can call this function.
   * @param newImplementation The address of the new implementation.
   */
  function upgradeTo(address newImplementation) external ifAdmin {
    _upgradeTo(newImplementation);
  }

  /**
   * @notice Upgrade the backing implementation of the proxy and call a function
   * on the new implementation.
   * @dev This is useful to initialize the proxied contract.
   * @param newImplementation The address of the new implementation.
   * @param data Data to send as msg.data in the low level call.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   */
  function upgradeToAndCall(
    address newImplementation,
    bytes calldata data
  ) external payable ifAdmin {
    _upgradeTo(newImplementation);
    (bool success, ) = newImplementation.delegatecall(data);
    require(success);
  }

  /**
   * @notice Only fall back when the sender is not the admin.
   */
  function _willFallback() internal virtual override {
    require(msg.sender != _admin, 'Cannot call fallback function from the proxy admin');
    super._willFallback();
  }
}

File 6 of 6 : InitializableImmutableAdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

import {InitializableUpgradeabilityProxy} from '../../../dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol';
import {Proxy} from '../../../dependencies/openzeppelin/upgradeability/Proxy.sol';
import {BaseImmutableAdminUpgradeabilityProxy} from './BaseImmutableAdminUpgradeabilityProxy.sol';

/**
 * @title InitializableAdminUpgradeabilityProxy
 * @author Aave
 * @dev Extends BaseAdminUpgradeabilityProxy with an initializer function
 */
contract InitializableImmutableAdminUpgradeabilityProxy is
  BaseImmutableAdminUpgradeabilityProxy,
  InitializableUpgradeabilityProxy
{
  /**
   * @dev Constructor.
   * @param admin The address of the admin
   */
  constructor(address admin) BaseImmutableAdminUpgradeabilityProxy(admin) {
    // Intentionally left blank
  }

  /// @inheritdoc BaseImmutableAdminUpgradeabilityProxy
  function _willFallback() internal override(BaseImmutableAdminUpgradeabilityProxy, Proxy) {
    BaseImmutableAdminUpgradeabilityProxy._willFallback();
  }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"admin","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":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","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"}]

60a060405234801561001057600080fd5b506040516109cb3803806109cb83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161091d6100ae6000396000818161014f015281816101a101528181610274015281816104110152818161043a01526105a4015261091d6000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b14610097578063d1f57894146100d5578063f851a440146100e85761005a565b80633659cfe6146100645780634f1ef28614610084575b6100626100fd565b005b34801561007057600080fd5b5061006261007f36600461067b565b610137565b61006261009236600461069d565b610189565b3480156100a357600080fd5b506100ac61025a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100626100e336600461074f565b6102cb565b3480156100f457600080fd5b506100ac6103f7565b61010561045c565b6101356101307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b610464565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101815761017e81610488565b50565b61017e6100fd565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561024d576101d083610488565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516101f992919061082f565b600060405180830381855af49150503d8060008114610234576040519150601f19603f3d011682016040523d82523d6000602084013e610239565b606091505b505090508061024757600080fd5b50505050565b6102556100fd565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156102c057507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6102c86100fd565b90565b60006102f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b73ffffffffffffffffffffffffffffffffffffffff161461031557600080fd5b61034060017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61083f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461036e5761036e61087d565b610377826104d5565b8051156103f35760008273ffffffffffffffffffffffffffffffffffffffff16826040516103a591906108ac565b600060405180830381855af49150503d80600081146103e0576040519150601f19603f3d011682016040523d82523d6000602084013e6103e5565b606091505b505090508061025557600080fd5b5050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156102c057507f000000000000000000000000000000000000000000000000000000000000000090565b61013561058c565b3660008037600080366000845af43d6000803e808015610483573d6000f35b3d6000fd5b610491816104d5565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b803b610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e0000000000000000000000000000606482015260840161055f565b803573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b919050565b60006020828403121561068d57600080fd5b61069682610652565b9392505050565b6000806000604084860312156106b257600080fd5b6106bb84610652565b9250602084013567ffffffffffffffff808211156106d857600080fd5b818601915086601f8301126106ec57600080fd5b8135818111156106fb57600080fd5b87602082850101111561070d57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561076257600080fd5b61076b83610652565b9150602083013567ffffffffffffffff8082111561078857600080fd5b818501915085601f83011261079c57600080fd5b8135818111156107ae576107ae610720565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156107f4576107f4610720565b8160405282815288602084870101111561080d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8183823760009101908152919050565b600082821015610878577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b818110156108cd57602081860181015185830152016108b3565b818111156108dc576000828501525b50919091019291505056fea264697066735822122092672e324a241ad9b159314f7c06d612bdab41f9c2ed84477cd653bf5dd8895f64736f6c634300080a00330000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a0

Deployed Bytecode

0x60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b14610097578063d1f57894146100d5578063f851a440146100e85761005a565b80633659cfe6146100645780634f1ef28614610084575b6100626100fd565b005b34801561007057600080fd5b5061006261007f36600461067b565b610137565b61006261009236600461069d565b610189565b3480156100a357600080fd5b506100ac61025a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100626100e336600461074f565b6102cb565b3480156100f457600080fd5b506100ac6103f7565b61010561045c565b6101356101307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b610464565b565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a01614156101815761017e81610488565b50565b61017e6100fd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a016141561024d576101d083610488565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516101f992919061082f565b600060405180830381855af49150503d8060008114610234576040519150601f19603f3d011682016040523d82523d6000602084013e610239565b606091505b505090508061024757600080fd5b50505050565b6102556100fd565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a01614156102c057507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6102c86100fd565b90565b60006102f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b73ffffffffffffffffffffffffffffffffffffffff161461031557600080fd5b61034060017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61083f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461036e5761036e61087d565b610377826104d5565b8051156103f35760008273ffffffffffffffffffffffffffffffffffffffff16826040516103a591906108ac565b600060405180830381855af49150503d80600081146103e0576040519150601f19603f3d011682016040523d82523d6000602084013e6103e5565b606091505b505090508061025557600080fd5b5050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a01614156102c057507f0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a090565b61013561058c565b3660008037600080366000845af43d6000803e808015610483573d6000f35b3d6000fd5b610491816104d5565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b803b610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a0161415610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e0000000000000000000000000000606482015260840161055f565b803573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b919050565b60006020828403121561068d57600080fd5b61069682610652565b9392505050565b6000806000604084860312156106b257600080fd5b6106bb84610652565b9250602084013567ffffffffffffffff808211156106d857600080fd5b818601915086601f8301126106ec57600080fd5b8135818111156106fb57600080fd5b87602082850101111561070d57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561076257600080fd5b61076b83610652565b9150602083013567ffffffffffffffff8082111561078857600080fd5b818501915085601f83011261079c57600080fd5b8135818111156107ae576107ae610720565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156107f4576107f4610720565b8160405282815288602084870101111561080d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8183823760009101908152919050565b600082821015610878577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b818110156108cd57602081860181015185830152016108b3565b818111156108dc576000828501525b50919091019291505056fea264697066735822122092672e324a241ad9b159314f7c06d612bdab41f9c2ed84477cd653bf5dd8895f64736f6c634300080a0033

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

0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a0

-----Decoded View---------------
Arg [0] : admin (address): 0x7B08A77539A50218c8fB4B706B87fb799d3505A0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007b08a77539a50218c8fb4b706b87fb799d3505a0


Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.