ETH Price: $2,632.01 (+1.02%)

Contract

0xd8Ce41FDF0fE96ea4F457d2A22faAF1d128C0954
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Deposit Conf...147173162022-05-05 12:44:39908 days ago1651754679IN
0xd8Ce41FD...d128C0954
0 ETH0.0070057294.15917209
Set Deposit Conf...147173102022-05-05 12:42:58908 days ago1651754578IN
0xd8Ce41FD...d128C0954
0 ETH0.0064709787
Set Deposit Conf...147172922022-05-05 12:38:08908 days ago1651754288IN
0xd8Ce41FD...d128C0954
0 ETH0.00884017118.94910153
Set Deposit Conf...147172902022-05-05 12:36:33908 days ago1651754193IN
0xd8Ce41FD...d128C0954
0 ETH0.00797736107.33945283
Set Deposit Conf...147051222022-05-03 14:19:27910 days ago1651587567IN
0xd8Ce41FD...d128C0954
0 ETH0.002580869
Set Deposit Conf...146276062022-04-21 9:48:27922 days ago1650534507IN
0xd8Ce41FD...d128C0954
0 ETH0.0012412633.19684388
Update Token Cap144253572022-03-20 20:16:50954 days ago1647807410IN
0xd8Ce41FD...d128C0954
0 ETH0.0013220136.31819041
Update Token Cap144189152022-03-19 20:00:31955 days ago1647720031IN
0xd8Ce41FD...d128C0954
0 ETH0.0011980633
Transfer Ownersh...143750912022-03-13 0:04:22962 days ago1647129862IN
0xd8Ce41FD...d128C0954
0 ETH0.001550450
Set Deposit Conf...143750692022-03-13 0:00:08962 days ago1647129608IN
0xd8Ce41FD...d128C0954
0 ETH0.0060388550
Add Supported To...143750682022-03-13 0:00:01962 days ago1647129601IN
0xd8Ce41FD...d128C0954
0 ETH0.010227450
Set Deposit Conf...143750552022-03-12 23:57:53962 days ago1647129473IN
0xd8Ce41FD...d128C0954
0 ETH0.0037201550
Add Supported To...143750542022-03-12 23:57:51962 days ago1647129471IN
0xd8Ce41FD...d128C0954
0 ETH0.010229850
Set Deposit Conf...143750432022-03-12 23:54:51962 days ago1647129291IN
0xd8Ce41FD...d128C0954
0 ETH0.0060316550
Add Supported To...143750422022-03-12 23:54:32962 days ago1647129272IN
0xd8Ce41FD...d128C0954
0 ETH0.010225650
Set Deposit Conf...143750332022-03-12 23:52:04962 days ago1647129124IN
0xd8Ce41FD...d128C0954
0 ETH0.0037159550
Add Supported To...143750322022-03-12 23:51:56962 days ago1647129116IN
0xd8Ce41FD...d128C0954
0 ETH0.01022550
0x60806040143750052022-03-12 23:46:56962 days ago1647128816IN
 Create: TokenManager
0 ETH0.062239750

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenManager

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : TokenManager.sol
// $$$$$$$$\        $$\                                 $$\      $$\
// \__$$  __|       $$ |                                $$$\    $$$ |
//    $$ | $$$$$$\  $$ |  $$\  $$$$$$\  $$$$$$$\        $$$$\  $$$$ | $$$$$$\  $$$$$$$\   $$$$$$\   $$$$$$\   $$$$$$\   $$$$$$\
//    $$ |$$  __$$\ $$ | $$  |$$  __$$\ $$  __$$\       $$\$$\$$ $$ | \____$$\ $$  __$$\  \____$$\ $$  __$$\ $$  __$$\ $$  __$$\
//    $$ |$$ /  $$ |$$$$$$  / $$$$$$$$ |$$ |  $$ |      $$ \$$$  $$ | $$$$$$$ |$$ |  $$ | $$$$$$$ |$$ /  $$ |$$$$$$$$ |$$ |  \__|
//    $$ |$$ |  $$ |$$  _$$<  $$   ____|$$ |  $$ |      $$ |\$  /$$ |$$  __$$ |$$ |  $$ |$$  __$$ |$$ |  $$ |$$   ____|$$ |
//    $$ |\$$$$$$  |$$ | \$$\ \$$$$$$$\ $$ |  $$ |      $$ | \_/ $$ |\$$$$$$$ |$$ |  $$ |\$$$$$$$ |\$$$$$$$ |\$$$$$$$\ $$ |
//    \__| \______/ \__|  \__| \_______|\__|  \__|      \__|     \__| \_______|\__|  \__| \_______| \____$$ | \_______|\__|
//                                                                                                 $$\   $$ |
//                                                                                                 \$$$$$$  |
//                                                                                                  \______/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "../metatx/ERC2771Context.sol";
import "../interfaces/ITokenManager.sol";

