Contract 0x6e4e624106cb12e168e6533f8ec7c82263358940 1

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xcf1857e98376fa87766457cf30ee43694ed7aa6404251950cf37d39d16166f51Transfer405915612023-03-21 6:13:242 days 2 hrs ago0x360bce70feb6378dc69f01fe138d5a538ab9d8ae IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.007823614426 167.31783028
0xa0a965be8a207aa779638ffc8a7ab342b1a97c23a2c708df411a81b53a91c675Transfer405913912023-03-21 6:05:462 days 2 hrs ago0x360bce70feb6378dc69f01fe138d5a538ab9d8ae IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.006355520932 123.295651193
0x0014709029472f670a44d7815e26d1cb6497d193b8af11208bdd111492431431Transfer405787452023-03-20 21:12:242 days 11 hrs ago0xe255b82de33763956500af754fb4d26411131fde IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.005405233682 115.627391762
0x18d99dbee862e061be5663e4589ef96169328a46c54981b753e18289d5a88516Transfer405691212023-03-20 14:46:422 days 17 hrs ago0x7522a117a6568cced53c2326656f8938eb8f6740 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.009979117678 213.415977212
0x5870c693fd729faf7a4eebc9b5d640b9340cedddf1aad08cb47d4394d8d5e2c6Transfer405670082023-03-20 13:30:482 days 18 hrs ago0x46809b5bc9471c56c975c8fcfeb8f31f156f7862 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.008266693398 176.79363113
0x5443116509f96d6e7c089c05269276755a496f7296e84721288d789bfbfd844cTransfer405667772023-03-20 13:22:042 days 18 hrs ago0x46809b5bc9471c56c975c8fcfeb8f31f156f7862 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.007029343161 136.3994016
0x38c085cc4ec779358f8ad64b2c71ec289ab7dd355fd6271f5d69f618d61c8bacTransfer405625642023-03-20 10:48:462 days 21 hrs ago0x46809b5bc9471c56c975c8fcfeb8f31f156f7862 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.006982708506 135.462946569
0xd9b59bb20f27b65bf89ddda3f64a1b335f9d1103c2cb60a8b6f9153968c2f90aTransfer405620832023-03-20 10:31:022 days 21 hrs ago0x46809b5bc9471c56c975c8fcfeb8f31f156f7862 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.006640802937 128.860055063
0xf764e01ad5a2387d29db7fb3981bf3998d18cced087088a82a582596831ea8fdTransfer403086372023-03-13 19:19:149 days 12 hrs ago daenure007.wallet  IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.005998084052 128.276568191
0x9d2420edfe882d306494e5967570ee8859613c548feb7a21473962575613cfd9Transfer403046252023-03-13 16:44:559 days 15 hrs ago0x9d97d4d981498259719714812404342a059f9297 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.007730374462 149.96749496
0x5e645db5cc57b99ec483ab4161fc91386f8071f0f102a3a9de5faed5199ce4f1Approve401602542023-03-09 21:53:3913 days 10 hrs ago0x196f59eba0625372d5d5e6082570bf3f10d2fa5a IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.00767157734 164.622590521
0x65060c5b920bece441cdcc397ed7bcc37685eb654bb895fc9a5d0e26ea216e1bTransfer401290862023-03-09 2:14:1514 days 6 hrs ago0x196f59eba0625372d5d5e6082570bf3f10d2fa5a IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.00553956639 107.441307839
0x6afdfc038f95861999906e58affa114b656fef6558a7fcb19801c50501e352a4Transfer401287222023-03-09 2:00:1914 days 6 hrs ago0x196f59eba0625372d5d5e6082570bf3f10d2fa5a IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.005109636162 99.125771863
0xce2a45f126c88fc004ee5e09780db55c7187d40a5b7377e10535b2df5ef5bae2Transfer401268222023-03-09 0:49:4914 days 7 hrs ago0xa9dcdee9090f6e7077b26be01baadc34280951c7 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.004441765951 94.992749024
0x8ca61a0c718c8167d515e846ac1f700bc59f26d7bb7980e5b34ec3a732af8146Transfer400703012023-03-07 12:43:0315 days 19 hrs ago cheezzy16.nft  IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.005832732782 124.772344378
0x95d921a07b0ef61a2e3453bb2a714774a2d1bde0ae1d94acee8d8dbae39feae8Transfer400698972023-03-07 12:27:4115 days 19 hrs ago0x92f6f2700f694bb5801d4cdd1d53502cf54e0748 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.0056522223 120.910909798
0x26f319a47110b4f2d0812c4816746df4b63c2bdcacd0a8290991423bc8557f3cTransfer400697082023-03-07 12:20:5315 days 19 hrs ago0x92f6f2700f694bb5801d4cdd1d53502cf54e0748 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.008145572644 158.022244636
0xe414818f939f3818c7532ce5dcb7c42961990dad42e2efabb6b7ce1d02897efcTransfer400393512023-03-06 16:53:3416 days 15 hrs ago0x9624ed3d583db65042d124338e1310776a528452 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.007964674796 170.334583633
0x52153fc2dd4828f64d179b995482b57ddd9494a62453b465a894dc7edaababd4Transfer400391632023-03-06 16:45:5816 days 15 hrs agoAxelar: Deployer IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.008544905215 165.807804697
0xfc39d140730a115be4150172e43bf9629a4bb8ed957e39cacf9520cae5b89967Transfer399688432023-03-04 21:42:2318 days 10 hrs ago0x1c318d4dbccc6fd1f168a91245627fd53de4b41c IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.004608151887 98.576419615
0x877d89d5f02509619f5741059122647febde4d4ba935d551c9067c2770c98027Transfer399616702023-03-04 17:15:2218 days 15 hrs ago tapok72.nft  IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.00492469399 105.320772264
0x5ad2c12adeb20e499afc0a33ce6e378a758aebd0db896413ece001e5fa0158c4Transfer399600972023-03-04 16:14:3018 days 16 hrs ago tapok72.nft  IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.007314143506 141.892709701
0x5818068d8c80d5ede621fde4ff6d96a392bf977c54323134b5016ece86735b58Approve398198462023-02-28 22:17:5922 days 10 hrs ago polygonwallet.nft  IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.008169038313 335.939396879
0x003be12fd69a560c1662154c82ddd326e68d31f32c2db5d1a8f329957e0a43bfTransfer398174202023-02-28 20:47:0922 days 11 hrs ago0xebb39216729c4e329236e7b6f58a907e6f15d00e IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.030280953252 647.762492834
0xf6dccb7d9c0fcf1c5c83f5d3765d4043573caec08459fed48c1adec1fcd33c07Transfer397290122023-02-26 11:25:5724 days 20 hrs ago0xca36e3837f915d0308e89a584c70038666bea6a1 IN  0x6e4e624106cb12e168e6533f8ec7c822633589400 MATIC0.005685159642 121.584286294
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x194e0a4add5656e7e0f744ae17a3ce25d07da74d3a77b32fcbf96e81650abedf324559582022-08-29 17:45:28205 days 14 hrs ago Axelar: Gateway  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BurnableMintableCappedERC20

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-08-29
*/

