GLMR Price: $0.078796 (+9.26%)

Contract

0xeC15f6C93F6E41847C03a3c748e524465add8b7a

Overview

GLMR Balance

Moonbeam Chain LogoMoonbeam Chain LogoMoonbeam Chain Logo0 GLMR

GLMR Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Swap Legacy RMRK86112012024-12-04 20:15:06139 days ago1733343306IN
0xeC15f6C9...65add8b7a
0 GLMR0.037014125
Swap Legacy RMRK82288532024-11-07 18:54:06166 days ago1731005646IN
0xeC15f6C9...65add8b7a
0 GLMR0.037014125
Swap Legacy RMRK68926142024-08-05 16:04:12260 days ago1722873852IN
0xeC15f6C9...65add8b7a
0 GLMR0.00940212125
Swap Legacy RMRK66512892024-07-19 15:58:12277 days ago1721404692IN
0xeC15f6C9...65add8b7a
0 GLMR0.00947734126
Swap Legacy RMRK65847912024-07-14 9:05:48283 days ago1720947948IN
0xeC15f6C9...65add8b7a
0 GLMR0.00940212125
Swap Legacy RMRK64785332024-06-29 8:53:00298 days ago1719651180IN
0xeC15f6C9...65add8b7a
0 GLMR0.00940362125
Swap Legacy RMRK63235232024-06-07 10:35:24320 days ago1717756524IN
0xeC15f6C9...65add8b7a
0 GLMR0.0092535125
Swap Legacy RMRK63123122024-06-05 20:33:48321 days ago1717619628IN
0xeC15f6C9...65add8b7a
0 GLMR0.00940212125
Swap Legacy RMRK63116712024-06-05 18:22:24321 days ago1717611744IN
0xeC15f6C9...65add8b7a
0 GLMR0.00936454126.5
Swap Legacy RMRK63106052024-06-05 14:47:30321 days ago1717598850IN
0xeC15f6C9...65add8b7a
0 GLMR0.00940212125
Swap Legacy RMRK62966242024-06-03 15:15:30323 days ago1717427730IN
0xeC15f6C9...65add8b7a
0 GLMR0.009607130
Swap Legacy RMRK62717702024-05-31 3:15:54327 days ago1717125354IN
0xeC15f6C9...65add8b7a
0 GLMR0.00951495126.5
Swap Legacy RMRK61710582024-05-16 22:07:54341 days ago1715897274IN
0xeC15f6C9...65add8b7a
0 GLMR0.00951495126.5
Swap Legacy RMRK60446492024-04-29 2:24:06359 days ago1714357446IN
0xeC15f6C9...65add8b7a
0 GLMR0.00943148127.425
Swap Legacy RMRK60073722024-04-23 19:40:00364 days ago1713901200IN
0xeC15f6C9...65add8b7a
0 GLMR0.01104688149.25
Swap Legacy RMRK60066082024-04-23 17:03:48364 days ago1713891828IN
0xeC15f6C9...65add8b7a
0 GLMR0.00951646126.5
Swap Legacy RMRK59569872024-04-16 15:20:54371 days ago1713280854IN
0xeC15f6C9...65add8b7a
0 GLMR0.009252125
Swap Legacy RMRK59220232024-04-11 16:33:42376 days ago1712853222IN
0xeC15f6C9...65add8b7a
0 GLMR0.0095225126.62063328
Swap Legacy RMRK59070072024-04-09 13:35:54378 days ago1712669754IN
0xeC15f6C9...65add8b7a
0 GLMR0.00951646126.5
Swap Legacy RMRK58525472024-04-01 21:15:00386 days ago1712006100IN
0xeC15f6C9...65add8b7a
0 GLMR0.01129964150.20335493
Swap Legacy RMRK58335702024-03-30 5:15:30389 days ago1711775730IN
0xeC15f6C9...65add8b7a
0 GLMR0.01139841151.54043647
Swap Legacy RMRK58321452024-03-30 0:28:12389 days ago1711758492IN
0xeC15f6C9...65add8b7a
0 GLMR0.01358126180.56108132
Swap Legacy RMRK58131892024-03-27 8:06:24392 days ago1711526784IN
0xeC15f6C9...65add8b7a
0 GLMR0.01142781151.93129515
Swap Legacy RMRK57973802024-03-25 2:34:06394 days ago1711334046IN
0xeC15f6C9...65add8b7a
0 GLMR0.01138328151.31517762
Swap Legacy RMRK57963212024-03-24 22:57:12394 days ago1711321032IN
0xeC15f6C9...65add8b7a
0 GLMR0.01127627149.91652221
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SwapperMinter

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : SwapperMinter.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