contract TokenManager is ITokenManager, ERC2771Context, Ownable, Pausable {
    mapping(address => TokenInfo) public override tokensInfo;

    event FeeChanged(address indexed tokenAddress, uint256 indexed equilibriumFee, uint256 indexed maxFee);

    modifier tokenChecks(address tokenAddress) {
        require(tokenAddress != address(0), "Token address cannot be 0");
        require(tokensInfo[tokenAddress].supportedToken, "Token not supported");

        _;
    }

    /**
     * First key is toChainId and second key is token address being deposited on current chain
     */
    mapping(uint256 => mapping(address => TokenConfig)) public depositConfig;

    /**
     * Store min/max amount of token to transfer based on token address
     */
    mapping(address => TokenConfig) public transferConfig;

    constructor(address trustedForwarder) ERC2771Context(trustedForwarder) Ownable() Pausable() {
        // Empty Constructor
    }

    function getEquilibriumFee(address tokenAddress) public view override returns (uint256) {
        return tokensInfo[tokenAddress].equilibriumFee;
    }

    function getMaxFee(address tokenAddress) public view override returns (uint256) {
        return tokensInfo[tokenAddress].maxFee;
    }

    function changeFee(
        address tokenAddress,
        uint256 _equilibriumFee,
        uint256 _maxFee
    ) external override onlyOwner whenNotPaused {
        require(_equilibriumFee != 0, "Equilibrium Fee cannot be 0");
        require(_maxFee != 0, "Max Fee cannot be 0");
        tokensInfo[tokenAddress].equilibriumFee = _equilibriumFee;
        tokensInfo[tokenAddress].maxFee = _maxFee;
        emit FeeChanged(tokenAddress, tokensInfo[tokenAddress].equilibriumFee, tokensInfo[tokenAddress].maxFee);
    }

    function setTokenTransferOverhead(address tokenAddress, uint256 gasOverhead)
        external
        tokenChecks(tokenAddress)
        onlyOwner
    {
        tokensInfo[tokenAddress].transferOverhead = gasOverhead;
    }

    /**
     * Set DepositConfig for the given combination of toChainId, tokenAddress.
     * This is used while depositing token in Liquidity Pool. Based on the destination chainid
     * min and max deposit amount is checked.
     */
    function setDepositConfig(
        uint256[] memory toChainId,
        address[] memory tokenAddresses,
        TokenConfig[] memory tokenConfig
    ) external onlyOwner {
        require(
            (toChainId.length == tokenAddresses.length) && (tokenAddresses.length == tokenConfig.length),
            " ERR_ARRAY_LENGTH_MISMATCH"
        );
        uint256 length = tokenConfig.length;
        for (uint256 index; index < length; ) {
            depositConfig[toChainId[index]][tokenAddresses[index]].min = tokenConfig[index].min;
            depositConfig[toChainId[index]][tokenAddresses[index]].max = tokenConfig[index].max;
            unchecked {
                ++index;
            }
        }
    }

    function addSupportedToken(
        address tokenAddress,
        uint256 minCapLimit,
        uint256 maxCapLimit,
        uint256 equilibriumFee,
        uint256 maxFee,
        uint256 transferOverhead
    ) external onlyOwner {
        require(tokenAddress != address(0), "Token address cannot be 0");
        require(maxCapLimit > minCapLimit, "maxCapLimit > minCapLimit");
        tokensInfo[tokenAddress].supportedToken = true;
        transferConfig[tokenAddress].min = minCapLimit;
        transferConfig[tokenAddress].max = maxCapLimit;
        tokensInfo[tokenAddress].tokenConfig = transferConfig[tokenAddress];
        tokensInfo[tokenAddress].equilibriumFee = equilibriumFee;
        tokensInfo[tokenAddress].maxFee = maxFee;
        tokensInfo[tokenAddress].transferOverhead = transferOverhead;
    }

    function removeSupportedToken(address tokenAddress) external tokenChecks(tokenAddress) onlyOwner {
        tokensInfo[tokenAddress].supportedToken = false;
    }

    function updateTokenCap(
        address tokenAddress,
        uint256 minCapLimit,
        uint256 maxCapLimit
    ) external tokenChecks(tokenAddress) onlyOwner {
        require(maxCapLimit > minCapLimit, "maxCapLimit > minCapLimit");
        transferConfig[tokenAddress].min = minCapLimit;
        transferConfig[tokenAddress].max = maxCapLimit;
    }

    function getTokensInfo(address tokenAddress) public view override returns (TokenInfo memory) {
        TokenInfo memory tokenInfo = TokenInfo(
            tokensInfo[tokenAddress].transferOverhead,
            tokensInfo[tokenAddress].supportedToken,
            tokensInfo[tokenAddress].equilibriumFee,
            tokensInfo[tokenAddress].maxFee,
            transferConfig[tokenAddress]
        );
        return tokenInfo;
    }

    function getDepositConfig(uint256 toChainId, address tokenAddress)
        public
        view
        override
        returns (TokenConfig memory)
    {
        return depositConfig[toChainId][tokenAddress];
    }

    function getTransferConfig(address tokenAddress) public view override returns (TokenConfig memory) {
        return transferConfig[tokenAddress];
    }

    function _msgSender() internal view virtual override(Context, ERC2771Context) returns (address sender) {
        return ERC2771Context._msgSender();
    }

    function _msgData() internal view virtual override(Context, ERC2771Context) returns (bytes calldata) {
        return ERC2771Context._msgData();
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }
}