// Sources flattened with hardhat v2.9.9 https://hardhat.org

// File contracts/interfaces/IAxelarGateway.sol

// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

interface IAxelarGateway {
    /**********\
    |* Errors *|
    \**********/

    error NotSelf();
    error NotProxy();
    error InvalidCodeHash();
    error SetupFailed();
    error InvalidAuthModule();
    error InvalidTokenDeployer();
    error InvalidAmount();
    error InvalidChainId();
    error InvalidCommands();
    error TokenDoesNotExist(string symbol);
    error TokenAlreadyExists(string symbol);
    error TokenDeployFailed(string symbol);
    error TokenContractDoesNotExist(address token);
    error BurnFailed(string symbol);
    error MintFailed(string symbol);
    error InvalidSetMintLimitsParams();
    error ExceedMintLimit(string symbol);

    /**********\
    |* Events *|
    \**********/

    event TokenSent(address indexed sender, string destinationChain, string destinationAddress, string symbol, uint256 amount);

    event ContractCall(
        address indexed sender,
        string destinationChain,
        string destinationContractAddress,
        bytes32 indexed payloadHash,
        bytes payload
    );

    event ContractCallWithToken(
        address indexed sender,
        string destinationChain,
        string destinationContractAddress,
        bytes32 indexed payloadHash,
        bytes payload,
        string symbol,
        uint256 amount
    );

    event Executed(bytes32 indexed commandId);

    event TokenDeployed(string symbol, address tokenAddresses);

    event ContractCallApproved(
        bytes32 indexed commandId,
        string sourceChain,
        string sourceAddress,
        address indexed contractAddress,
        bytes32 indexed payloadHash,
        bytes32 sourceTxHash,
        uint256 sourceEventIndex
    );

    event ContractCallApprovedWithMint(
        bytes32 indexed commandId,
        string sourceChain,
        string sourceAddress,
        address indexed contractAddress,
        bytes32 indexed payloadHash,
        string symbol,
        uint256 amount,
        bytes32 sourceTxHash,
        uint256 sourceEventIndex
    );

    event TokenMintLimitUpdated(string symbol, uint256 limit);

    event OperatorshipTransferred(bytes newOperatorsData);

    event Upgraded(address indexed implementation);

    /********************\
    |* Public Functions *|
    \********************/

    function sendToken(
        string calldata destinationChain,
        string calldata destinationAddress,
        string calldata symbol,
        uint256 amount
    ) external;

    function callContract(
        string calldata destinationChain,
        string calldata contractAddress,
        bytes calldata payload
    ) external;

    function callContractWithToken(
        string calldata destinationChain,
        string calldata contractAddress,
        bytes calldata payload,
        string calldata symbol,
        uint256 amount
    ) external;

    function isContractCallApproved(
        bytes32 commandId,
        string calldata sourceChain,
        string calldata sourceAddress,
        address contractAddress,
        bytes32 payloadHash
    ) external view returns (bool);

    function isContractCallAndMintApproved(
        bytes32 commandId,
        string calldata sourceChain,
        string calldata sourceAddress,
        address contractAddress,
        bytes32 payloadHash,
        string calldata symbol,
        uint256 amount
    ) external view returns (bool);

    function validateContractCall(
        bytes32 commandId,
        string calldata sourceChain,
        string calldata sourceAddress,
        bytes32 payloadHash
    ) external returns (bool);

    function validateContractCallAndMint(
        bytes32 commandId,
        string calldata sourceChain,
        string calldata sourceAddress,
        bytes32 payloadHash,
        string calldata symbol,
        uint256 amount
    ) external returns (bool);

    /***********\
    |* Getters *|
    \***********/

    function authModule() external view returns (address);

    function tokenDeployer() external view returns (address);

    function tokenMintLimit(string memory symbol) external view returns (uint256);

    function tokenMintAmount(string memory symbol) external view returns (uint256);

    function allTokensFrozen() external view returns (bool);

    function implementation() external view returns (address);