import {PausableWithDelay} from "./PausableWithDelay.sol";
import {IMintableBurnableERC20} from "./interfaces/IMintableBurnableERC20.sol";

// This contract is used to swap legacy RMRK tokens for new RMRK tokens. It can mint new RMRK tokens.
contract SwapperMinter is PausableWithDelay {
    IMintableBurnableERC20 public immutable LEGACY_RMRK;
    IMintableBurnableERC20 public immutable NEW_RMRK;
    uint256 public constant MULTIPLIER = 10 ** 8; // To go from 10 decimals to 18 decimals

    // Emitted when legacy RMRK tokens are swapped for new RMRK tokens. Amount is in New RMRK tokens.
    event Swapped(address indexed sender, address indexed to, uint256 amount);

    constructor(
        address legacyRmrk_,
        address newRmrk_,
        uint256 delay
    ) PausableWithDelay(delay) {
        LEGACY_RMRK = IMintableBurnableERC20(legacyRmrk_);
        NEW_RMRK = IMintableBurnableERC20(newRmrk_);
    }

    /**
     * @notice Swaps legacy RMRK tokens for the new RMRK tokens.
     * @param amount The amount of legacy RMRK tokens to swap.
     * @param to The address to send the new RMRK tokens to.
     * @dev The msg.sender needs to approve the contract to transfer the legacy RMRK tokens.
     */
    function swapLegacyRMRK(uint256 amount, address to) external whenNotPaused {
        // Legacy RMRK does not allow for burning, so we send to dead.
        LEGACY_RMRK.transferFrom(
            _msgSender(),
            0x000000000000000000000000000000000000dEaD,
            amount
        );
        NEW_RMRK.mint(to, amount * MULTIPLIER);
        emit Swapped(_msgSender(), to, amount);
    }
}

File 2 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "../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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

File 3 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

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

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

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

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

File 4 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @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 5 of 7 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)

pragma solidity ^0.8.20;

import {Context} from "../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 {
    bool private _paused;

    /**
     * @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);

    /**
     * @dev The operation failed because the contract is paused.
     */
    error EnforcedPause();

    /**
     * @dev The operation failed because the contract is not paused.
     */
    error ExpectedPause();

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

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

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

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

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        if (paused()) {
            revert EnforcedPause();
        }
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        if (!paused()) {
            revert ExpectedPause();
        }
    }

    /**
     * @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 6 of 7 : IMintableBurnableERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

// Interface for ERC with mint and burn functions.
interface IMintableBurnableERC20 is IERC20 {
    /**
     * @notice Mint new tokens.
     * @param to The address of the recipient.
     * @param amount The amount of tokens to mint.
     */
    function mint(address to, uint256 amount) external;

    /**
     * @notice Burn tokens.
     * @param amount The amount of tokens to burn.
     */
    function burn(uint256 amount) external;
}

File 7 of 7 : PausableWithDelay.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

import {Pausable} from "@openzeppelin/contracts/utils/Pausable.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