File 2 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @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 is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 7 : Pausable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

File 4 of 7 : ERC2771Context.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;

import "@openzeppelin/contracts/utils/Context.sol";

/**
 * @dev Context variant with ERC2771 support.
 */
abstract contract ERC2771Context is Context {
    address internal _trustedForwarder;

    constructor(address trustedForwarder) {
        _trustedForwarder = trustedForwarder;
    }

    function isTrustedForwarder(address forwarder) public view virtual returns (bool) {
        return forwarder == _trustedForwarder;
    }

    function _msgSender() internal view virtual override returns (address sender) {
        if (isTrustedForwarder(msg.sender)) {
            // The assembly code is more direct than the Solidity version using `abi.decode`.
            assembly {
                sender := shr(96, calldataload(sub(calldatasize(), 20)))
            }
        } else {
            return super._msgSender();
        }
    }

    function _msgData() internal view virtual override returns (bytes calldata) {
        if (isTrustedForwarder(msg.sender)) {
            return msg.data[:msg.data.length - 20];
        } else {
            return super._msgData();
        }
    }
}

File 5 of 7 : ITokenManager.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

import "../structures/TokenConfig.sol";

interface ITokenManager {
    function getEquilibriumFee(address tokenAddress) external view returns (uint256);

    function getMaxFee(address tokenAddress) external view returns (uint256);

    function changeFee(
        address tokenAddress,
        uint256 _equilibriumFee,
        uint256 _maxFee
    ) external;

    function tokensInfo(address tokenAddress)
        external
        view
        returns (
            uint256 transferOverhead,
            bool supportedToken,
            uint256 equilibriumFee,
            uint256 maxFee,
            TokenConfig memory config
        );

    function getTokensInfo(address tokenAddress) external view returns (TokenInfo memory);

    function getDepositConfig(uint256 toChainId, address tokenAddress) external view returns (TokenConfig memory);

    function getTransferConfig(address tokenAddress) external view returns (TokenConfig memory);
}

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

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 7 of 7 : TokenConfig.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

struct TokenInfo {
    uint256 transferOverhead;
    bool supportedToken;
    uint256 equilibriumFee; // Percentage fee Represented in basis points
    uint256 maxFee; // Percentage fee Represented in basis points
    TokenConfig tokenConfig;
}

