ETH Price: $2,847.12 (-3.12%)

Contract

0x12AF3Ec993EC5d5bD789b3e989c9E95A2F6c586D

Overview

ETH Balance

Linea Mainnet LogoLinea Mainnet LogoLinea Mainnet Logo0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Set Token Swap F...90051082024-09-04 4:47:05508 days ago1725425225IN
SyncSwap: Fee Manager
0 ETH0.000002020.06299999
Set Token Swap F...90051012024-09-04 4:46:51508 days ago1725425211IN
SyncSwap: Fee Manager
0 ETH0.000002020.06299999
Set Token Swap F...89808922024-09-03 15:17:14509 days ago1725376634IN
SyncSwap: Fee Manager
0 ETH0.000002020.06299999
Set Token Swap F...89808642024-09-03 15:16:18509 days ago1725376578IN
SyncSwap: Fee Manager
0 ETH0.000002020.06299999
Set Token Swap F...88847672024-09-01 9:36:23511 days ago1725183383IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88847612024-09-01 9:36:11511 days ago1725183371IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88846942024-09-01 9:33:57511 days ago1725183237IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88846872024-09-01 9:33:43511 days ago1725183223IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88846592024-09-01 9:32:47511 days ago1725183167IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88846552024-09-01 9:32:39511 days ago1725183159IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88844022024-09-01 9:24:13511 days ago1725182653IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...88843972024-09-01 9:24:03511 days ago1725182643IN
SyncSwap: Fee Manager
0 ETH0.000001980.062
Set Token Swap F...69919142024-07-19 11:04:28555 days ago1721387068IN
SyncSwap: Fee Manager
0 ETH0.000001920.06
Set Token Swap F...69918842024-07-19 11:03:28555 days ago1721387008IN
SyncSwap: Fee Manager
0 ETH0.000001920.06
Set Token Swap F...51303222024-06-03 18:32:05601 days ago1717439525IN
SyncSwap: Fee Manager
0 ETH0.000002680.08381908
Set Token Swap F...51303162024-06-03 18:31:47601 days ago1717439507IN
SyncSwap: Fee Manager
0 ETH0.000002680.08383681
Set Token Swap F...51040872024-06-02 20:40:10602 days ago1717360810IN
SyncSwap: Fee Manager
0 ETH0.00000360.0733815
Set Token Swap F...51040802024-06-02 20:39:49602 days ago1717360789IN
SyncSwap: Fee Manager
0 ETH0.00000360.07339805
Set Pool Protoco...50170602024-05-30 18:50:45605 days ago1717095045IN
SyncSwap: Fee Manager
0 ETH0.000004670.09709368
Set Token Swap F...50170402024-05-30 18:49:45605 days ago1717094985IN
SyncSwap: Fee Manager
0 ETH0.000004770.09716531
Set Token Swap F...50170282024-05-30 18:49:09605 days ago1717094949IN
SyncSwap: Fee Manager
0 ETH0.000004780.09725636
Set Pool Protoco...49642132024-05-28 22:47:58607 days ago1716936478IN
SyncSwap: Fee Manager
0 ETH0.000002210.07139704
Set Pool Protoco...49642012024-05-28 22:47:22607 days ago1716936442IN
SyncSwap: Fee Manager
0 ETH0.000002210.07147287
Set Pool Protoco...49641962024-05-28 22:47:07607 days ago1716936427IN
SyncSwap: Fee Manager
0 ETH0.000002210.0714989
Set Pool Protoco...49641922024-05-28 22:46:55607 days ago1716936415IN
SyncSwap: Fee Manager
0 ETH0.000002220.07152542
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
95604242024-09-17 1:27:57496 days ago1726536477
SyncSwap: Fee Manager
0 ETH
95604172024-09-17 1:27:43496 days ago1726536463
SyncSwap: Fee Manager
0 ETH
95604152024-09-17 1:27:39496 days ago1726536459
SyncSwap: Fee Manager
0 ETH
95603932024-09-17 1:26:55496 days ago1726536415
SyncSwap: Fee Manager
0 ETH
95603752024-09-17 1:26:19496 days ago1726536379
SyncSwap: Fee Manager
0 ETH
95603752024-09-17 1:26:19496 days ago1726536379
SyncSwap: Fee Manager
0 ETH
95603502024-09-17 1:25:29496 days ago1726536329
SyncSwap: Fee Manager
0 ETH
95603492024-09-17 1:25:27496 days ago1726536327
SyncSwap: Fee Manager
0 ETH
95603492024-09-17 1:25:27496 days ago1726536327
SyncSwap: Fee Manager
0 ETH
95603492024-09-17 1:25:27496 days ago1726536327
SyncSwap: Fee Manager
0 ETH
95603422024-09-17 1:25:13496 days ago1726536313
SyncSwap: Fee Manager
0 ETH
95603312024-09-17 1:24:51496 days ago1726536291
SyncSwap: Fee Manager
0 ETH
95603222024-09-17 1:24:33496 days ago1726536273
SyncSwap: Fee Manager
0 ETH
95603172024-09-17 1:24:23496 days ago1726536263
SyncSwap: Fee Manager
0 ETH
95603172024-09-17 1:24:23496 days ago1726536263
SyncSwap: Fee Manager
0 ETH
95603172024-09-17 1:24:23496 days ago1726536263
SyncSwap: Fee Manager
0 ETH
95603172024-09-17 1:24:23496 days ago1726536263
SyncSwap: Fee Manager
0 ETH
95603152024-09-17 1:24:19496 days ago1726536259
SyncSwap: Fee Manager
0 ETH
95602592024-09-17 1:22:27496 days ago1726536147
SyncSwap: Fee Manager
0 ETH
95602502024-09-17 1:22:09496 days ago1726536129
SyncSwap: Fee Manager
0 ETH
95602442024-09-17 1:21:57496 days ago1726536117
SyncSwap: Fee Manager
0 ETH
95602342024-09-17 1:21:37496 days ago1726536097
SyncSwap: Fee Manager
0 ETH
95602282024-09-17 1:21:25496 days ago1726536085
SyncSwap: Fee Manager
0 ETH
95602282024-09-17 1:21:25496 days ago1726536085
SyncSwap: Fee Manager
0 ETH
95602282024-09-17 1:21:25496 days ago1726536085
SyncSwap: Fee Manager
0 ETH
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SyncSwapFeeManager

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import "../interfaces/pool/IPool.sol";
import "../interfaces/master/IFeeManager.sol";