    function tokenAddresses(string memory symbol) external view returns (address);

    function tokenFrozen(string memory symbol) external view returns (bool);

    function isCommandExecuted(bytes32 commandId) external view returns (bool);

    function adminEpoch() external view returns (uint256);

    function adminThreshold(uint256 epoch) external view returns (uint256);

    function admins(uint256 epoch) external view returns (address[] memory);

    /*******************\
    |* Admin Functions *|
    \*******************/

    function setTokenMintLimits(string[] calldata symbols, uint256[] calldata limits) external;

    function upgrade(
        address newImplementation,
        bytes32 newImplementationCodeHash,
        bytes calldata setupParams
    ) external;

    /**********************\
    |* External Functions *|
    \**********************/

    function setup(bytes calldata params) external;

    function execute(bytes calldata input) external;
}


// File contracts/interfaces/IERC20Burn.sol


interface IERC20Burn {
    function burn(bytes32 salt) external;
}


// File contracts/interfaces/IERC20BurnFrom.sol


interface IERC20BurnFrom {
    function burnFrom(address account, uint256 amount) external;
}


// File contracts/interfaces/IERC20.sol


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    error InvalidAccount();

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


// File contracts/interfaces/IERC20Permit.sol


interface IERC20Permit {
    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function nonces(address account) external view returns (uint256);

    function permit(
        address issuer,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}


// File contracts/interfaces/IOwnable.sol


interface IOwnable {
    error NotOwner();
    error InvalidOwner();

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

    function owner() external view returns (address);

    function transferOwnership(address newOwner) external;
}


// File contracts/interfaces/IMintableCappedERC20.sol


interface IMintableCappedERC20 is IERC20, IERC20Permit, IOwnable {
    error CapExceeded();

    function cap() external view returns (uint256);

    function mint(address account, uint256 amount) external;
}


// File contracts/interfaces/IBurnableMintableCappedERC20.sol


interface IBurnableMintableCappedERC20 is IERC20Burn, IERC20BurnFrom, IMintableCappedERC20 {
    function depositAddress(bytes32 salt) external view returns (address);

    function burn(bytes32 salt) external;