struct TokenConfig {
    uint256 min;
    uint256 max;
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"equilibriumFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxFee","type":"uint256"}],"name":"FeeChanged","type":"event"},{"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"minCapLimit","type":"uint256"},{"internalType":"uint256","name":"maxCapLimit","type":"uint256"},{"internalType":"uint256","name":"equilibriumFee","type":"uint256"},{"internalType":"uint256","name":"maxFee","type":"uint256"},{"internalType":"uint256","name":"transferOverhead","type":"uint256"}],"name":"addSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"_equilibriumFee","type":"uint256"},{"internalType":"uint256","name":"_maxFee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"depositConfig","outputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"toChainId","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getDepositConfig","outputs":[{"components":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"internalType":"struct TokenConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getEquilibriumFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getMaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTokensInfo","outputs":[{"components":[{"internalType":"uint256","name":"transferOverhead","type":"uint256"},{"internalType":"bool","name":"supportedToken","type":"bool"},{"internalType":"uint256","name":"equilibriumFee","type":"uint256"},{"internalType":"uint256","name":"maxFee","type":"uint256"},{"components":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"internalType":"struct TokenConfig","name":"tokenConfig","type":"tuple"}],"internalType":"struct TokenInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTransferConfig","outputs":[{"components":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"internalType":"struct TokenConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"removeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"toChainId","type":"uint256[]"},{"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"components":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"name":"setDepositConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"gasOverhead","type":"uint256"}],"name":"setTokenTransferOverhead","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensInfo","outputs":[{"internalType":"uint256","name":"transferOverhead","type":"uint256"},{"internalType":"bool","name":"supportedToken","type":"bool"},{"internalType":"uint256","name":"equilibriumFee","type":"uint256"},{"internalType":"uint256","name":"maxFee","type":"uint256"},{"components":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"internalType":"struct TokenConfig","name":"tokenConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferConfig","outputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"minCapLimit","type":"uint256"},{"internalType":"uint256","name":"maxCapLimit","type":"uint256"}],"name":"updateTokenCap","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620016193803806200161983398101604081905262000034916200013e565b600080546001600160a01b0319166001600160a01b038316179055620000636200005d62000077565b62000094565b506001805460ff60a01b191690556200016e565b60006200008e620000e660201b62000c7e1760201c565b90505b90565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000620000f33362000126565b1562000109575060131936013560601c62000091565b6200011e6200013a60201b62000cac1760201c565b905062000091565b6000546001600160a01b0390811691161490565b3390565b60006020828403121562000150578081fd5b81516001600160a01b038116811462000167578182fd5b9392505050565b61149b806200017e6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638456cb59116100b8578063ab8825671161007c578063ab8825671461026f578063b5ec999914610282578063ba8dbea214610295578063c0e4d627146102b9578063f2fde38b146102cc578063fa5e2abc146102df57610137565b80638456cb591461020b57806385dc3013146102135780638b56d0b7146102265780638da5cb5b14610239578063a53a225f1461024e57610137565b8063572b6c05116100ff578063572b6c05146101a85780635c975abb146101c857806360f5dfda146101d0578063715018a6146101f057806376319190146101f857610137565b8063128161a81461013c5780632feb4d54146101655780633f4ba83a1461017a5780634fe2cf901461018257806356e3866d14610195575b600080fd5b61014f61014a366004610f62565b6102ff565b60405161015c9190611363565b60405180910390f35b610178610173366004611027565b61033e565b005b610178610541565b610178610190366004610fde565b61058a565b6101786101a3366004610fac565b61066b565b6101bb6101b6366004610f62565b61074e565b60405161015c919061114f565b6101bb610762565b6101e36101de366004610f62565b610773565b60405161015c91906113b6565b610178610791565b610178610206366004610f62565b6107da565b6101786108a0565b6101e3610221366004610f62565b6108e7565b610178610234366004610f83565b610906565b6102416109c4565b60405161015c919061113b565b61026161025c366004610f62565b6109d3565b60405161015c9291906113f3565b61026161027d366004611101565b6109ec565b610178610290366004610fac565b610a10565b6102a86102a3366004610f62565b610b07565b60405161015c9594939291906113bf565b61014f6102c7366004611101565b610b4f565b6101786102da366004610f62565b610b96565b6102f26102ed366004610f62565b610c07565b60405161015c9190611371565b610307610de3565b506001600160a01b03811660009081526004602090815260409182902082518084019093528054835260010154908201525b919050565b610346610cb0565b6001600160a01b03166103576109c4565b6001600160a01b0316146103865760405162461bcd60e51b815260040161037d90611301565b60405180910390fd5b81518351148015610398575080518251145b6103b45760405162461bcd60e51b815260040161037d90611232565b805160005b8181101561053a578281815181106103e157634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516003600087848151811061041157634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600086848151811061044957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000018190555082818151811061049857634e487b7160e01b600052603260045260246000fd5b602002602001015160200151600360008784815181106104c857634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600086848151811061050057634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060010190506103b9565b5050505050565b610549610cb0565b6001600160a01b031661055a6109c4565b6001600160a01b0316146105805760405162461bcd60e51b815260040161037d90611301565b610588610cbf565b565b610592610cb0565b6001600160a01b03166105a36109c4565b6001600160a01b0316146105c95760405162461bcd60e51b815260040161037d90611301565b6001600160a01b0386166105ef5760405162461bcd60e51b815260040161037d906111ce565b84841161060e5760405162461bcd60e51b815260040161037d90611269565b6001600160a01b0390951660009081526002602081815260408084206001818101805460ff191682179055600480855292909520898155909401968755908290528201959095559254600584015592820155600381019190915555565b826001600160a01b0381166106925760405162461bcd60e51b815260040161037d906111ce565b6001600160a01b03811660009081526002602052604090206001015460ff166106cd5760405162461bcd60e51b815260040161037d90611336565b6106d5610cb0565b6001600160a01b03166106e66109c4565b6001600160a01b03161461070c5760405162461bcd60e51b815260040161037d90611301565b82821161072b5760405162461bcd60e51b815260040161037d90611269565b506001600160a01b03909216600090815260046020526040902090815560010155565b6000546001600160a01b0390811691161490565b600154600160a01b900460ff165b90565b6001600160a01b031660009081526002602052604090206003015490565b610799610cb0565b6001600160a01b03166107aa6109c4565b6001600160a01b0316146107d05760405162461bcd60e51b815260040161037d90611301565b6105886000610d30565b806001600160a01b0381166108015760405162461bcd60e51b815260040161037d906111ce565b6001600160a01b03811660009081526002602052604090206001015460ff1661083c5760405162461bcd60e51b815260040161037d90611336565b610844610cb0565b6001600160a01b03166108556109c4565b6001600160a01b03161461087b5760405162461bcd60e51b815260040161037d90611301565b506001600160a01b03166000908152600260205260409020600101805460ff19169055565b6108a8610cb0565b6001600160a01b03166108b96109c4565b6001600160a01b0316146108df5760405162461bcd60e51b815260040161037d90611301565b610588610d82565b6001600160a01b03166000908152600260208190526040909120015490565b816001600160a01b03811661092d5760405162461bcd60e51b815260040161037d906111ce565b6001600160a01b03811660009081526002602052604090206001015460ff166109685760405162461bcd60e51b815260040161037d90611336565b610970610cb0565b6001600160a01b03166109816109c4565b6001600160a01b0316146109a75760405162461bcd60e51b815260040161037d90611301565b506001600160a01b03909116600090815260026020526040902055565b6001546001600160a01b031690565b6004602052600090815260409020805460019091015482565b60036020908152600092835260408084209091529082529020805460019091015482565b610a18610cb0565b6001600160a01b0316610a296109c4565b6001600160a01b031614610a4f5760405162461bcd60e51b815260040161037d90611301565b610a57610762565b15610a745760405162461bcd60e51b815260040161037d906112d7565b81610a915760405162461bcd60e51b815260040161037d906112a0565b80610aae5760405162461bcd60e51b815260040161037d90611205565b6001600160a01b03831660008181526002602081905260408083209182018690556003909101849055518392859290917ff98c81ad0a5eb3551c3561de8dc9d1512e8680fb77425ea138ebfe9a9c0065ff9190a4505050565b60026020818152600092835260409283902080546001820154938201546003830154865180880190975260048401548752600590930154938601939093529360ff9093169285565b610b57610de3565b5060008281526003602090815260408083206001600160a01b038516845282529182902082518084019093528054835260010154908201525b92915050565b610b9e610cb0565b6001600160a01b0316610baf6109c4565b6001600160a01b031614610bd55760405162461bcd60e51b815260040161037d90611301565b6001600160a01b038116610bfb5760405162461bcd60e51b815260040161037d90611188565b610c0481610d30565b50565b610c0f610dfd565b506040805160a0810182526001600160a01b03929092166000818152600260208181528483208054875260018082015460ff1615158389015292810154878701526003015460608701529282526004835290839020835180850190945280548452015490820152608082015290565b6000610c893361074e565b15610c9d575060131936013560601c610770565b610ca5610cac565b9050610770565b3390565b6000610cba610c7e565b905090565b610cc7610762565b610ce35760405162461bcd60e51b815260040161037d9061115a565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610d19610cb0565b604051610d26919061113b565b60405180910390a1565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610d8a610762565b15610da75760405162461bcd60e51b815260040161037d906112d7565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d19610cb0565b604051806040016040528060008152602001600081525090565b6040518060a00160405280600081526020016000151581526020016000815260200160008152602001610e2e610de3565b905290565b80356001600160a01b038116811461033957600080fd5b600082601f830112610e5a578081fd5b81356020610e6f610e6a8361142b565b611401565b8281528181019085830183850287018401881015610e8b578586fd5b855b85811015610eb057610e9e82610e33565b84529284019290840190600101610e8d565b5090979650505050505050565b600082601f830112610ecd578081fd5b81356020610edd610e6a8361142b565b82815281810190858301604080860288018501891015610efb578687fd5b865b86811015610f545781838b031215610f13578788fd5b815182810181811067ffffffffffffffff82111715610f3457610f3461144f565b835283358152868401358782015285529385019391810191600101610efd565b509198975050505050505050565b600060208284031215610f73578081fd5b610f7c82610e33565b9392505050565b60008060408385031215610f95578081fd5b610f9e83610e33565b946020939093013593505050565b600080600060608486031215610fc0578081fd5b610fc984610e33565b95602085013595506040909401359392505050565b60008060008060008060c08789031215610ff6578182fd5b610fff87610e33565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b60008060006060848603121561103b578283fd5b833567ffffffffffffffff80821115611052578485fd5b818601915086601f830112611065578485fd5b81356020611075610e6a8361142b565b82815281810190858301838502870184018c101561109157898afd5b8996505b848710156110b3578035835260019690960195918301918301611095565b50975050870135925050808211156110c9578384fd5b6110d587838801610e4a565b935060408601359150808211156110ea578283fd5b506110f786828701610ebd565b9150509250925092565b60008060408385031215611113578182fd5b8235915061112360208401610e33565b90509250929050565b80518252602090810151910152565b6001600160a01b0391909116815260200190565b901515815260200190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526019908201527f546f6b656e20616464726573732063616e6e6f74206265203000000000000000604082015260600190565b60208082526013908201527204d6178204665652063616e6e6f74206265203606c1b604082015260600190565b6020808252601a908201527f204552525f41525241595f4c454e4754485f4d49534d41544348000000000000604082015260600190565b60208082526019908201527f6d61784361704c696d6974203e206d696e4361704c696d697400000000000000604082015260600190565b6020808252601b908201527f457175696c69627269756d204665652063616e6e6f7420626520300000000000604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b604082015260600190565b60408101610b90828461112c565b600060c08201905082518252602083015115156020830152604083015160408301526060830151606083015260808301516113af608084018261112c565b5092915050565b90815260200190565b8581528415156020820152604081018490526060810183905260c081016113e9608083018461112c565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156114235761142361144f565b604052919050565b600067ffffffffffffffff8211156114455761144561144f565b5060209081020190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ae39a39cd2794f49560d2a2f89e2ef44bec9af5f5e4a8c1696344e39c2f8f75164736f6c6343000800003300000000000000000000000084a0856b038eaad1cc7e297cf34a7e72685a8693

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638456cb59116100b8578063ab8825671161007c578063ab8825671461026f578063b5ec999914610282578063ba8dbea214610295578063c0e4d627146102b9578063f2fde38b146102cc578063fa5e2abc146102df57610137565b80638456cb591461020b57806385dc3013146102135780638b56d0b7146102265780638da5cb5b14610239578063a53a225f1461024e57610137565b8063572b6c05116100ff578063572b6c05146101a85780635c975abb146101c857806360f5dfda146101d0578063715018a6146101f057806376319190146101f857610137565b8063128161a81461013c5780632feb4d54146101655780633f4ba83a1461017a5780634fe2cf901461018257806356e3866d14610195575b600080fd5b61014f61014a366004610f62565b6102ff565b60405161015c9190611363565b60405180910390f35b610178610173366004611027565b61033e565b005b610178610541565b610178610190366004610fde565b61058a565b6101786101a3366004610fac565b61066b565b6101bb6101b6366004610f62565b61074e565b60405161015c919061114f565b6101bb610762565b6101e36101de366004610f62565b610773565b60405161015c91906113b6565b610178610791565b610178610206366004610f62565b6107da565b6101786108a0565b6101e3610221366004610f62565b6108e7565b610178610234366004610f83565b610906565b6102416109c4565b60405161015c919061113b565b61026161025c366004610f62565b6109d3565b60405161015c9291906113f3565b61026161027d366004611101565b6109ec565b610178610290366004610fac565b610a10565b6102a86102a3366004610f62565b610b07565b60405161015c9594939291906113bf565b61014f6102c7366004611101565b610b4f565b6101786102da366004610f62565b610b96565b6102f26102ed366004610f62565b610c07565b60405161015c9190611371565b610307610de3565b506001600160a01b03811660009081526004602090815260409182902082518084019093528054835260010154908201525b919050565b610346610cb0565b6001600160a01b03166103576109c4565b6001600160a01b0316146103865760405162461bcd60e51b815260040161037d90611301565b60405180910390fd5b81518351148015610398575080518251145b6103b45760405162461bcd60e51b815260040161037d90611232565b805160005b8181101561053a578281815181106103e157634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516003600087848151811061041157634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600086848151811061044957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000018190555082818151811061049857634e487b7160e01b600052603260045260246000fd5b602002602001015160200151600360008784815181106104c857634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600086848151811061050057634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060010190506103b9565b5050505050565b610549610cb0565b6001600160a01b031661055a6109c4565b6001600160a01b0316146105805760405162461bcd60e51b815260040161037d90611301565b610588610cbf565b565b610592610cb0565b6001600160a01b03166105a36109c4565b6001600160a01b0316146105c95760405162461bcd60e51b815260040161037d90611301565b6001600160a01b0386166105ef5760405162461bcd60e51b815260040161037d906111ce565b84841161060e5760405162461bcd60e51b815260040161037d90611269565b6001600160a01b0390951660009081526002602081815260408084206001818101805460ff191682179055600480855292909520898155909401968755908290528201959095559254600584015592820155600381019190915555565b826001600160a01b0381166106925760405162461bcd60e51b815260040161037d906111ce565b6001600160a01b03811660009081526002602052604090206001015460ff166106cd5760405162461bcd60e51b815260040161037d90611336565b6106d5610cb0565b6001600160a01b03166106e66109c4565b6001600160a01b03161461070c5760405162461bcd60e51b815260040161037d90611301565b82821161072b5760405162461bcd60e51b815260040161037d90611269565b506001600160a01b03909216600090815260046020526040902090815560010155565b6000546001600160a01b0390811691161490565b600154600160a01b900460ff165b90565b6001600160a01b031660009081526002602052604090206003015490565b610799610cb0565b6001600160a01b03166107aa6109c4565b6001600160a01b0316146107d05760405162461bcd60e51b815260040161037d90611301565b6105886000610d30565b806001600160a01b0381166108015760405162461bcd60e51b815260040161037d906111ce565b6001600160a01b03811660009081526002602052604090206001015460ff1661083c5760405162461bcd60e51b815260040161037d90611336565b610844610cb0565b6001600160a01b03166108556109c4565b6001600160a01b03161461087b5760405162461bcd60e51b815260040161037d90611301565b506001600160a01b03166000908152600260205260409020600101805460ff19169055565b6108a8610cb0565b6001600160a01b03166108b96109c4565b6001600160a01b0316146108df5760405162461bcd60e51b815260040161037d90611301565b610588610d82565b6001600160a01b03166000908152600260208190526040909120015490565b816001600160a01b03811661092d5760405162461bcd60e51b815260040161037d906111ce565b6001600160a01b03811660009081526002602052604090206001015460ff166109685760405162461bcd60e51b815260040161037d90611336565b610970610cb0565b6001600160a01b03166109816109c4565b6001600160a01b0316146109a75760405162461bcd60e51b815260040161037d90611301565b506001600160a01b03909116600090815260026020526040902055565b6001546001600160a01b031690565b6004602052600090815260409020805460019091015482565b60036020908152600092835260408084209091529082529020805460019091015482565b610a18610cb0565b6001600160a01b0316610a296109c4565b6001600160a01b031614610a4f5760405162461bcd60e51b815260040161037d90611301565b610a57610762565b15610a745760405162461bcd60e51b815260040161037d906112d7565b81610a915760405162461bcd60e51b815260040161037d906112a0565b80610aae5760405162461bcd60e51b815260040161037d90611205565b6001600160a01b03831660008181526002602081905260408083209182018690556003909101849055518392859290917ff98c81ad0a5eb3551c3561de8dc9d1512e8680fb77425ea138ebfe9a9c0065ff9190a4505050565b60026020818152600092835260409283902080546001820154938201546003830154865180880190975260048401548752600590930154938601939093529360ff9093169285565b610b57610de3565b5060008281526003602090815260408083206001600160a01b038516845282529182902082518084019093528054835260010154908201525b92915050565b610b9e610cb0565b6001600160a01b0316610baf6109c4565b6001600160a01b031614610bd55760405162461bcd60e51b815260040161037d90611301565b6001600160a01b038116610bfb5760405162461bcd60e51b815260040161037d90611188565b610c0481610d30565b50565b610c0f610dfd565b506040805160a0810182526001600160a01b03929092166000818152600260208181528483208054875260018082015460ff1615158389015292810154878701526003015460608701529282526004835290839020835180850190945280548452015490820152608082015290565b6000610c893361074e565b15610c9d575060131936013560601c610770565b610ca5610cac565b9050610770565b3390565b6000610cba610c7e565b905090565b610cc7610762565b610ce35760405162461bcd60e51b815260040161037d9061115a565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610d19610cb0565b604051610d26919061113b565b60405180910390a1565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610d8a610762565b15610da75760405162461bcd60e51b815260040161037d906112d7565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d19610cb0565b604051806040016040528060008152602001600081525090565b6040518060a00160405280600081526020016000151581526020016000815260200160008152602001610e2e610de3565b905290565b80356001600160a01b038116811461033957600080fd5b600082601f830112610e5a578081fd5b81356020610e6f610e6a8361142b565b611401565b8281528181019085830183850287018401881015610e8b578586fd5b855b85811015610eb057610e9e82610e33565b84529284019290840190600101610e8d565b5090979650505050505050565b600082601f830112610ecd578081fd5b81356020610edd610e6a8361142b565b82815281810190858301604080860288018501891015610efb578687fd5b865b86811015610f545781838b031215610f13578788fd5b815182810181811067ffffffffffffffff82111715610f3457610f3461144f565b835283358152868401358782015285529385019391810191600101610efd565b509198975050505050505050565b600060208284031215610f73578081fd5b610f7c82610e33565b9392505050565b60008060408385031215610f95578081fd5b610f9e83610e33565b946020939093013593505050565b600080600060608486031215610fc0578081fd5b610fc984610e33565b95602085013595506040909401359392505050565b60008060008060008060c08789031215610ff6578182fd5b610fff87610e33565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b60008060006060848603121561103b578283fd5b833567ffffffffffffffff80821115611052578485fd5b818601915086601f830112611065578485fd5b81356020611075610e6a8361142b565b82815281810190858301838502870184018c101561109157898afd5b8996505b848710156110b3578035835260019690960195918301918301611095565b50975050870135925050808211156110c9578384fd5b6110d587838801610e4a565b935060408601359150808211156110ea578283fd5b506110f786828701610ebd565b9150509250925092565b60008060408385031215611113578182fd5b8235915061112360208401610e33565b90509250929050565b80518252602090810151910152565b6001600160a01b0391909116815260200190565b901515815260200190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526019908201527f546f6b656e20616464726573732063616e6e6f74206265203000000000000000604082015260600190565b60208082526013908201527204d6178204665652063616e6e6f74206265203606c1b604082015260600190565b6020808252601a908201527f204552525f41525241595f4c454e4754485f4d49534d41544348000000000000604082015260600190565b60208082526019908201527f6d61784361704c696d6974203e206d696e4361704c696d697400000000000000604082015260600190565b6020808252601b908201527f457175696c69627269756d204665652063616e6e6f7420626520300000000000604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b604082015260600190565b60408101610b90828461112c565b600060c08201905082518252602083015115156020830152604083015160408301526060830151606083015260808301516113af608084018261112c565b5092915050565b90815260200190565b8581528415156020820152604081018490526060810183905260c081016113e9608083018461112c565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156114235761142361144f565b604052919050565b600067ffffffffffffffff8211156114455761144561144f565b5060209081020190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ae39a39cd2794f49560d2a2f89e2ef44bec9af5f5e4a8c1696344e39c2f8f75164736f6c63430008000033

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

00000000000000000000000084a0856b038eaad1cc7e297cf34a7e72685a8693

-----Decoded View---------------
Arg [0] : trustedForwarder (address): 0x84a0856b038eaAd1cC7E297cF34A7e72685A8693

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000084a0856b038eaad1cc7e297cf34a7e72685a8693


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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  ]

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.