ETH Price: $1,972.55 (+0.53%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint Debt223478442025-04-25 18:32:11302 days ago1745605931IN
Everclear: XERC20 Module
0 ETH0.000090070.95873304
Mint Debt223392662025-04-24 13:48:59303 days ago1745502539IN
Everclear: XERC20 Module
0 ETH0.001314513.99409064

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XERC20Module

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 10000 runs

Other Settings:
london EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;

import {ISettlementModule} from 'interfaces/common/ISettlementModule.sol';
import {IXERC20} from 'interfaces/common/IXERC20.sol';
import {IXERC20Module} from 'interfaces/intent/modules/IXERC20Module.sol';

/**
 * @title XERC20Module
 * @notice Module for handling minting and burning through XERC20 specific methods
 */
contract XERC20Module is IXERC20Module {
  /// @inheritdoc IXERC20Module
  mapping(address _user => mapping(address _asset => uint256 _amount)) public mintable;

  /// @inheritdoc IXERC20Module
  address public spoke;

  /**
   * @notice Check that the function is called by the local `EverclearSpoke`
   */
  modifier onlySpoke() {
    if (msg.sender != spoke) revert XERC20Module_HandleStrategy_OnlySpoke();
    _;
  }

  constructor(
    address _spoke
  ) {
    spoke = _spoke;
  }

  /// @inheritdoc ISettlementModule
  function handleMintStrategy(
    address _asset,
    address _recipient,
    address _fallbackRecipient,
    uint256 _amount,
    bytes calldata
  ) external onlySpoke returns (bool _success) {
    uint256 _limit = IXERC20(_asset).mintingCurrentLimitOf(address(this));
    if (_amount <= _limit) {
      try IXERC20(_asset).mint(_recipient, _amount) {
        _success = true;
      } catch {}
    }
    if (!_success) {
      mintable[_fallbackRecipient][_asset] += _amount;
      emit HandleMintStrategyFailed(_asset, _recipient, _amount);
    }
  }

  /// @inheritdoc ISettlementModule
  function handleBurnStrategy(address _asset, address _user, uint256 _amount, bytes calldata) external onlySpoke {
    uint256 _limit = IXERC20(_asset).burningMaxLimitOf(address(this));
    if (_limit < _amount) revert XERC20Module_HandleBurnStrategy_InsufficientBurningLimit(_asset, _limit, _amount);

    IXERC20(_asset).burn(_user, _amount);
  }

  /// @inheritdoc IXERC20Module
  function mintDebt(address _asset, address _recipient, uint256 _amount) external {
    uint256 _limit = IXERC20(_asset).mintingMaxLimitOf(address(this));

    if (_limit < _amount) revert XERC20Module_MintDebt_InsufficientMintingLimit(_asset, _limit, _amount);

    mintable[_recipient][_asset] -= _amount;
    IXERC20(_asset).mint(_recipient, _amount);

    emit DebtMinted(_asset, _recipient, _amount);
  }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;

/**
 * @title ISettlementModule
 * @notice Interface for the base settlement module
 */
interface ISettlementModule {
  /*///////////////////////////////////////////////////////////////
                              LOGIC
  //////////////////////////////////////////////////////////////*/

  /**
   * @notice Handle a mint action for a specific strategy
   * @param _asset The address of the asset to mint
   * @param _recipient The recipient of the minted assets
   * @param _fallbackRecipient The fallback recipient of the minted assets (in case of failure)
   * @param _amount The amount to mint
   * @param _data Extra data needed by some modules
   * @return _success The outcome of the minting strategy
   * @dev In case of failure, the parent module will handle the operation accordingly
   */
  function handleMintStrategy(
    address _asset,
    address _recipient,
    address _fallbackRecipient,
    uint256 _amount,
    bytes calldata _data
  ) external returns (bool _success);

  /**
   * @notice Handle a burn action for a specific strategy
   * @param _asset The address of the asset to burn
   * @param _user The user whose assets are being burned
   * @param _amount The amount to burn
   * @param _data Extra data needed by some modules
   * @dev In case of failure, the `newIntent` flow will revert
   */
  function handleBurnStrategy(address _asset, address _user, uint256 _amount, bytes calldata _data) external;
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.4 <0.9.0;

interface IXERC20 {
  /**
   * @notice Contains the full minting and burning data for a particular bridge
   *
   * @param minterParams The minting parameters for the bridge
   * @param burnerParams The burning parameters for the bridge
   */
  struct Bridge {
    BridgeParameters minterParams;
    BridgeParameters burnerParams;
  }

  /**
   * @notice Contains the mint or burn parameters for a bridge
   *
   * @param timestamp The timestamp of the last mint/burn
   * @param ratePerSecond The rate per second of the bridge
   * @param maxLimit The max limit of the bridge
   * @param currentLimit The current limit of the bridge
   */
  struct BridgeParameters {
    uint256 timestamp;
    uint256 ratePerSecond;
    uint256 maxLimit;
    uint256 currentLimit;
  }

  /**
   * @notice Emits when a lockbox is set
   *
   * @param _lockbox The address of the lockbox
   */
  event LockboxSet(address _lockbox);

  /**
   * @notice Emits when a limit is set
   *
   * @param _mintingLimit The updated minting limit we are setting to the bridge
   * @param _burningLimit The updated burning limit we are setting to the bridge
   * @param _bridge The address of the bridge we are setting the limit too
   */
  event BridgeLimitsSet(uint256 _mintingLimit, uint256 _burningLimit, address indexed _bridge);

  /**
   * @notice Reverts when a user with too low of a limit tries to call mint/burn
   */
  error IXERC20_NotHighEnoughLimits();

  /**
   * @notice Reverts when caller is not the factory
   */
  error IXERC20_NotFactory();

  /**
   * @notice Reverts when limits are too high
   */
  error IXERC20_LimitsTooHigh();

  /**
   * @notice Sets the lockbox address
   *
   * @param _lockbox The address of the lockbox
   */
  function setLockbox(
    address _lockbox
  ) external;

  /**
   * @notice Updates the limits of any bridge
   * @dev Can only be called by the owner
   * @param _mintingLimit The updated minting limit we are setting to the bridge
   * @param _burningLimit The updated burning limit we are setting to the bridge
   * @param _bridge The address of the bridge we are setting the limits too
   */
  function setLimits(address _bridge, uint256 _mintingLimit, uint256 _burningLimit) external;

  /**
   * @notice Mints tokens for a user
   * @dev Can only be called by a minter
   * @param _user The address of the user who needs tokens minted
   * @param _amount The amount of tokens being minted
   */
  function mint(address _user, uint256 _amount) external;

  /**
   * @notice Burns tokens for a user
   * @dev Can only be called by a minter
   * @param _user The address of the user who needs tokens burned
   * @param _amount The amount of tokens being burned
   */
  function burn(address _user, uint256 _amount) external;

  /**
   * @notice Returns the max limit of a minter
   *
   * @param _minter The minter we are viewing the limits of
   *  @return _limit The limit the minter has
   */
  function mintingMaxLimitOf(
    address _minter
  ) external view returns (uint256 _limit);

  /**
   * @notice Returns the max limit of a bridge
   *
   * @param _bridge the bridge we are viewing the limits of
   * @return _limit The limit the bridge has
   */
  function burningMaxLimitOf(
    address _bridge
  ) external view returns (uint256 _limit);

  /**
   * @notice Returns the current limit of a minter
   *
   * @param _minter The minter we are viewing the limits of
   * @return _limit The limit the minter has
   */
  function mintingCurrentLimitOf(
    address _minter
  ) external view returns (uint256 _limit);

  /**
   * @notice Returns the current limit of a bridge
   *
   * @param _bridge the bridge we are viewing the limits of
   * @return _limit The limit the bridge has
   */
  function burningCurrentLimitOf(
    address _bridge
  ) external view returns (uint256 _limit);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;

import {ISettlementModule} from 'interfaces/common/ISettlementModule.sol';

/**
 * @title Interface
 * @notice Interface for
 */
interface IXERC20Module is ISettlementModule {
  /*///////////////////////////////////////////////////////////////
                              EVENTS
  //////////////////////////////////////////////////////////////*/

  /**
   * @notice Emitted when debt is minted in favor of a user
   * @param _asset The address of the minted asset
   * @param _recipient The address of the minted tokens recipient
   * @param _amount The amount of tokens minted
   */
  event DebtMinted(address indexed _asset, address indexed _recipient, uint256 _amount);

  /**
   * @notice Emitted when the handle mint strategy fails
   * @param _asset The address of the minted asset
   * @param _recipient The address of the minted tokens recipient
   * @param _amount The amount of tokens minted
   */
  event HandleMintStrategyFailed(address indexed _asset, address indexed _recipient, uint256 _amount);

  /*///////////////////////////////////////////////////////////////
                              ERRORS
  //////////////////////////////////////////////////////////////*/

  /**
   * @notice Thrown when the XERC20 minting limit is lower than the amount being minted
   * @param _asset The address of the asset
   * @param _limit The hit limit
   * @param _amount The amount trying to be minted
   */
  error XERC20Module_MintDebt_InsufficientMintingLimit(address _asset, uint256 _limit, uint256 _amount);

  /**
   * @notice Thrown when the XERC20 burning limit is lower than the amount being burned
   * @param _asset The address of the asset
   * @param _limit The hit limit
   * @param _amount The amount trying to be burned
   */
  error XERC20Module_HandleBurnStrategy_InsufficientBurningLimit(address _asset, uint256 _limit, uint256 _amount);

  /**
   * @notice Thrown when the caller is not the `EverclearSpoke`
   */
  error XERC20Module_HandleStrategy_OnlySpoke();

  /*///////////////////////////////////////////////////////////////
                              LOGIC
  //////////////////////////////////////////////////////////////*/

  /**
   * @notice Mints owed assets to an account
   * @param _asset The address of the asset to mint
   * @param _recipient The recipient of the minted assets
   * @param _amount The amount to mint
   */
  function mintDebt(address _asset, address _recipient, uint256 _amount) external;

  /*///////////////////////////////////////////////////////////////
                              VIEWS
  //////////////////////////////////////////////////////////////*/

  /**
   * @notice Returns the address of the local `EverclearSpoke`
   * @return _spoke The address of the `EverclearSpoke`
   */
  function spoke() external view returns (address _spoke);

  /**
   * @notice Returns the amount of tokens mintable by a user
   * @param _account The address of the owed user
   * @param _asset The address of the mintable asset
   * @return _amount The total mintable amount
   */
  function mintable(address _account, address _asset) external view returns (uint256 _amount);
}

Settings
{
  "remappings": [
    "ds-test/=../../node_modules/ds-test/src/",
    "forge-std/=../../node_modules/forge-std/src/",
    "isolmate/=../../node_modules/isolmate/src/",
    "@hyperlane/=../../node_modules/@hyperlane-xyz/core/contracts/",
    "@openzeppelin/=../../node_modules/@openzeppelin/",
    "@upgrades/=lib/openzeppelin-foundry-upgrades/src/",
    "xerc20/=lib/xerc20/solidity/contracts/",
    "contracts/=src/contracts/",
    "interfaces/=src/interfaces/",
    "utils/=script/utils/",
    "@eth-optimism/=../../node_modules/@eth-optimism/",
    "@hyperlane-xyz/=../../node_modules/@hyperlane-xyz/",
    "@layerzerolabs/=../../node_modules/@layerzerolabs/",
    "erc4626-tests/=lib/xerc20/lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-gas-snapshot/=lib/xerc20/lib/permit2/lib/forge-gas-snapshot/src/",
    "fx-portal/=../../node_modules/fx-portal/",
    "hardhat/=lib/openzeppelin-foundry-upgrades/node_modules/hardhat/",
    "openzeppelin-contracts/=lib/xerc20/lib/openzeppelin-contracts/",
    "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
    "openzeppelin/=lib/xerc20/lib/openzeppelin-contracts/contracts/",
    "permit2/=lib/xerc20/lib/permit2/",
    "prb-test/=lib/xerc20/lib/prb-test/src/",
    "prb/test/=lib/xerc20/lib/prb-test/src/",
    "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/",
    "solmate/=lib/xerc20/lib/permit2/lib/solmate/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_spoke","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_limit","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"XERC20Module_HandleBurnStrategy_InsufficientBurningLimit","type":"error"},{"inputs":[],"name":"XERC20Module_HandleStrategy_OnlySpoke","type":"error"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_limit","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"XERC20Module_MintDebt_InsufficientMintingLimit","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_asset","type":"address"},{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"DebtMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_asset","type":"address"},{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"HandleMintStrategyFailed","type":"event"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"handleBurnStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"address","name":"_fallbackRecipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"handleMintStrategy","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_asset","type":"address"}],"name":"mintable","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spoke","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052348015600f57600080fd5b50604051610a7f380380610a7f833981016040819052602c916050565b600180546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6109f28061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806355389fb01161005057806355389fb0146100ec5780638cad6e771461010f578063f3a9a59e1461012457600080fd5b806304b4d1fb1461006c57806347bfbcc6146100a7575b600080fd5b61009461007a3660046107a2565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b6001546100c79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009e565b6100ff6100fa36600461081e565b610137565b604051901515815260200161009e565b61012261011d36600461089d565b610371565b005b6101226101323660046108d9565b6105a5565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331461018b576040517f5e28321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f651fd26800000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff89169063651fd26890602401602060405180830381865afa1580156101f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021c9190610948565b90508085116102b0576040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528916906340c10f1990604401600060405180830381600087803b15801561029557600080fd5b505af19250505080156102a6575060015b156102b057600191505b816103665773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938c16835292905290812080548792906102f7908490610990565b925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f471d6aaacf1235d0caa925387363751a53c3eae2c8fc2f0a39cc89d23f7170048760405161035d91815260200190565b60405180910390a35b509695505050505050565b6040517f0c05f82c00000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff851690630c05f82c90602401602060405180830381865afa1580156103de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104029190610948565b905081811015610469576040517f29b0606800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600090815260208181526040808320938816835292905290812080548492906104ab9084906109a9565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490528516906340c10f1990604401600060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f582189f7394b93e93476738fd1de7cf483e1f99dfb27e00a7c345a393eefe18c8460405161059791815260200190565b60405180910390a350505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105f6576040517f5e28321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc1eb713700000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff87169063c1eb713790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106879190610948565b9050838110156106e9576040517f2609e7ff00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610460565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052871690639dc29fac90604401600060405180830381600087803b15801561075957600080fd5b505af115801561076d573d6000803e3d6000fd5b50505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079d57600080fd5b919050565b600080604083850312156107b557600080fd5b6107be83610779565b91506107cc60208401610779565b90509250929050565b60008083601f8401126107e757600080fd5b50813567ffffffffffffffff8111156107ff57600080fd5b60208301915083602082850101111561081757600080fd5b9250929050565b60008060008060008060a0878903121561083757600080fd5b61084087610779565b955061084e60208801610779565b945061085c60408801610779565b935060608701359250608087013567ffffffffffffffff81111561087f57600080fd5b61088b89828a016107d5565b979a9699509497509295939492505050565b6000806000606084860312156108b257600080fd5b6108bb84610779565b92506108c960208501610779565b9150604084013590509250925092565b6000806000806000608086880312156108f157600080fd5b6108fa86610779565b945061090860208701610779565b935060408601359250606086013567ffffffffffffffff81111561092b57600080fd5b610937888289016107d5565b969995985093965092949392505050565b60006020828403121561095a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156109a3576109a3610961565b92915050565b818103818111156109a3576109a361096156fea2646970667358221220dc5fefc55056e4988805c4147574dd4e84fd9bef0a08a8d2a4c08aa01d5688a664736f6c63430008190033000000000000000000000000a05a3380889115bf313f1db9d5f335157be4d816

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100675760003560e01c806355389fb01161005057806355389fb0146100ec5780638cad6e771461010f578063f3a9a59e1461012457600080fd5b806304b4d1fb1461006c57806347bfbcc6146100a7575b600080fd5b61009461007a3660046107a2565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b6001546100c79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009e565b6100ff6100fa36600461081e565b610137565b604051901515815260200161009e565b61012261011d36600461089d565b610371565b005b6101226101323660046108d9565b6105a5565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331461018b576040517f5e28321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f651fd26800000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff89169063651fd26890602401602060405180830381865afa1580156101f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021c9190610948565b90508085116102b0576040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528916906340c10f1990604401600060405180830381600087803b15801561029557600080fd5b505af19250505080156102a6575060015b156102b057600191505b816103665773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938c16835292905290812080548792906102f7908490610990565b925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f471d6aaacf1235d0caa925387363751a53c3eae2c8fc2f0a39cc89d23f7170048760405161035d91815260200190565b60405180910390a35b509695505050505050565b6040517f0c05f82c00000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff851690630c05f82c90602401602060405180830381865afa1580156103de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104029190610948565b905081811015610469576040517f29b0606800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600090815260208181526040808320938816835292905290812080548492906104ab9084906109a9565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490528516906340c10f1990604401600060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f582189f7394b93e93476738fd1de7cf483e1f99dfb27e00a7c345a393eefe18c8460405161059791815260200190565b60405180910390a350505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105f6576040517f5e28321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc1eb713700000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff87169063c1eb713790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106879190610948565b9050838110156106e9576040517f2609e7ff00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610460565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052871690639dc29fac90604401600060405180830381600087803b15801561075957600080fd5b505af115801561076d573d6000803e3d6000fd5b50505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079d57600080fd5b919050565b600080604083850312156107b557600080fd5b6107be83610779565b91506107cc60208401610779565b90509250929050565b60008083601f8401126107e757600080fd5b50813567ffffffffffffffff8111156107ff57600080fd5b60208301915083602082850101111561081757600080fd5b9250929050565b60008060008060008060a0878903121561083757600080fd5b61084087610779565b955061084e60208801610779565b945061085c60408801610779565b935060608701359250608087013567ffffffffffffffff81111561087f57600080fd5b61088b89828a016107d5565b979a9699509497509295939492505050565b6000806000606084860312156108b257600080fd5b6108bb84610779565b92506108c960208501610779565b9150604084013590509250925092565b6000806000806000608086880312156108f157600080fd5b6108fa86610779565b945061090860208701610779565b935060408601359250606086013567ffffffffffffffff81111561092b57600080fd5b610937888289016107d5565b969995985093965092949392505050565b60006020828403121561095a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156109a3576109a3610961565b92915050565b818103818111156109a3576109a361096156fea2646970667358221220dc5fefc55056e4988805c4147574dd4e84fd9bef0a08a8d2a4c08aa01d5688a664736f6c63430008190033

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

000000000000000000000000a05A3380889115bf313f1Db9d5f335157Be4D816

-----Decoded View---------------
Arg [0] : _spoke (address): 0xa05A3380889115bf313f1Db9d5f335157Be4D816

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


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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