    function burnFrom(address account, uint256 amount) external;
}


// File contracts/ERC20.sol


/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is IERC20 {
    mapping(address => uint256) public override balanceOf;

    mapping(address => mapping(address => uint256)) public override allowance;

    uint256 public override totalSupply;

    string public name;
    string public symbol;

    uint8 public immutable decimals;

    /**
     * @dev Sets the values for {name}, {symbol}, and {decimals}.
     */
    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        name = name_;
        symbol = symbol_;
        decimals = decimals_;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) external virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {
        uint256 _allowance = allowance[sender][msg.sender];

        if (_allowance != type(uint256).max) {
            _approve(sender, msg.sender, _allowance - amount);
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(msg.sender, spender, allowance[msg.sender][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(msg.sender, spender, allowance[msg.sender][spender] - subtractedValue);
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        if (sender == address(0) || recipient == address(0)) revert InvalidAccount();

        balanceOf[sender] -= amount;
        balanceOf[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        if (account == address(0)) revert InvalidAccount();

        totalSupply += amount;
        balanceOf[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        if (account == address(0)) revert InvalidAccount();

        balanceOf[account] -= amount;
        totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        if (owner == address(0) || spender == address(0)) revert InvalidAccount();

        allowance[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}


// File contracts/ERC20Permit.sol


abstract contract ERC20Permit is IERC20, IERC20Permit, ERC20 {
    error PermitExpired();
    error InvalidS();
    error InvalidV();
    error InvalidSignature();

    bytes32 public immutable DOMAIN_SEPARATOR;

    string private constant EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA = '\x19\x01';

    // keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)')
    bytes32 private constant DOMAIN_TYPE_SIGNATURE_HASH = bytes32(0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f);

    // keccak256('Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)')
    bytes32 private constant PERMIT_SIGNATURE_HASH = bytes32(0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9);

    mapping(address => uint256) public nonces;

    constructor(string memory name) {
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(DOMAIN_TYPE_SIGNATURE_HASH, keccak256(bytes(name)), keccak256(bytes('1')), block.chainid, address(this))
        );
    }

    function permit(
        address issuer,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        if (block.timestamp > deadline) revert PermitExpired();

        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) revert InvalidS();

        if (v != 27 && v != 28) revert InvalidV();

        bytes32 digest = keccak256(
            abi.encodePacked(
                EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA,
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_SIGNATURE_HASH, issuer, spender, value, nonces[issuer]++, deadline))
            )
        );

        address recoveredAddress = ecrecover(digest, v, r, s);

        if (recoveredAddress != issuer) revert InvalidSignature();

        // _approve will revert if issuer is address(0x0)
        _approve(issuer, spender, value);
    }
}


// File contracts/Ownable.sol


abstract contract Ownable is IOwnable {
    address public owner;

    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        if (owner != msg.sender) revert NotOwner();

        _;
    }

    function transferOwnership(address newOwner) external virtual onlyOwner {
        if (newOwner == address(0)) revert InvalidOwner();

        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}


// File contracts/MintableCappedERC20.sol


contract MintableCappedERC20 is IMintableCappedERC20, ERC20, ERC20Permit, Ownable {
    uint256 public immutable cap;

    constructor(
        string memory name,
        string memory symbol,
        uint8 decimals,
        uint256 capacity
    ) ERC20(name, symbol, decimals) ERC20Permit(name) Ownable() {
        cap = capacity;
    }

    function mint(address account, uint256 amount) external onlyOwner {
        uint256 capacity = cap;

        _mint(account, amount);

        if (capacity == 0) return;

        if (totalSupply > capacity) revert CapExceeded();
    }
}


// File contracts/DepositHandler.sol


contract DepositHandler {
    error IsLocked();
    error NotContract();

    uint256 internal constant IS_NOT_LOCKED = uint256(1);
    uint256 internal constant IS_LOCKED = uint256(2);

    uint256 internal _lockedStatus = IS_NOT_LOCKED;

    modifier noReenter() {
        if (_lockedStatus == IS_LOCKED) revert IsLocked();

        _lockedStatus = IS_LOCKED;
        _;
        _lockedStatus = IS_NOT_LOCKED;
    }

    function execute(address callee, bytes calldata data) external noReenter returns (bool success, bytes memory returnData) {
        if (callee.code.length == 0) revert NotContract();
        (success, returnData) = callee.call(data);
    }

    // NOTE: The gateway should always destroy the `DepositHandler` in the same runtime context that deploys it.
    function destroy(address etherDestination) external noReenter {
        selfdestruct(payable(etherDestination));
    }
}


// File contracts/BurnableMintableCappedERC20.sol


contract BurnableMintableCappedERC20 is IBurnableMintableCappedERC20, MintableCappedERC20 {
    constructor(
        string memory name,
        string memory symbol,
        uint8 decimals,
        uint256 capacity
    ) MintableCappedERC20(name, symbol, decimals, capacity) {}

    function depositAddress(bytes32 salt) public view returns (address) {
        /* Convert a hash which is bytes32 to an address which is 20-byte long
        according to https://docs.soliditylang.org/en/v0.8.1/control-structures.html?highlight=create2#salted-contract-creations-create2 */
        return
            address(
                uint160(
                    uint256(
                        keccak256(
                            abi.encodePacked(bytes1(0xff), owner, salt, keccak256(abi.encodePacked(type(DepositHandler).creationCode)))
                        )
                    )
                )
            );
    }

    function burn(bytes32 salt) external onlyOwner {
        address account = depositAddress(salt);
        _burn(account, balanceOf[account]);
    }

    function burnFrom(address account, uint256 amount) external onlyOwner {
        uint256 _allowance = allowance[account][msg.sender];
        if (_allowance != type(uint256).max) {
            _approve(account, msg.sender, _allowance - amount);
        }
        _burn(account, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"capacity","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CapExceeded","type":"error"},{"inputs":[],"name":"InvalidAccount","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"InvalidS","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidV","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"PermitExpired","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"depositAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"issuer","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040523480156200001157600080fd5b5060405162001837380380620018378339810160408190526200003491620002e1565b83838383838484848260039080519060200190620000549291906200016e565b5081516200006a9060049060208501906200016e565b5060ff166080908152835160208086019190912060408051808201825260018152603160f81b9084015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f938101939093528201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246918101919091523060a082015260c0019150620001029050565b60408051601f1981840301815290829052805160209091012060a052600680546001600160a01b0319163390811790915591506000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360c05250620003a995505050505050565b8280546200017c906200036c565b90600052602060002090601f016020900481019282620001a05760008555620001eb565b82601f10620001bb57805160ff1916838001178555620001eb565b82800160010185558215620001eb579182015b82811115620001eb578251825591602001919060010190620001ce565b50620001f9929150620001fd565b5090565b5b80821115620001f95760008155600101620001fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023c57600080fd5b81516001600160401b038082111562000259576200025962000214565b604051601f8301601f19908116603f0116810190828211818310171562000284576200028462000214565b81604052838152602092508683858801011115620002a157600080fd5b600091505b83821015620002c55785820183015181830184015290820190620002a6565b83821115620002d75760008385830101525b9695505050505050565b60008060008060808587031215620002f857600080fd5b84516001600160401b03808211156200031057600080fd5b6200031e888389016200022a565b955060208701519150808211156200033557600080fd5b5062000344878288016200022a565b935050604085015160ff811681146200035c57600080fd5b6060959095015193969295505050565b600181811c908216806200038157607f821691505b60208210811415620003a357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c051611450620003e760003960008181610265015261067301526000818161028c01526108de0152600061020101526114506000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806340c10f19116100d857806395d89b411161008c578063d505accf11610066578063d505accf14610368578063dd62ed3e1461037b578063f2fde38b146103a657600080fd5b806395d89b411461033a578063a457c2d714610342578063a9059cbb1461035557600080fd5b806379cc6790116100bd57806379cc6790146102f45780637ecebe00146103075780638da5cb5b1461032757600080fd5b806340c10f19146102c157806370a08231146102d457600080fd5b8063313ce5671161012f578063355274ea11610114578063355274ea146102605780633644e5151461028757806339509351146102ae57600080fd5b8063313ce567146101fc57806331eecaf41461023557600080fd5b8063095ea7b311610160578063095ea7b3146101af57806318160ddd146101d257806323b872dd146101e957600080fd5b806306fdde031461017c57806308a1eee11461019a575b600080fd5b6101846103b9565b6040516101919190610e5d565b60405180910390f35b6101ad6101a8366004610e90565b610447565b005b6101c26101bd366004610ec5565b6104a8565b6040519015158152602001610191565b6101db60025481565b604051908152602001610191565b6101c26101f7366004610eef565b6104be565b6102237f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610191565b610248610243366004610e90565b610515565b6040516001600160a01b039091168152602001610191565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6101c26102bc366004610ec5565b61060f565b6101ad6102cf366004610ec5565b610646565b6101db6102e2366004610f2b565b60006020819052908152604090205481565b6101ad610302366004610ec5565b6106e7565b6101db610315366004610f2b565b60056020526000908152604090205481565b600654610248906001600160a01b031681565b610184610758565b6101c2610350366004610ec5565b610765565b6101c2610363366004610ec5565b61079c565b6101ad610376366004610f4d565b6107a9565b6101db610389366004610fc0565b600160209081526000928352604080842090915290825290205481565b6101ad6103b4366004610f2b565b610a6c565b600380546103c690610ff3565b80601f01602080910402602001604051908101604052809291908181526020018280546103f290610ff3565b801561043f5780601f106104145761010080835404028352916020019161043f565b820191906000526020600020905b81548152906001019060200180831161042257829003601f168201915b505050505081565b6006546001600160a01b03163314610472576040516330cd747160e01b815260040160405180910390fd5b600061047d82610515565b6001600160a01b0381166000908152602081905260409020549091506104a4908290610b4b565b5050565b60006104b5338484610bfe565b50600192915050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146104ff576104ff85336104fa8685611044565b610bfe565b61050a858585610c9b565b506001949350505050565b6006546040516000917fff00000000000000000000000000000000000000000000000000000000000000916001600160a01b0390911690849061055a60208201610e20565b601f1982820381018352601f90910116604081905261057c919060200161105b565b604051602081830303815290604052805190602001206040516020016105f194939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012092915050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104b59185906104fa908690611077565b6006546001600160a01b03163314610671576040516330cd747160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061069c8383610d77565b806106a657505050565b8060025411156106e2576040517fa4875a4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6006546001600160a01b03163314610712576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160209081526040808320338452909152902054600019811461074e5761074e83336104fa8585611044565b6106e28383610b4b565b600480546103c690610ff3565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104b59185906104fa908690611044565b60006104b5338484610c9b565b834211156107e3576040517f1a15a3cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081111561083d576040517f40c1e74800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ff16601b1415801561085557508260ff16601c14155b1561088c576040517f119bce3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f19010000000000000000000000000000000000000000000000000000000000006020808301919091526001600160a01b038a166000908152600590915291822080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c91886109308361108f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e00160405160208183030381529060405280519060200120604051602001610994939291906110aa565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156109ff573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b031614610a56576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a61898989610bfe565b505050505050505050565b6006546001600160a01b03163314610a97576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610ad7576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038216610b7257604051630da30f6560e31b815260040160405180910390fd5b6001600160a01b03821660009081526020819052604081208054839290610b9a908490611044565b925050819055508060026000828254610bb39190611044565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b0383161580610c1b57506001600160a01b038216155b15610c3957604051630da30f6560e31b815260040160405180910390fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383161580610cb857506001600160a01b038216155b15610cd657604051630da30f6560e31b815260040160405180910390fd5b6001600160a01b03831660009081526020819052604081208054839290610cfe908490611044565b90915550506001600160a01b03821660009081526020819052604081208054839290610d2b908490611077565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c8e91815260200190565b6001600160a01b038216610d9e57604051630da30f6560e31b815260040160405180910390fd5b8060026000828254610db09190611077565b90915550506001600160a01b03821660009081526020819052604081208054839290610ddd908490611077565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bf2565b610349806110d283390190565b60005b83811015610e48578181015183820152602001610e30565b83811115610e57576000848401525b50505050565b6020815260008251806020840152610e7c816040850160208701610e2d565b601f01601f19169190910160400192915050565b600060208284031215610ea257600080fd5b5035919050565b80356001600160a01b0381168114610ec057600080fd5b919050565b60008060408385031215610ed857600080fd5b610ee183610ea9565b946020939093013593505050565b600080600060608486031215610f0457600080fd5b610f0d84610ea9565b9250610f1b60208501610ea9565b9150604084013590509250925092565b600060208284031215610f3d57600080fd5b610f4682610ea9565b9392505050565b600080600080600080600060e0888a031215610f6857600080fd5b610f7188610ea9565b9650610f7f60208901610ea9565b95506040880135945060608801359350608088013560ff81168114610fa357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610fd357600080fd5b610fdc83610ea9565b9150610fea60208401610ea9565b90509250929050565b600181811c9082168061100757607f821691505b6020821081141561102857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110565761105661102e565b500390565b6000825161106d818460208701610e2d565b9190910192915050565b6000821982111561108a5761108a61102e565b500190565b60006000198214156110a3576110a361102e565b5060010190565b600084516110bc818460208901610e2d565b9190910192835250602082015260400191905056fe6080604052600160005534801561001557600080fd5b50610324806100256000396000f3fe608060405234801561001057600080fd5b50600436106100355760003560e01c8062f55d9d1461003a5780631cff79cd1461004f575b600080fd5b61004d6100483660046101da565b610079565b005b61006261005d3660046101fc565b6100bb565b60405161007092919061027f565b60405180910390f35b6002600054141561009d5760405163caa30f5560e01b815260040160405180910390fd5b600260005573ffffffffffffffffffffffffffffffffffffffff8116ff5b60006060600260005414156100e35760405163caa30f5560e01b815260040160405180910390fd5b600260005573ffffffffffffffffffffffffffffffffffffffff85163b610136576040517f6f7c43f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16848460405161015d9291906102de565b6000604051808303816000865af19150503d806000811461019a576040519150601f19603f3d011682016040523d82523d6000602084013e61019f565b606091505b50600160005590969095509350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101d557600080fd5b919050565b6000602082840312156101ec57600080fd5b6101f5826101b1565b9392505050565b60008060006040848603121561021157600080fd5b61021a846101b1565b9250602084013567ffffffffffffffff8082111561023757600080fd5b818601915086601f83011261024b57600080fd5b81358181111561025a57600080fd5b87602082850101111561026c57600080fd5b6020830194508093505050509250925092565b821515815260006020604081840152835180604085015260005b818110156102b557858101830151858201606001528201610299565b818111156102c7576000606083870101525b50601f01601f191692909201606001949350505050565b818382376000910190815291905056fea264697066735822122032cb5e746816b7fac95205c068b30da37bd40119a57265be331c162cae74712464736f6c63430008090033a264697066735822122004e80ab7b1784de1e4f1eb3b6da0f7a49eea6f1fc7876ba739aa91d7c37db17d64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064178656c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000341584c0000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064178656c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000341584c0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Axelar
Arg [1] : symbol (string): AXL
Arg [2] : decimals (uint8): 6
Arg [3] : capacity (uint256): 0

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 4178656c61720000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 41584c0000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

22154:1406:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11597:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23103:149;;;;;;:::i;:::-;;:::i;:::-;;12680:169;;;;;;:::i;:::-;;:::i;:::-;;;1475:14:1;;1468:22;1450:41;;1438:2;1423:18;12680:169:0;1310:187:1;11553:35:0;;;;;;;;;1648:25:1;;;1636:2;1621:18;11553:35:0;1502:177:1;13331:415:0;;;;;;:::i;:::-;;:::i;11651:31::-;;;;;;;;2189:4:1;2177:17;;;2159:36;;2147:2;2132:18;11651:31:0;2017:184:1;22446:649:0;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2370:55:1;;;2352:74;;2340:2;2325:18;22446:649:0;2206:226:1;20608:28:0;;;;;18028:41;;;;;14155:211;;;;;;:::i;:::-;;:::i;20875:241::-;;;;;;:::i;:::-;;:::i;11409:53::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;23260:297;;;;;;:::i;:::-;;:::i;18643:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;19989:20;;;;;-1:-1:-1;;;;;19989:20:0;;;11622;;;:::i;14869:221::-;;;;;;:::i;:::-;;:::i;12185:175::-;;;;;;:::i;:::-;;:::i;18921:979::-;;;;;;:::i;:::-;;:::i;11471:73::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;20241:222;;;;;;:::i;:::-;;:::i;11597:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23103:149::-;20173:5;;-1:-1:-1;;;;;20173:5:0;20182:10;20173:19;20169:42;;20201:10;;-1:-1:-1;;;20201:10:0;;;;;;;;;;;20169:42;23161:15:::1;23179:20;23194:4;23179:14;:20::i;:::-;-1:-1:-1::0;;;;;23225:18:0;::::1;:9;:18:::0;;;::::1;::::0;;;;;;;23161:38;;-1:-1:-1;23210:34:0::1;::::0;23161:38;;23210:5:::1;:34::i;:::-;23150:102;23103:149:::0;:::o;12680:169::-;12765:4;12782:37;12791:10;12803:7;12812:6;12782:8;:37::i;:::-;-1:-1:-1;12837:4:0;12680:169;;;;:::o;13331:415::-;-1:-1:-1;;;;;13511:17:0;;13473:4;13511:17;;;:9;:17;;;;;;;;13529:10;13511:29;;;;;;;;-1:-1:-1;;13557:31:0;;13553:113;;13605:49;13614:6;13622:10;13634:19;13647:6;13634:10;:19;:::i;:::-;13605:8;:49::i;:::-;13678:36;13688:6;13696:9;13707:6;13678:9;:36::i;:::-;-1:-1:-1;13734:4:0;;13331:415;-1:-1:-1;;;;13331:415:0:o;22446:649::-;22927:5;;22967:33;;22505:7;;22913:12;;-1:-1:-1;;;;;22927:5:0;;;;22934:4;;22967:33;;;;;:::i;:::-;-1:-1:-1;;22967:33:0;;;;;;;;;;;;;;;;22950:51;;22967:33;;22950:51;;:::i;:::-;;;;;;;;;;;;;22940:62;;;;;;22896:107;;;;;;;;;;5048:66:1;5036:79;;;;5024:92;;5153:2;5149:15;;;;-1:-1:-1;;5145:53:1;5141:1;5132:11;;5125:74;5224:2;5215:12;;5208:28;5261:2;5252:12;;5245:28;5298:2;5289:12;;4813:494;22896:107:0;;;;-1:-1:-1;;22896:107:0;;;;;;;;;22856:174;;22896:107;22856:174;;;;;22446:649;-1:-1:-1;;22446:649:0:o;14155:211::-;14271:10;14245:4;14292:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;14292:30:0;;;;;;;;;;14245:4;;14262:74;;14283:7;;14292:43;;14325:10;;14292:43;:::i;20875:241::-;20173:5;;-1:-1:-1;;;;;20173:5:0;20182:10;20173:19;20169:42;;20201:10;;-1:-1:-1;;;20201:10:0;;;;;;;;;;;20169:42;20971:3:::1;20987:22;20993:7:::0;21002:6;20987:5:::1;:22::i;:::-;21026:13:::0;21022:26:::1;;21041:7;23150:102;23103:149:::0;:::o;21022:26::-:1;21078:8;21064:11;;:22;21060:48;;;21095:13;;;;;;;;;;;;;;21060:48;20941:175;20875:241:::0;;:::o;23260:297::-;20173:5;;-1:-1:-1;;;;;20173:5:0;20182:10;20173:19;20169:42;;20201:10;;-1:-1:-1;;;20201:10:0;;;;;;;;;;;20169:42;-1:-1:-1;;;;;23362:18:0;::::1;23341;23362::::0;;;:9:::1;:18;::::0;;;;;;;23381:10:::1;23362:30:::0;;;;;;;;-1:-1:-1;;23407:31:0;::::1;23403:114;;23455:50;23464:7:::0;23473:10:::1;23485:19;23498:6:::0;23485:10;:19:::1;:::i;23455:50::-;23527:22;23533:7;23542:6;23527:5;:22::i;11622:20::-:0;;;;;;;:::i;14869:221::-;14990:10;14964:4;15011:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15011:30:0;;;;;;;;;;14964:4;;14981:79;;15002:7;;15011:48;;15044:15;;15011:48;:::i;12185:175::-;12273:4;12290:40;12300:10;12312:9;12323:6;12290:9;:40::i;18921:979::-;19146:8;19128:15;:26;19124:54;;;19163:15;;;;;;;;;;;;;;19124:54;19208:66;19195:79;;19191:102;;;19283:10;;;;;;;;;;;;;;19191:102;19310:1;:7;;19315:2;19310:7;;:18;;;;;19321:1;:7;;19326:2;19321:7;;19310:18;19306:41;;;19337:10;;;;;;;;;;;;;;19306:41;19436:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19598:14:0;;19360;19598;;;:6;:14;;;;;;:16;;19495;;18567:66;;19574:6;;19582:7;;19591:5;;19360:14;19598:16;;;:::i;:::-;;;;-1:-1:-1;19540:85:0;;;;;;5872:25:1;;;;-1:-1:-1;;;;;5994:15:1;;;5974:18;;;5967:43;6046:15;;;;6026:18;;;6019:43;6078:18;;;6071:34;6121:19;;;6114:35;6165:19;;;6158:35;;;5844:19;;19540:85:0;;;;;;;;;;;;19530:96;;;;;;19401:240;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19401:240:0;;;;;;;;;19377:275;;19401:240;19377:275;;;;19665:24;19692:26;;;;;;;;;6875:25:1;;;6948:4;6936:17;;6916:18;;;6909:45;;;;6970:18;;;6963:34;;;7013:18;;;7006:34;;;19377:275:0;;-1:-1:-1;19665:24:0;19692:26;;6847:19:1;;19692:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19665:53;;19755:6;-1:-1:-1;;;;;19735:26:0;:16;-1:-1:-1;;;;;19735:26:0;;19731:57;;19770:18;;;;;;;;;;;;;;19731:57;19860:32;19869:6;19877:7;19886:5;19860:8;:32::i;:::-;19113:787;;18921:979;;;;;;;:::o;20241:222::-;20173:5;;-1:-1:-1;;;;;20173:5:0;20182:10;20173:19;20169:42;;20201:10;;-1:-1:-1;;;20201:10:0;;;;;;;;;;;20169:42;-1:-1:-1;;;;;20328:22:0;::::1;20324:49;;20359:14;;;;;;;;;;;;;;20324:49;20412:5;::::0;20391:37:::1;::::0;-1:-1:-1;;;;;20391:37:0;;::::1;::::0;20412:5:::1;::::0;20391:37:::1;::::0;20412:5:::1;::::0;20391:37:::1;20439:5;:16:::0;;;::::1;-1:-1:-1::0;;;;;20439:16:0;;;::::1;::::0;;;::::1;::::0;;20241:222::o;16803:260::-;-1:-1:-1;;;;;16883:21:0;;16879:50;;16913:16;;-1:-1:-1;;;16913:16:0;;;;;;;;;;;16879:50;-1:-1:-1;;;;;16942:18:0;;:9;:18;;;;;;;;;;:28;;16964:6;;16942:9;:28;;16964:6;;16942:28;:::i;:::-;;;;;;;;16996:6;16981:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;17018:37:0;;1648:25:1;;;17044:1:0;;-1:-1:-1;;;;;17018:37:0;;;;;1636:2:1;1621:18;17018:37:0;;;;;;;;16803:260;;:::o;17501:304::-;-1:-1:-1;;;;;17633:19:0;;;;:44;;-1:-1:-1;;;;;;17656:21:0;;;17633:44;17629:73;;;17686:16;;-1:-1:-1;;;17686:16:0;;;;;;;;;;;17629:73;-1:-1:-1;;;;;17715:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:34;;;17765:32;;1648:25:1;;;17765:32:0;;1621:18:1;17765:32:0;;;;;;;;17501:304;;;:::o;15580:348::-;-1:-1:-1;;;;;15716:20:0;;;;:47;;-1:-1:-1;;;;;;15740:23:0;;;15716:47;15712:76;;;15772:16;;-1:-1:-1;;;15772:16:0;;;;;;;;;;;15712:76;-1:-1:-1;;;;;15801:17:0;;:9;:17;;;;;;;;;;:27;;15822:6;;15801:9;:27;;15822:6;;15801:27;:::i;:::-;;;;-1:-1:-1;;;;;;;15839:20:0;;:9;:20;;;;;;;;;;:30;;15863:6;;15839:9;:30;;15863:6;;15839:30;:::i;:::-;;;;;;;;15902:9;-1:-1:-1;;;;;15885:35:0;15894:6;-1:-1:-1;;;;;15885:35:0;;15913:6;15885:35;;;;1648:25:1;;1636:2;1621:18;;1502:177;16210:260:0;-1:-1:-1;;;;;16290:21:0;;16286:50;;16320:16;;-1:-1:-1;;;16320:16:0;;;;;;;;;;;16286:50;16364:6;16349:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16381:18:0;;:9;:18;;;;;;;;;;:28;;16403:6;;16381:9;:28;;16403:6;;16381:28;:::i;:::-;;;;-1:-1:-1;;16425:37:0;;1648:25:1;;;-1:-1:-1;;;;;16425:37:0;;;16442:1;;16425:37;;1636:2:1;1621:18;16425:37:0;1502:177:1;-1:-1:-1;;;;;;;;:::o;14:258:1:-;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:383::-;426:2;415:9;408:21;389:4;458:6;452:13;501:6;496:2;485:9;481:18;474:34;517:66;576:6;571:2;560:9;556:18;551:2;543:6;539:15;517:66;:::i;:::-;644:2;623:15;-1:-1:-1;;619:29:1;604:45;;;;651:2;600:54;;277:383;-1:-1:-1;;277:383:1:o;665:180::-;724:6;777:2;765:9;756:7;752:23;748:32;745:52;;;793:1;790;783:12;745:52;-1:-1:-1;816:23:1;;665:180;-1:-1:-1;665:180:1:o;850:196::-;918:20;;-1:-1:-1;;;;;967:54:1;;957:65;;947:93;;1036:1;1033;1026:12;947:93;850:196;;;:::o;1051:254::-;1119:6;1127;1180:2;1168:9;1159:7;1155:23;1151:32;1148:52;;;1196:1;1193;1186:12;1148:52;1219:29;1238:9;1219:29;:::i;:::-;1209:39;1295:2;1280:18;;;;1267:32;;-1:-1:-1;;;1051:254:1:o;1684:328::-;1761:6;1769;1777;1830:2;1818:9;1809:7;1805:23;1801:32;1798:52;;;1846:1;1843;1836:12;1798:52;1869:29;1888:9;1869:29;:::i;:::-;1859:39;;1917:38;1951:2;1940:9;1936:18;1917:38;:::i;:::-;1907:48;;2002:2;1991:9;1987:18;1974:32;1964:42;;1684:328;;;;;:::o;2619:186::-;2678:6;2731:2;2719:9;2710:7;2706:23;2702:32;2699:52;;;2747:1;2744;2737:12;2699:52;2770:29;2789:9;2770:29;:::i;:::-;2760:39;2619:186;-1:-1:-1;;;2619:186:1:o;2810:693::-;2921:6;2929;2937;2945;2953;2961;2969;3022:3;3010:9;3001:7;2997:23;2993:33;2990:53;;;3039:1;3036;3029:12;2990:53;3062:29;3081:9;3062:29;:::i;:::-;3052:39;;3110:38;3144:2;3133:9;3129:18;3110:38;:::i;:::-;3100:48;;3195:2;3184:9;3180:18;3167:32;3157:42;;3246:2;3235:9;3231:18;3218:32;3208:42;;3300:3;3289:9;3285:19;3272:33;3345:4;3338:5;3334:16;3327:5;3324:27;3314:55;;3365:1;3362;3355:12;3314:55;2810:693;;;;-1:-1:-1;2810:693:1;;;;3388:5;3440:3;3425:19;;3412:33;;-1:-1:-1;3492:3:1;3477:19;;;3464:33;;2810:693;-1:-1:-1;;2810:693:1:o;3508:260::-;3576:6;3584;3637:2;3625:9;3616:7;3612:23;3608:32;3605:52;;;3653:1;3650;3643:12;3605:52;3676:29;3695:9;3676:29;:::i;:::-;3666:39;;3724:38;3758:2;3747:9;3743:18;3724:38;:::i;:::-;3714:48;;3508:260;;;;;:::o;3773:437::-;3852:1;3848:12;;;;3895;;;3916:61;;3970:4;3962:6;3958:17;3948:27;;3916:61;4023:2;4015:6;4012:14;3992:18;3989:38;3986:218;;;-1:-1:-1;;;4057:1:1;4050:88;4161:4;4158:1;4151:15;4189:4;4186:1;4179:15;3986:218;;3773:437;;;:::o;4215:184::-;-1:-1:-1;;;4264:1:1;4257:88;4364:4;4361:1;4354:15;4388:4;4385:1;4378:15;4404:125;4444:4;4472:1;4469;4466:8;4463:34;;;4477:18;;:::i;:::-;-1:-1:-1;4514:9:1;;4404:125::o;4534:274::-;4663:3;4701:6;4695:13;4717:53;4763:6;4758:3;4751:4;4743:6;4739:17;4717:53;:::i;:::-;4786:16;;;;;4534:274;-1:-1:-1;;4534:274:1:o;5312:128::-;5352:3;5383:1;5379:6;5376:1;5373:13;5370:39;;;5389:18;;:::i;:::-;-1:-1:-1;5425:9:1;;5312:128::o;5445:135::-;5484:3;-1:-1:-1;;5505:17:1;;5502:43;;;5525:18;;:::i;:::-;-1:-1:-1;5572:1:1;5561:13;;5445:135::o;6204:439::-;6391:3;6429:6;6423:13;6445:53;6491:6;6486:3;6479:4;6471:6;6467:17;6445:53;:::i;:::-;6520:16;;;;6545:21;;;-1:-1:-1;6593:4:1;6582:16;;6575:32;6634:2;6623:14;;6204:439;-1:-1:-1;6204:439:1:o

Swarm Source

ipfs://04e80ab7b1784de1e4f1eb3b6da0f7a49eea6f1fc7876ba739aa91d7c37db17d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.