// Allows the contract to be paused and only unpaused after a delay has passed. The owner can add other accounts that can pause the contract, yet only the owner can unpause the contract.
contract PausableWithDelay is Pausable, Ownable {
    // The delay after which the contract can be unpaused, added to the block.timestamp when the contract is paused.
    uint256 public delay;
    // The timestamp after which the contract can be unpaused.
    uint256 public unpausableAt;
    // The accounts that can pause the contract.
    mapping(address account => bool canPause) public canPause;

    // The contract is cannot be unpaused yet.
    error CannotUnpauseYet(uint256 unpausableAt);
    // The caller is not the owner or a pauser.
    error UnauthorizedPause();

    // Checks that the caller is the owner or a authorized pauser.
    modifier onlyOwnerOrPauser() {
        _checkOwnerOrPauser();
        _;
    }

    constructor(uint256 delay_) Ownable(_msgSender()) {
        _setDelay(delay_);
    }

    /**
     * @notice Sets the delay after which the contract can be unpaused.
     * @param newDelay The new delay.
     */
    function _setDelay(uint256 newDelay) internal virtual {
        delay = newDelay;
    }

    /**
     * @notice Sets whether an account can pause the contract.
     * @param account The account to set.
     * @param canPause_ Whether the account can pause the contract.
     */
    function setCanPause(address account, bool canPause_) external virtual {
        canPause[account] = canPause_;
    }

    /**
     * @notice Pauses the contract.
     */
    function pause() external onlyOwnerOrPauser {
        _pause();
    }

    /**
     * @notice Pauses the contract with a delay to unpause.
     */
    function pauseWithDelay() external onlyOwnerOrPauser {
        unpausableAt = block.timestamp + delay;
        _pause();
    }

    /**
     * @notice Unpauses the contract.
     * @dev The contract cannot be unpaused before the delay has passed.
     */
    function unpause() external onlyOwner {
        if (unpausableAt != 0 && unpausableAt > block.timestamp)
            revert CannotUnpauseYet(unpausableAt);
        _unpause();
    }

    /**
     * @notice Sets the delay after which the contract can be unpaused.
     * @param newDelay The new delay.
     */
    function setDelay(uint256 newDelay) external onlyOwner {
        _setDelay(newDelay);
    }

    /**
     * @notice Checks that the caller is the owner or a authorized pauser, reverts otherwise.
     */
    function _checkOwnerOrPauser() internal view {
        if (_msgSender() != owner() && !canPause[_msgSender()])
            revert UnauthorizedPause();
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"legacyRmrk_","type":"address"},{"internalType":"address","name":"newRmrk_","type":"address"},{"internalType":"uint256","name":"delay","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"unpausableAt","type":"uint256"}],"name":"CannotUnpauseYet","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"UnauthorizedPause","type":"error"},{"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":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"LEGACY_RMRK","outputs":[{"internalType":"contract IMintableBurnableERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NEW_RMRK","outputs":[{"internalType":"contract IMintableBurnableERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"canPause","outputs":[{"internalType":"bool","name":"canPause","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pauseWithDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"canPause_","type":"bool"}],"name":"setCanPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"swapLegacyRMRK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpausableAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b5060405161099538038061099583398101604081905261002f91610101565b6000805460ff1916905580338061006057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100698161008c565b5061007381600155565b50506001600160a01b039182166080521660a05261013d565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516001600160a01b03811681146100fc57600080fd5b919050565b60008060006060848603121561011657600080fd5b61011f846100e5565b925061012d602085016100e5565b9150604084015190509250925092565b60805160a0516108256101706000396000818161022001526103ca0152600081816101f9015261032001526108256000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806375b24ebe11610097578063b2c9fe1011610066578063b2c9fe101461021b578063da088f0214610242578063e177246e14610255578063f2fde38b1461026857600080fd5b806375b24ebe1461019f5780638456cb59146101c25780638da5cb5b146101ca578063ae2c4b3c146101f457600080fd5b8063464d2702116100d3578063464d27021461016f5780635c975abb146101775780636a42b8f81461018e578063715018a61461019757600080fd5b8063059f8b16146101055780630cc86e0c14610123578063121c55ed1461012c5780633f4ba83a14610167575b600080fd5b6101106305f5e10081565b6040519081526020015b60405180910390f35b61011060025481565b61016561013a3660046106ee565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b005b61016561027b565b6101656102cc565b60005460ff165b604051901515815260200161011a565b61011060015481565b6101656102ec565b61017e6101ad366004610725565b60036020526000908152604090205460ff1681565b6101656102fe565b60005461010090046001600160a01b03165b6040516001600160a01b03909116815260200161011a565b6101dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101dc7f000000000000000000000000000000000000000000000000000000000000000081565b610165610250366004610747565b61030e565b610165610263366004610773565b6104b3565b610165610276366004610725565b6104c7565b610283610502565b60025415801590610295575042600254115b156102c257600254604051635dd8c63760e11b81526004016102b991815260200190565b60405180910390fd5b6102ca610535565b565b6102d4610587565b6001546102e190426107a2565b6002556102ca6105e7565b6102f4610502565b6102ca6000610624565b610306610587565b6102ca6105e7565b61031661067d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015261dead6024820152604481018590526064016020604051808303816000875af115801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf91906107bb565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166340c10f19826103fe6305f5e100866107d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b50505050806001600160a01b031661046d3390565b6001600160a01b03167f2e7f8a64aa3240292c0adfa332e1e8945dd31589fcb0bce2721fa21c69b1390f846040516104a791815260200190565b60405180910390a35050565b6104bb610502565b6104c481600155565b50565b6104cf610502565b6001600160a01b0381166104f957604051631e4fbdf760e01b8152600060048201526024016102b9565b6104c481610624565b6000546001600160a01b036101009091041633146102ca5760405163118cdaa760e01b81523360048201526024016102b9565b61053d6106a1565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60005461010090046001600160a01b03166001600160a01b0316336001600160a01b0316141580156105c957503360009081526003602052604090205460ff16155b156102ca57604051632ce5db9f60e01b815260040160405180910390fd5b6105ef61067d565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861056a3390565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff16156102ca5760405163d93c066560e01b815260040160405180910390fd5b60005460ff166102ca57604051638dfc202b60e01b815260040160405180910390fd5b80356001600160a01b03811681146106db57600080fd5b919050565b80151581146104c457600080fd5b6000806040838503121561070157600080fd5b61070a836106c4565b9150602083013561071a816106e0565b809150509250929050565b60006020828403121561073757600080fd5b610740826106c4565b9392505050565b6000806040838503121561075a57600080fd5b8235915061076a602084016106c4565b90509250929050565b60006020828403121561078557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107b5576107b561078c565b92915050565b6000602082840312156107cd57600080fd5b8151610740816106e0565b80820281158282048414176107b5576107b561078c56fea264697066735822122008017e52c74f22d0472e023ae7902c0cd199b0f0a087b0373f07f3bddbcb01ac64736f6c63430008150033000000000000000000000000ecf2adaff1de8a512f6e8bfe67a2c836edb25da3000000000000000000000000524d524b4c9366be706d3a90dcf70076ca037ae30000000000000000000000000000000000000000000000000000000000093a80

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806375b24ebe11610097578063b2c9fe1011610066578063b2c9fe101461021b578063da088f0214610242578063e177246e14610255578063f2fde38b1461026857600080fd5b806375b24ebe1461019f5780638456cb59146101c25780638da5cb5b146101ca578063ae2c4b3c146101f457600080fd5b8063464d2702116100d3578063464d27021461016f5780635c975abb146101775780636a42b8f81461018e578063715018a61461019757600080fd5b8063059f8b16146101055780630cc86e0c14610123578063121c55ed1461012c5780633f4ba83a14610167575b600080fd5b6101106305f5e10081565b6040519081526020015b60405180910390f35b61011060025481565b61016561013a3660046106ee565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b005b61016561027b565b6101656102cc565b60005460ff165b604051901515815260200161011a565b61011060015481565b6101656102ec565b61017e6101ad366004610725565b60036020526000908152604090205460ff1681565b6101656102fe565b60005461010090046001600160a01b03165b6040516001600160a01b03909116815260200161011a565b6101dc7f000000000000000000000000ecf2adaff1de8a512f6e8bfe67a2c836edb25da381565b6101dc7f000000000000000000000000524d524b4c9366be706d3a90dcf70076ca037ae381565b610165610250366004610747565b61030e565b610165610263366004610773565b6104b3565b610165610276366004610725565b6104c7565b610283610502565b60025415801590610295575042600254115b156102c257600254604051635dd8c63760e11b81526004016102b991815260200190565b60405180910390fd5b6102ca610535565b565b6102d4610587565b6001546102e190426107a2565b6002556102ca6105e7565b6102f4610502565b6102ca6000610624565b610306610587565b6102ca6105e7565b61031661067d565b6001600160a01b037f000000000000000000000000ecf2adaff1de8a512f6e8bfe67a2c836edb25da3166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015261dead6024820152604481018590526064016020604051808303816000875af115801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf91906107bb565b506001600160a01b037f000000000000000000000000524d524b4c9366be706d3a90dcf70076ca037ae3166340c10f19826103fe6305f5e100866107d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b50505050806001600160a01b031661046d3390565b6001600160a01b03167f2e7f8a64aa3240292c0adfa332e1e8945dd31589fcb0bce2721fa21c69b1390f846040516104a791815260200190565b60405180910390a35050565b6104bb610502565b6104c481600155565b50565b6104cf610502565b6001600160a01b0381166104f957604051631e4fbdf760e01b8152600060048201526024016102b9565b6104c481610624565b6000546001600160a01b036101009091041633146102ca5760405163118cdaa760e01b81523360048201526024016102b9565b61053d6106a1565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60005461010090046001600160a01b03166001600160a01b0316336001600160a01b0316141580156105c957503360009081526003602052604090205460ff16155b156102ca57604051632ce5db9f60e01b815260040160405180910390fd5b6105ef61067d565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861056a3390565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff16156102ca5760405163d93c066560e01b815260040160405180910390fd5b60005460ff166102ca57604051638dfc202b60e01b815260040160405180910390fd5b80356001600160a01b03811681146106db57600080fd5b919050565b80151581146104c457600080fd5b6000806040838503121561070157600080fd5b61070a836106c4565b9150602083013561071a816106e0565b809150509250929050565b60006020828403121561073757600080fd5b610740826106c4565b9392505050565b6000806040838503121561075a57600080fd5b8235915061076a602084016106c4565b90509250929050565b60006020828403121561078557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107b5576107b561078c565b92915050565b6000602082840312156107cd57600080fd5b8151610740816106e0565b80820281158282048414176107b5576107b561078c56fea264697066735822122008017e52c74f22d0472e023ae7902c0cd199b0f0a087b0373f07f3bddbcb01ac64736f6c63430008150033

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

000000000000000000000000ecf2adaff1de8a512f6e8bfe67a2c836edb25da3000000000000000000000000524d524b4c9366be706d3a90dcf70076ca037ae30000000000000000000000000000000000000000000000000000000000093a80

-----Decoded View---------------
Arg [0] : legacyRmrk_ (address): 0xECf2ADafF1De8A512f6e8bfe67a2C836EDb25Da3
Arg [1] : newRmrk_ (address): 0x524d524B4c9366be706D3A90dcf70076ca037aE3
Arg [2] : delay (uint256): 604800

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ecf2adaff1de8a512f6e8bfe67a2c836edb25da3
Arg [1] : 000000000000000000000000524d524b4c9366be706d3a90dcf70076ca037ae3
Arg [2] : 0000000000000000000000000000000000000000000000000000000000093a80


Block Transaction Gas Used Reward
view all blocks collator

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.