import "../libraries/Ownable.sol";

/// @notice The fee manager manages swap fees for pools and protocol fee.
/// The contract is an independent module and can be replaced in the future.
///
contract SyncSwapFeeManager is IFeeManager, Ownable {
    uint24 private constant MAX_PROTOCOL_FEE = 1e5; /// @dev 100%.
    uint24 private constant MAX_SWAP_FEE = 10000; /// @dev 10%.
    uint24 private constant ZERO_CUSTOM_FEE = type(uint24).max;

    /// @dev The default swap fee by pool type.
    mapping(uint16 => uint24) public defaultSwapFee; /// @dev `300` for 0.3%.

    /// @dev The custom swap fee by pool address, use `ZERO_CUSTOM_FEE` for zero fee.
    //mapping(address => uint24) public poolSwapFee;

    /// @dev The custom swap fee by tokens, use `ZERO_CUSTOM_FEE` for zero fee.
    mapping(address => mapping(address => uint24)) public tokenSwapFee;

    /// @dev The protocol fee of swap fee by pool type.
    mapping(uint16 => uint24) public defaultProtocolFee; /// @dev `30000` for 30%.

    /// @dev The custom protocol fee by pool address, use `ZERO_CUSTOM_FEE` for zero fee.
    mapping(address => uint24) public poolProtocolFee;

    /// @dev The recipient of protocol fees.
    address public feeRecipient;

    // Events
    event SetDefaultSwapFee(uint16 indexed poolType, uint24 fee);
    event SetTokenSwapFee(address indexed tokenIn, address indexed tokenOut, uint24 fee);
    event SetDefaultProtocolFee(uint16 indexed poolType, uint24 fee);
    event SetPoolProtocolFee(address indexed pool, uint24 fee);
    event SetFeeRecipient(address indexed previousFeeRecipient, address indexed newFeeRecipient);

    constructor(address _feeRecipient) {
        feeRecipient = _feeRecipient;

        // Prefill fees for known pool types.
        // 1 Classic Pools
        defaultSwapFee[1] = 1000; // 1%.
        defaultProtocolFee[1] = 50000; // 50%.

        // 2 Stable Pools
        defaultSwapFee[2] = 50; // 0.05%.
        defaultProtocolFee[2] = 50000; // 50%.
    }

    // Getters

    function getSwapFee(
        address pool,
        address /*sender*/,
        address tokenIn,
        address tokenOut,
        bytes calldata /*data*/
    ) external view override returns (uint24 fee) {
        fee = tokenSwapFee[tokenIn][tokenOut];

        if (fee == 0) {
            // not set, use default fee of the pool type.
            fee = defaultSwapFee[IPool(pool).poolType()];
        } else {
            // has a pool swap fee.
            fee = (fee == ZERO_CUSTOM_FEE ? 0 : fee);
        }
    }

    function getProtocolFee(address pool) external view override returns (uint24 fee) {
        fee = poolProtocolFee[pool];

        if (fee == 0) {
            // not set, use default fee of the pool type.
            fee = defaultProtocolFee[IPool(pool).poolType()];
        } else {
            // has a pool protocol fee.
            fee = (fee == ZERO_CUSTOM_FEE ? 0 : fee);
        }
    }

    function getFeeRecipient() external view override returns (address) {
        return feeRecipient;
    }

    // Setters

    function setDefaultSwapFee(uint16 poolType, uint24 fee) external onlyOwner {
        require(
            fee <= MAX_SWAP_FEE,
            "Invalid fee"
        );
        defaultSwapFee[poolType] = fee;
        emit SetDefaultSwapFee(poolType, fee);
    }

    function setTokenSwapFee(address tokenIn, address tokenOut, uint24 fee) external onlyOwner {
        require(
            fee == ZERO_CUSTOM_FEE ||
            fee <= MAX_SWAP_FEE,
            "Invalid fee"
        );
        tokenSwapFee[tokenIn][tokenOut] = fee;
        emit SetTokenSwapFee(tokenIn, tokenOut, fee);
    }

    function setDefaultProtocolFee(uint16 poolType, uint24 fee) external onlyOwner {
        require(
            fee <= MAX_PROTOCOL_FEE,
            "Invalid fee"
        );
        defaultProtocolFee[poolType] = fee;
        emit SetDefaultProtocolFee(poolType, fee);
    }

    function setPoolProtocolFee(address pool, uint24 fee) external onlyOwner {
        require(
            fee == ZERO_CUSTOM_FEE ||
            fee <= MAX_PROTOCOL_FEE,
            "Invalid fee"
        );
        poolProtocolFee[pool] = fee;
        emit SetPoolProtocolFee(pool, fee);
    }

    function setFeeRecipient(address _feeRecipient) external onlyOwner {
        // Emit here to avoid caching the previous recipient.
        emit SetFeeRecipient(feeRecipient, _feeRecipient);
        feeRecipient = _feeRecipient;
    }
}

// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

/// @notice The manager contract to control fees.
/// Management functions are omitted.
interface IFeeManager {
    function getSwapFee(
        address pool,
        address sender,
        address tokenIn,
        address tokenOut,
        bytes calldata data) external view returns (uint24);
    function getProtocolFee(address pool) external view returns (uint24);
    function getFeeRecipient() external view returns (address);
}

// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

interface IPool {
    struct TokenAmount {
        address token;
        uint amount;
    }

    /// @dev Returns the address of pool master.
    function master() external view returns (address);

    /// @dev Returns the vault.
    function vault() external view returns (address);

    /// @dev Returns the pool type.
    function poolType() external view returns (uint16);

    /// @dev Returns the assets of the pool.
    function getAssets() external view returns (address[] memory assets);

    /// @dev Returns the swap fee of the pool.
    function getSwapFee(address sender, address tokenIn, address tokenOut, bytes calldata data) external view returns (uint24 swapFee);

    /// @dev Returns the protocol fee of the pool.
    function getProtocolFee() external view returns (uint24 protocolFee);

    /// @dev Mints liquidity.
    function mint(
        bytes calldata data,
        address sender,
        address callback,
        bytes calldata callbackData
    ) external returns (uint liquidity);

    /// @dev Burns liquidity.
    function burn(
        bytes calldata data,
        address sender,
        address callback,
        bytes calldata callbackData
    ) external returns (TokenAmount[] memory tokenAmounts);

    /// @dev Burns liquidity with single output token.
    function burnSingle(
        bytes calldata data,
        address sender,
        address callback,
        bytes calldata callbackData
    ) external returns (TokenAmount memory tokenAmount);

    /// @dev Swaps between tokens.
    function swap(
        bytes calldata data,
        address sender,
        address callback,
        bytes calldata callbackData
    ) external returns (TokenAmount memory tokenAmount);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(msg.sender);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200,
    "details": {
      "yul": false
    }
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"poolType","type":"uint16"},{"indexed":false,"internalType":"uint24","name":"fee","type":"uint24"}],"name":"SetDefaultProtocolFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"poolType","type":"uint16"},{"indexed":false,"internalType":"uint24","name":"fee","type":"uint24"}],"name":"SetDefaultSwapFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousFeeRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"newFeeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint24","name":"fee","type":"uint24"}],"name":"SetPoolProtocolFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint24","name":"fee","type":"uint24"}],"name":"SetTokenSwapFee","type":"event"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"defaultProtocolFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"defaultSwapFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getProtocolFee","outputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"getSwapFee","outputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolProtocolFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"poolType","type":"uint16"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"setDefaultProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"poolType","type":"uint16"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"setDefaultSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"setPoolProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"setTokenSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"tokenSwapFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610d82380380610d8283398101604081905261002f916101a0565b6100383361011b565b600580546001600160a01b039092166001600160a01b03199092169190911790557fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805462ffffff199081166103e8179091557fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c8054821661c35090811790915560026000527fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f80548316603217905560036020527fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d80549092161790556101c9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6101878161016b565b811461019257600080fd5b50565b80516101788161017e565b6000602082840312156101b5576101b5600080fd5b60006101c18484610195565b949350505050565b610baa806101d86000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806353561915116100975780638da5cb5b116100665780638da5cb5b14610242578063d4de871c14610253578063e74b981b14610278578063f2fde38b1461028b57600080fd5b80635356191514610201578063546a3c9e146102145780635f137b3f14610227578063715018a61461023a57600080fd5b80634190a660116100d35780634190a660146101a85780634625a94d146101bd57806346904840146101d05780634ccb20c0146101f057600080fd5b80630a992e0c1461010557806313809b831461012e5780632fa5752014610153578063389feeab14610178575b600080fd5b610118610113366004610816565b61029e565b604051610125919061084c565b60405180910390f35b61011861013c366004610816565b60046020526000908152604090205462ffffff1681565b61011861016136600461086f565b60016020526000908152604090205462ffffff1681565b610118610186366004610890565b600260209081526000928352604080842090915290825290205462ffffff1681565b6101bb6101b63660046108e3565b610365565b005b6101186101cb366004610968565b6103fe565b6005546101e3906001600160a01b031681565b6040516101259190610a07565b6005546001600160a01b03166101e3565b6101bb61020f366004610a15565b6104dc565b6101bb610222366004610a37565b610574565b6101bb6102353660046108e3565b610628565b6101bb6106ab565b6000546001600160a01b03166101e3565b61011861026136600461086f565b60036020526000908152604090205462ffffff1681565b6101bb610286366004610816565b6106bf565b6101bb610299366004610816565b610723565b6001600160a01b03811660009081526004602052604081205462ffffff169081900361034a5760036000836001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190610a92565b61ffff16815260208101919091526040016000205462ffffff1692915050565b62ffffff8181161461035c578061035f565b60005b92915050565b61036d61075d565b620186a062ffffff8216111561039e5760405162461bcd60e51b815260040161039590610ad8565b60405180910390fd5b61ffff821660008181526003602052604090819020805462ffffff191662ffffff8516179055517f61872494e8d71fce11c9bbe3dccd1397924c2286652fd1df919466e097a91c29906103f290849061084c565b60405180910390a25050565b6001600160a01b03808516600090815260026020908152604080832093871683529290529081205462ffffff16908190036104ba5760016000886001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104999190610a92565b61ffff16815260208101919091526040016000205462ffffff1690506104d2565b62ffffff818116146104cc57806104cf565b60005b90505b9695505050505050565b6104e461075d565b62ffffff81811614806104ff5750620186a062ffffff821611155b61051b5760405162461bcd60e51b815260040161039590610ad8565b6001600160a01b03821660008181526004602052604090819020805462ffffff191662ffffff8516179055517fbe5efbf26461d15e902f8139b0c620e154419b084f850bfd44a5f47de8b4e936906103f290849061084c565b61057c61075d565b62ffffff8181161480610596575061271062ffffff821611155b6105b25760405162461bcd60e51b815260040161039590610ad8565b6001600160a01b0383811660008181526002602090815260408083209487168084529490915290819020805462ffffff191662ffffff8616179055517faea7118d3afc16a09b2f7431f1541737392de863febea6ad2a5688da86fb91f09061061b90859061084c565b60405180910390a3505050565b61063061075d565b61271062ffffff821611156106575760405162461bcd60e51b815260040161039590610ad8565b61ffff821660008181526001602052604090819020805462ffffff191662ffffff8516179055517f3720b8426e46454f51262d464ce706a163ff74ddb8fe1cc7793e246be2cfdd97906103f290849061084c565b6106b361075d565b6106bd6000610796565b565b6106c761075d565b6005546040516001600160a01b038084169216907fd9d6b85b6d670cd443496fc6d03390f739bbff47f96a8e33fb0cdd52ad26f5c290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b61072b61075d565b6001600160a01b0381166107515760405162461bcd60e51b815260040161039590610ae8565b61075a81610796565b50565b336107706000546001600160a01b031690565b6001600160a01b0316146106bd5760405162461bcd60e51b815260040161039590610b64565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b03821661035f565b610800816107e6565b811461075a57600080fd5b803561035f816107f7565b60006020828403121561082b5761082b600080fd5b6000610837848461080b565b949350505050565b62ffffff81165b82525050565b6020810161035f828461083f565b61ffff8116610800565b803561035f8161085a565b60006020828403121561088457610884600080fd5b60006108378484610864565b600080604083850312156108a6576108a6600080fd5b60006108b2858561080b565b92505060206108c38582860161080b565b9150509250929050565b62ffffff8116610800565b803561035f816108cd565b600080604083850312156108f9576108f9600080fd5b60006109058585610864565b92505060206108c3858286016108d8565b60008083601f84011261092b5761092b600080fd5b50813567ffffffffffffffff81111561094657610946600080fd5b60208301915083600182028301111561096157610961600080fd5b9250929050565b60008060008060008060a0878903121561098457610984600080fd5b6000610990898961080b565b96505060206109a189828a0161080b565b95505060406109b289828a0161080b565b94505060606109c389828a0161080b565b935050608087013567ffffffffffffffff8111156109e3576109e3600080fd5b6109ef89828a01610916565b92509250509295509295509295565b610846816107e6565b6020810161035f82846109fe565b60008060408385031215610a2b57610a2b600080fd5b6000610905858561080b565b600080600060608486031215610a4f57610a4f600080fd5b6000610a5b868661080b565b9350506020610a6c8682870161080b565b9250506040610a7d868287016108d8565b9150509250925092565b805161035f8161085a565b600060208284031215610aa757610aa7600080fd5b60006108378484610a87565b600b81526000602082016a496e76616c69642066656560a81b815291505b5060200190565b6020808252810161035f81610ab3565b6020808252810161035f81602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610ad1565b6020808252810161035f81610b3256fea26469706673582212204dfa76eed177d716368dce4f9889aedb52e399635145a171bb445d14b732c80864736f6c634300080f0033000000000000000000000000a2a09f15c2ec6af1b8f9413c148334b231410bd8

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806353561915116100975780638da5cb5b116100665780638da5cb5b14610242578063d4de871c14610253578063e74b981b14610278578063f2fde38b1461028b57600080fd5b80635356191514610201578063546a3c9e146102145780635f137b3f14610227578063715018a61461023a57600080fd5b80634190a660116100d35780634190a660146101a85780634625a94d146101bd57806346904840146101d05780634ccb20c0146101f057600080fd5b80630a992e0c1461010557806313809b831461012e5780632fa5752014610153578063389feeab14610178575b600080fd5b610118610113366004610816565b61029e565b604051610125919061084c565b60405180910390f35b61011861013c366004610816565b60046020526000908152604090205462ffffff1681565b61011861016136600461086f565b60016020526000908152604090205462ffffff1681565b610118610186366004610890565b600260209081526000928352604080842090915290825290205462ffffff1681565b6101bb6101b63660046108e3565b610365565b005b6101186101cb366004610968565b6103fe565b6005546101e3906001600160a01b031681565b6040516101259190610a07565b6005546001600160a01b03166101e3565b6101bb61020f366004610a15565b6104dc565b6101bb610222366004610a37565b610574565b6101bb6102353660046108e3565b610628565b6101bb6106ab565b6000546001600160a01b03166101e3565b61011861026136600461086f565b60036020526000908152604090205462ffffff1681565b6101bb610286366004610816565b6106bf565b6101bb610299366004610816565b610723565b6001600160a01b03811660009081526004602052604081205462ffffff169081900361034a5760036000836001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190610a92565b61ffff16815260208101919091526040016000205462ffffff1692915050565b62ffffff8181161461035c578061035f565b60005b92915050565b61036d61075d565b620186a062ffffff8216111561039e5760405162461bcd60e51b815260040161039590610ad8565b60405180910390fd5b61ffff821660008181526003602052604090819020805462ffffff191662ffffff8516179055517f61872494e8d71fce11c9bbe3dccd1397924c2286652fd1df919466e097a91c29906103f290849061084c565b60405180910390a25050565b6001600160a01b03808516600090815260026020908152604080832093871683529290529081205462ffffff16908190036104ba5760016000886001600160a01b031663b1dd61b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104999190610a92565b61ffff16815260208101919091526040016000205462ffffff1690506104d2565b62ffffff818116146104cc57806104cf565b60005b90505b9695505050505050565b6104e461075d565b62ffffff81811614806104ff5750620186a062ffffff821611155b61051b5760405162461bcd60e51b815260040161039590610ad8565b6001600160a01b03821660008181526004602052604090819020805462ffffff191662ffffff8516179055517fbe5efbf26461d15e902f8139b0c620e154419b084f850bfd44a5f47de8b4e936906103f290849061084c565b61057c61075d565b62ffffff8181161480610596575061271062ffffff821611155b6105b25760405162461bcd60e51b815260040161039590610ad8565b6001600160a01b0383811660008181526002602090815260408083209487168084529490915290819020805462ffffff191662ffffff8616179055517faea7118d3afc16a09b2f7431f1541737392de863febea6ad2a5688da86fb91f09061061b90859061084c565b60405180910390a3505050565b61063061075d565b61271062ffffff821611156106575760405162461bcd60e51b815260040161039590610ad8565b61ffff821660008181526001602052604090819020805462ffffff191662ffffff8516179055517f3720b8426e46454f51262d464ce706a163ff74ddb8fe1cc7793e246be2cfdd97906103f290849061084c565b6106b361075d565b6106bd6000610796565b565b6106c761075d565b6005546040516001600160a01b038084169216907fd9d6b85b6d670cd443496fc6d03390f739bbff47f96a8e33fb0cdd52ad26f5c290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b61072b61075d565b6001600160a01b0381166107515760405162461bcd60e51b815260040161039590610ae8565b61075a81610796565b50565b336107706000546001600160a01b031690565b6001600160a01b0316146106bd5760405162461bcd60e51b815260040161039590610b64565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b03821661035f565b610800816107e6565b811461075a57600080fd5b803561035f816107f7565b60006020828403121561082b5761082b600080fd5b6000610837848461080b565b949350505050565b62ffffff81165b82525050565b6020810161035f828461083f565b61ffff8116610800565b803561035f8161085a565b60006020828403121561088457610884600080fd5b60006108378484610864565b600080604083850312156108a6576108a6600080fd5b60006108b2858561080b565b92505060206108c38582860161080b565b9150509250929050565b62ffffff8116610800565b803561035f816108cd565b600080604083850312156108f9576108f9600080fd5b60006109058585610864565b92505060206108c3858286016108d8565b60008083601f84011261092b5761092b600080fd5b50813567ffffffffffffffff81111561094657610946600080fd5b60208301915083600182028301111561096157610961600080fd5b9250929050565b60008060008060008060a0878903121561098457610984600080fd5b6000610990898961080b565b96505060206109a189828a0161080b565b95505060406109b289828a0161080b565b94505060606109c389828a0161080b565b935050608087013567ffffffffffffffff8111156109e3576109e3600080fd5b6109ef89828a01610916565b92509250509295509295509295565b610846816107e6565b6020810161035f82846109fe565b60008060408385031215610a2b57610a2b600080fd5b6000610905858561080b565b600080600060608486031215610a4f57610a4f600080fd5b6000610a5b868661080b565b9350506020610a6c8682870161080b565b9250506040610a7d868287016108d8565b9150509250925092565b805161035f8161085a565b600060208284031215610aa757610aa7600080fd5b60006108378484610a87565b600b81526000602082016a496e76616c69642066656560a81b815291505b5060200190565b6020808252810161035f81610ab3565b6020808252810161035f81602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610ad1565b6020808252810161035f81610b3256fea26469706673582212204dfa76eed177d716368dce4f9889aedb52e399635145a171bb445d14b732c80864736f6c634300080f0033

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

000000000000000000000000a2a09f15c2ec6af1b8f9413c148334b231410bd8

-----Decoded View---------------
Arg [0] : _feeRecipient (address): 0xa2A09f15c2ec6aF1b8f9413c148334b231410bd8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a2a09f15c2ec6af1b8f9413c148334b231410bd8


Block Transaction Gas Used Reward
view all blocks sequenced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.