Source Code
Overview
GLMR Balance
GLMR Value
$0.00Latest 12 from a total of 12 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Create | 3004248 | 1073 days ago | IN | 0 GLMR | 0.25140585 | ||||
| Create | 2638393 | 1125 days ago | IN | 0 GLMR | 0.2513888 | ||||
| Set OA | 2614845 | 1129 days ago | IN | 0 GLMR | 0.0047354 | ||||
| Set OA | 2614843 | 1129 days ago | IN | 0 GLMR | 0.0047378 | ||||
| Set OA | 2614840 | 1129 days ago | IN | 0 GLMR | 0.0047366 | ||||
| Set OA | 2614838 | 1129 days ago | IN | 0 GLMR | 0.004739 | ||||
| Set OA | 2614836 | 1129 days ago | IN | 0 GLMR | 0.004739 | ||||
| Set OA | 2614834 | 1129 days ago | IN | 0 GLMR | 0.0047378 | ||||
| Set OA | 2614832 | 1129 days ago | IN | 0 GLMR | 0.0047402 | ||||
| Set OA | 2614830 | 1129 days ago | IN | 0 GLMR | 0.004733 | ||||
| Set OA | 2614828 | 1129 days ago | IN | 0 GLMR | 0.004739 | ||||
| Set Repository | 2607808 | 1130 days ago | IN | 0 GLMR | 0.0068489 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CollectionFactory
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
// omnisea-contracts v1.1
pragma solidity ^0.8.7;
import "../interfaces/ICollectionsRepository.sol";
import "../interfaces/IOmniApp.sol";
import "../interfaces/IOmnichainRouter.sol";
import "../interfaces/IOmniseaPointsRepository.sol";
import { CreateParams } from "../structs/erc721/ERC721Structs.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
/**
* @title CollectionFactory
* @author Omnisea
* @custom:version 1.0
* @notice CollectionFactory is ERC721 collection creation service.
* Contract is responsible for validating and executing the function that creates ERC721 collection.
* Enables delegation of cross-chain collection creation via Omnichain Router which abstracts underlying cross-chain messaging.
* messaging protocols such as LayerZero and Axelar Network.
* With the TokenFactory contract, it is designed to avoid burn & mint mechanism to keep NFT's non-fungibility,
* on-chain history, and references to contracts. It supports cross-chain actions instead of ERC721 "transfer",
* and allows simultaneous actions from many chains, without requiring the NFT presence on the same chain as
* the user performing the action (e.g. mint).
*/
contract CollectionFactory is IOmniApp, Ownable {
event OmReceived(string srcChain, address srcOA);
address public repository;
string public chainName;
mapping(string => address) public remoteChainToOA;
ICollectionsRepository private _collectionsRepository;
IOmnichainRouter public omnichainRouter;
IOmniseaPointsRepository public pointsRepository;
address private _redirectionsBudgetManager;
/**
* @notice Sets the contract owner, router, and indicates source chain name for mappings.
*
* @param _router A contract that handles cross-chain messaging used to extend ERC721 with omnichain capabilities.
*/
constructor(IOmnichainRouter _router) {
chainName = "Moonbeam";
omnichainRouter = _router;
_redirectionsBudgetManager = address(0x61104fBe07ecc735D8d84422c7f045f8d29DBf15);
}
/**
* @notice Sets the Collection Repository responsible for creating ERC721 contract and storing reference.
*
* @param repo The CollectionsRepository contract address.
*/
function setRepository(address repo) external onlyOwner {
_collectionsRepository = ICollectionsRepository(repo);
repository = repo;
}
function setRouter(IOmnichainRouter _router) external onlyOwner {
omnichainRouter = _router;
}
function setRedirectionsBudgetManager(address _newManager) external onlyOwner {
_redirectionsBudgetManager = _newManager;
}
function setChainName(string memory _chainName) external onlyOwner {
chainName = _chainName;
}
function setPointsRepository(IOmniseaPointsRepository _pointsRepository) external onlyOwner {
pointsRepository = _pointsRepository;
}
/**
* @notice Handles the ERC721 collection creation logic.
* Validates data and delegates contract creation to repository.
* Delegates task to the Omnichain Router based on the varying chainName and dstChainName.
*
* @param params See CreateParams struct in ERC721Structs.sol.
*/
function create(CreateParams calldata params) public payable {
require(bytes(params.name).length >= 2);
if (params.points > 0) {
require(address(pointsRepository) != address(0), "!pointsRepository");
pointsRepository.subtract(msg.sender, params.points);
}
if (keccak256(bytes(params.dstChainName)) == keccak256(bytes(chainName))) {
_collectionsRepository.create(params, msg.sender);
return;
}
require(isOA(params.dstChainName, remoteChainToOA[params.dstChainName]), "!OA");
omnichainRouter.send{value : msg.value}(
params.dstChainName,
remoteChainToOA[params.dstChainName],
abi.encode(params, msg.sender),
params.gas,
msg.sender,
params.redirectFee
);
}
/**
* @notice Handles the incoming ERC721 collection creation task from other chains received from Omnichain Router.
* Validates User Application.
* @param _payload Encoded CreateParams data.
* @param srcOA Address of the remote OA.
* @param srcChain Name of the remote OA chain.
*/
function omReceive(bytes calldata _payload, address srcOA, string memory srcChain) external override {
emit OmReceived(srcChain, srcOA);
require(isOA(srcChain, srcOA), "!OA");
(CreateParams memory params, address creator) = abi.decode(_payload, (CreateParams, address));
_collectionsRepository.create(
params,
creator
);
}
/**
* @notice Sets the remote Omnichain Applications ("OA") addresses to meet omReceive() validation.
*
* @param remoteChainName Name of the remote chain.
* @param remoteOA Address of the remote OA.
*/
function setOA(string calldata remoteChainName, address remoteOA) external onlyOwner {
remoteChainToOA[remoteChainName] = remoteOA;
}
/**
* @notice Checks the presence of the selected remote User Application ("OA").
*
* @param remoteChainName Name of the remote chain.
* @param remoteOA Address of the remote OA.
*/
function isOA(string memory remoteChainName, address remoteOA) public view returns (bool) {
return remoteOA != address(0) && remoteChainToOA[remoteChainName] == remoteOA;
}
function withdrawOARedirectFees() external onlyOwner {
omnichainRouter.withdrawOARedirectFees(_redirectionsBudgetManager);
}
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
import {CreateParams} from "../structs/erc721/ERC721Structs.sol";
interface ICollectionsRepository {
/**
* @notice Creates ERC721 collection contract and stores the reference to it with relation to a creator.
*
* @param params See CreateParams struct in ERC721Structs.sol.
* @param creator The address of the collection creator.
*/
function create(CreateParams calldata params, address creator) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
interface IOmniApp {
/**
* @notice Handles the incoming tasks from other chains received from Omnichain Router.
*
* @param _payload Encoded MintParams data.
* @param srcOA Address of the remote OA.
* @param srcChain Name of the remote OA chain.
*/
function omReceive(bytes calldata _payload, address srcOA, string memory srcChain) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
interface IOmnichainRouter {
/**
* @notice Delegates the cross-chain task to the Omnichain Router.
*
* @param dstChainName Name of the remote chain.
* @param dstUA Address of the remote User Application ("UA").
* @param fnData Encoded payload with a data for a target function execution.
* @param gas Cross-chain task (tx) execution gas limit
* @param user Address of the user initiating the cross-chain task (for gas refund)
* @param redirectFee Fee required to cover transaction fee on the redirectChain, if involved. OmnichainRouter-specific.
* Involved during cross-chain multi-protocol routing. For example, Optimism (LayerZero) to Moonbeam (Axelar).
*/
function send(string memory dstChainName, address dstUA, bytes memory fnData, uint gas, address user, uint256 redirectFee) external payable;
/**
* @notice Router on source chain receives redirect fee on payable send() function call. This fee is accounted to srcUARedirectBudget.
* here, msg.sender is that srcUA. srcUA contract should implement this function and point the address below which manages redirection budget.
*
* @param redirectionBudgetManager Address pointed by the srcUA (msg.sender) executing this function.
* Responsible for funding srcUA redirection budget.
*/
function withdrawOARedirectFees(address redirectionBudgetManager) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
interface IOmniseaPointsRepository {
function add(address _receiver, uint256 _quantity) external;
function subtract(address _receiver, uint256 _quantity) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/**
* @notice Parameters for ERC721 collection creation.
*
* @param dstChainName Name of the destination chain.
* @param name Name of the collection.
* @param uri URI to collection's metadata.
* @param fileURI URI of the file linked with the collection.
* @param price Price for a single ERC721 mint.
* @param assetName Mapping name of the ERC20 being a currency for the minting price.
* @param from Minting start date.
* @param to Minting end date.
* @param tokensURI CID of the NFTs metadata directory.
* @param maxSupply Collection's max supply. Unlimited if 0.
* @param isZeroIndexed First token ID.
* @param gas Cross-chain task (tx) execution gas limit
* @param redirectFee Fee required to cover transaction fee on the redirectChain, if involved. OmnichainRouter-specific.
* Involved during cross-chain multi-protocol routing. For example, Optimism (LayerZero) to Moonbeam (Axelar).
*/
struct CreateParams {
string dstChainName;
string name;
string uri;
uint256 price;
string assetName;
uint256 from;
uint256 to;
string tokensURI;
uint256 maxSupply;
bool isZeroIndexed;
uint256 points;
uint gas;
uint256 redirectFee;
}
/**
* @notice Parameters for ERC721 mint.
*
* @param dstChainName Name of the destination (NFT's) chain.
* @param coll Address of the collection.
* @param mintPrice Price for the ERC721 mint. Used during cross-chain mint for locking purpose. Validated on the dstChain.
* @param assetName Mapping name of the ERC20 being a currency for the minting price.
* @param creator Address of the creator.
* @param gas Cross-chain task (tx) execution gas limit
* @param redirectFee Fee required to cover transaction fee on the redirectChain, if involved. OmnichainRouter-specific.
* Involved during cross-chain multi-protocol routing. For example, Optimism (LayerZero) to Moonbeam (Axelar).
*/
struct MintParams {
string dstChainName;
address coll;
uint256 mintPrice;
string assetName;
uint256 quantity;
address creator;
bytes32[] merkleProof;
uint256 gas;
uint256 redirectFee;
}
/**
* @notice Asset supported for omnichain minting.
*
* @param dstChainName Name of the destination (NFT's) chain.
* @param coll Address of the collection.
*/
struct Asset {
IERC20 token;
uint256 decimals;
}
struct Allowlist {
uint256 maxPerAddress;
uint256 maxPerAddressPublic;
uint256 publicFrom;
uint256 price;
bytes32 merkleRoot;
bool isEnabled;
}{
"optimizer": {
"enabled": true,
"runs": 1
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IOmnichainRouter","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"srcChain","type":"string"},{"indexed":false,"internalType":"address","name":"srcOA","type":"address"}],"name":"OmReceived","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"},{"inputs":[],"name":"chainName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"dstChainName","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"string","name":"assetName","type":"string"},{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"string","name":"tokensURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"bool","name":"isZeroIndexed","type":"bool"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"redirectFee","type":"uint256"}],"internalType":"struct CreateParams","name":"params","type":"tuple"}],"name":"create","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"remoteChainName","type":"string"},{"internalType":"address","name":"remoteOA","type":"address"}],"name":"isOA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"address","name":"srcOA","type":"address"},{"internalType":"string","name":"srcChain","type":"string"}],"name":"omReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"omnichainRouter","outputs":[{"internalType":"contract IOmnichainRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointsRepository","outputs":[{"internalType":"contract IOmniseaPointsRepository","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"remoteChainToOA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"repository","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_chainName","type":"string"}],"name":"setChainName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"remoteChainName","type":"string"},{"internalType":"address","name":"remoteOA","type":"address"}],"name":"setOA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOmniseaPointsRepository","name":"_pointsRepository","type":"address"}],"name":"setPointsRepository","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newManager","type":"address"}],"name":"setRedirectionsBudgetManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"repo","type":"address"}],"name":"setRepository","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOmnichainRouter","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawOARedirectFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620018ab380380620018ab8339810160408190526200003491620001aa565b6200003f33620000b4565b604080518082019091526008808252674d6f6f6e6265616d60c01b6020909201918252620000709160029162000104565b50600580546001600160a01b039092166001600160a01b0319928316179055600780549091167361104fbe07ecc735d8d84422c7f045f8d29dbf1517905562000219565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200011290620001dc565b90600052602060002090601f01602090048101928262000136576000855562000181565b82601f106200015157805160ff191683800117855562000181565b8280016001018555821562000181579182015b828111156200018157825182559160200191906001019062000164565b506200018f92915062000193565b5090565b5b808211156200018f576000815560010162000194565b600060208284031215620001bd57600080fd5b81516001600160a01b0381168114620001d557600080fd5b9392505050565b600181811c90821680620001f157607f821691505b602082108114156200021357634e487b7160e01b600052602260045260246000fd5b50919050565b61168280620002296000396000f3fe6080604052600436106100dd5760003560e01c80631c93b03a146100e95780633fe0a987146101145780635801a99214610129578063715018a61461013e5780638da5cb5b146101535780638f52a69c1461017557806397e98d27146101a5578063a8704a1e146101c5578063b60a82ab14610206578063c0c41f2214610226578063c0d7865514610246578063cbd7847d14610266578063e5ca0e1d14610286578063e9176c60146102a6578063eaa32e3c146102c6578063f117c727146102e6578063f2fde38b14610306578063ffd6ca541461032657600080fd5b366100e457005b600080fd5b3480156100f557600080fd5b506100fe610346565b60405161010b9190611216565b60405180910390f35b610127610122366004610ed8565b6103d4565b005b34801561013557600080fd5b506101276106c3565b34801561014a57600080fd5b5061012761075a565b34801561015f57600080fd5b50610168610795565b60405161010b91906111ad565b34801561018157600080fd5b50610195610190366004610e87565b6107a4565b604051901515815260200161010b565b3480156101b157600080fd5b50600554610168906001600160a01b031681565b3480156101d157600080fd5b506101686101e0366004610e4b565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b34801561021257600080fd5b50600654610168906001600160a01b031681565b34801561023257600080fd5b50610127610241366004610e4b565b6107f5565b34801561025257600080fd5b50610127610261366004610d5b565b61083b565b34801561027257600080fd5b50610127610281366004610d78565b61088c565b34801561029257600080fd5b506101276102a1366004610d5b565b61096b565b3480156102b257600080fd5b50600154610168906001600160a01b031681565b3480156102d257600080fd5b506101276102e1366004610d5b565b6109bc565b3480156102f257600080fd5b50610127610301366004610d5b565b610a17565b34801561031257600080fd5b50610127610321366004610d5b565b610a68565b34801561033257600080fd5b50610127610341366004610df5565b610b08565b60028054610353906115e6565b80601f016020809104026020016040519081016040528092919081815260200182805461037f906115e6565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081565b60026103e36020830183611506565b905010156103f057600080fd5b610140810135156104b5576006546001600160a01b031661044c5760405162461bcd60e51b815260206004820152601160248201527021706f696e74735265706f7369746f727960781b60448201526064015b60405180910390fd5b600654604051633463588d60e11b815233600482015261014083013560248201526001600160a01b03909116906368c6b11a90604401600060405180830381600087803b15801561049c57600080fd5b505af11580156104b0573d6000803e3d6000fd5b505050505b60026040516104c491906110f5565b6040519081900390206104d78280611506565b6040516104e59291906110e5565b60405180910390201415610559576004805460405163dd59af5960e01b81526001600160a01b039091169163dd59af59916105249185913391016112a5565b600060405180830381600087803b15801561053e57600080fd5b505af1158015610552573d6000803e3d6000fd5b5050505050565b6105d56105668280611506565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600392506105a9915085905080611506565b6040516105b79291906110e5565b908152604051908190036020019020546001600160a01b03166107a4565b6105f15760405162461bcd60e51b815260040161044390611253565b6005546001600160a01b0316633626b3753461060d8480611506565b60036106198780611506565b6040516106279291906110e5565b90815260405160209181900382018120546001600160a01b0316916106509189913391016112a5565b604051602081830303815290604052876101600135338961018001356040518963ffffffff1660e01b815260040161068e97969594939291906111c1565b6000604051808303818588803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050505050565b336106cc610795565b6001600160a01b0316146106f25760405162461bcd60e51b815260040161044390611270565b6005546007546040516342288df960e11b81526001600160a01b03928316926384511bf292610726929116906004016111ad565b600060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b50505050565b33610763610795565b6001600160a01b0316146107895760405162461bcd60e51b815260040161044390611270565b6107936000610b7e565b565b6000546001600160a01b031690565b60006001600160a01b038216158015906107ee5750816001600160a01b03166003846040516107d39190611191565b908152604051908190036020019020546001600160a01b0316145b9392505050565b336107fe610795565b6001600160a01b0316146108245760405162461bcd60e51b815260040161044390611270565b8051610837906002906020840190610bce565b5050565b33610844610795565b6001600160a01b03161461086a5760405162461bcd60e51b815260040161044390611270565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b7f60cf18cff3490451c0453096daa47405f97c75e9449e175a7aff997f04f6b04f81836040516108bd929190611229565b60405180910390a16108cf81836107a4565b6108eb5760405162461bcd60e51b815260040161044390611253565b6000806108fa85870187610f13565b6004805460405163dd59af5960e01b81529395509193506001600160a01b039091169163dd59af59916109319186918691016113f1565b600060405180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b50505050505050505050565b33610974610795565b6001600160a01b03161461099a5760405162461bcd60e51b815260040161044390611270565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336109c5610795565b6001600160a01b0316146109eb5760405162461bcd60e51b815260040161044390611270565b600480546001600160a01b039092166001600160a01b0319928316811790915560018054909216179055565b33610a20610795565b6001600160a01b031614610a465760405162461bcd60e51b815260040161044390611270565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b33610a71610795565b6001600160a01b031614610a975760405162461bcd60e51b815260040161044390611270565b6001600160a01b038116610afc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610443565b610b0581610b7e565b50565b33610b11610795565b6001600160a01b031614610b375760405162461bcd60e51b815260040161044390611270565b8060038484604051610b4a9291906110e5565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054610bda906115e6565b90600052602060002090601f016020900481019282610bfc5760008555610c42565b82601f10610c1557805160ff1916838001178555610c42565b82800160010185558215610c42579182015b82811115610c42578251825591602001919060010190610c27565b50610c4e929150610c52565b5090565b5b80821115610c4e5760008155600101610c53565b8035610c7281611637565b919050565b80358015158114610c7257600080fd5b60008083601f840112610c9957600080fd5b5081356001600160401b03811115610cb057600080fd5b602083019150836020828501011115610cc857600080fd5b9250929050565b600082601f830112610ce057600080fd5b81356001600160401b0380821115610cfa57610cfa611621565b604051601f8301601f19908116603f01168101908282118183101715610d2257610d22611621565b81604052838152866020858801011115610d3b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215610d6d57600080fd5b81356107ee81611637565b60008060008060608587031215610d8e57600080fd5b84356001600160401b0380821115610da557600080fd5b610db188838901610c87565b909650945060208701359150610dc682611637565b90925060408601359080821115610ddc57600080fd5b50610de987828801610ccf565b91505092959194509250565b600080600060408486031215610e0a57600080fd5b83356001600160401b03811115610e2057600080fd5b610e2c86828701610c87565b9094509250506020840135610e4081611637565b809150509250925092565b600060208284031215610e5d57600080fd5b81356001600160401b03811115610e7357600080fd5b610e7f84828501610ccf565b949350505050565b60008060408385031215610e9a57600080fd5b82356001600160401b03811115610eb057600080fd5b610ebc85828601610ccf565b9250506020830135610ecd81611637565b809150509250929050565b600060208284031215610eea57600080fd5b81356001600160401b03811115610f0057600080fd5b82016101a081850312156107ee57600080fd5b60008060408385031215610f2657600080fd5b82356001600160401b0380821115610f3d57600080fd5b908401906101a08287031215610f5257600080fd5b610f5a61154c565b823582811115610f6957600080fd5b610f7588828601610ccf565b825250602083013582811115610f8a57600080fd5b610f9688828601610ccf565b602083015250604083013582811115610fae57600080fd5b610fba88828601610ccf565b60408301525060608301356060820152608083013582811115610fdc57600080fd5b610fe888828601610ccf565b60808301525060a083013560a082015260c083013560c082015260e08301358281111561101457600080fd5b61102088828601610ccf565b60e08301525061010083810135908201526101209150611041828401610c77565b91810191909152610140828101359082015261016080830135908201526101809182013591810191909152915061107a60208401610c67565b90509250929050565b6001600160a01b03169052565b600081518084526110a88160208601602086016115ba565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183823760009101908152919050565b600080835481600182811c91508083168061111157607f831692505b602080841082141561113157634e487b7160e01b86526022600452602486fd5b818015611145576001811461115657611183565b60ff19861689528489019650611183565b60008a81526020902060005b8681101561117b5781548b820152908501908301611162565b505084890196505b509498975050505050505050565b600082516111a38184602087016115ba565b9190910192915050565b6001600160a01b0391909116815260200190565b60c0815260006111d560c08301898b6110bc565b6001600160a01b03888116602085015283820360408501526111f78289611090565b60608501979097529490941660808301525060a0015250949350505050565b6020815260006107ee6020830184611090565b60408152600061123c6040830185611090565b905060018060a01b03831660208301529392505050565b602080825260039082015262214f4160e81b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6040815260006112b58485611575565b6101a08060408601526112cd6101e0860183856110bc565b92506112dc6020880188611575565b9250603f19808786030160608801526112f68585846110bc565b945061130560408a018a611575565b945091508087860301608088015261131e8585846110bc565b9450606089013560a088015261133760808a018a611575565b94509150808786030160c08801526113508585846110bc565b945060a089013560e0880152610100935060c08901358488015261137760e08a018a611575565b92506101208289880301818a01526113908785846110bc565b96506101409350858b0135848a01526113aa818c01610c77565b95505050506101606113bf8188018515159052565b908801356101808781019190915290880135918601919091528601356101c08501525090506107ee6020830184611083565b60408152600083516101a08060408501526114106101e0850183611090565b91506020860151603f198086850301606087015261142e8483611090565b9350604088015191508086850301608087015261144b8483611090565b9350606088015160a087015260808801519150808685030160c08701526114728483611090565b935060a088015160e087015260c08801519150610100828188015260e089015192506101208288870301818901526114aa8685611090565b9550818a0151935061014092508383890152808a0151935050506101606114d48188018415159052565b90880151610180878101919091529088015192860192909252508501516101c084015290506107ee6020830184611083565b6000808335601e1984360301811261151d57600080fd5b8301803591506001600160401b0382111561153757600080fd5b602001915036819003821315610cc857600080fd5b6040516101a081016001600160401b038111828210171561156f5761156f611621565b60405290565b6000808335601e1984360301811261158c57600080fd5b83016020810192503590506001600160401b038111156115ab57600080fd5b803603831315610cc857600080fd5b60005b838110156115d55781810151838201526020016115bd565b838111156107545750506000910152565b600181811c908216806115fa57607f821691505b6020821081141561161b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b0557600080fdfea264697066735822122064a61c0549d0acd9a50fe6a6806850fbcee916a71a7977c51cae9d3dc33fe6a264736f6c6343000807003300000000000000000000000089557e29812f1967dd40e087a9f8ba0073b5dd8a
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c80631c93b03a146100e95780633fe0a987146101145780635801a99214610129578063715018a61461013e5780638da5cb5b146101535780638f52a69c1461017557806397e98d27146101a5578063a8704a1e146101c5578063b60a82ab14610206578063c0c41f2214610226578063c0d7865514610246578063cbd7847d14610266578063e5ca0e1d14610286578063e9176c60146102a6578063eaa32e3c146102c6578063f117c727146102e6578063f2fde38b14610306578063ffd6ca541461032657600080fd5b366100e457005b600080fd5b3480156100f557600080fd5b506100fe610346565b60405161010b9190611216565b60405180910390f35b610127610122366004610ed8565b6103d4565b005b34801561013557600080fd5b506101276106c3565b34801561014a57600080fd5b5061012761075a565b34801561015f57600080fd5b50610168610795565b60405161010b91906111ad565b34801561018157600080fd5b50610195610190366004610e87565b6107a4565b604051901515815260200161010b565b3480156101b157600080fd5b50600554610168906001600160a01b031681565b3480156101d157600080fd5b506101686101e0366004610e4b565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b34801561021257600080fd5b50600654610168906001600160a01b031681565b34801561023257600080fd5b50610127610241366004610e4b565b6107f5565b34801561025257600080fd5b50610127610261366004610d5b565b61083b565b34801561027257600080fd5b50610127610281366004610d78565b61088c565b34801561029257600080fd5b506101276102a1366004610d5b565b61096b565b3480156102b257600080fd5b50600154610168906001600160a01b031681565b3480156102d257600080fd5b506101276102e1366004610d5b565b6109bc565b3480156102f257600080fd5b50610127610301366004610d5b565b610a17565b34801561031257600080fd5b50610127610321366004610d5b565b610a68565b34801561033257600080fd5b50610127610341366004610df5565b610b08565b60028054610353906115e6565b80601f016020809104026020016040519081016040528092919081815260200182805461037f906115e6565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081565b60026103e36020830183611506565b905010156103f057600080fd5b610140810135156104b5576006546001600160a01b031661044c5760405162461bcd60e51b815260206004820152601160248201527021706f696e74735265706f7369746f727960781b60448201526064015b60405180910390fd5b600654604051633463588d60e11b815233600482015261014083013560248201526001600160a01b03909116906368c6b11a90604401600060405180830381600087803b15801561049c57600080fd5b505af11580156104b0573d6000803e3d6000fd5b505050505b60026040516104c491906110f5565b6040519081900390206104d78280611506565b6040516104e59291906110e5565b60405180910390201415610559576004805460405163dd59af5960e01b81526001600160a01b039091169163dd59af59916105249185913391016112a5565b600060405180830381600087803b15801561053e57600080fd5b505af1158015610552573d6000803e3d6000fd5b5050505050565b6105d56105668280611506565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600392506105a9915085905080611506565b6040516105b79291906110e5565b908152604051908190036020019020546001600160a01b03166107a4565b6105f15760405162461bcd60e51b815260040161044390611253565b6005546001600160a01b0316633626b3753461060d8480611506565b60036106198780611506565b6040516106279291906110e5565b90815260405160209181900382018120546001600160a01b0316916106509189913391016112a5565b604051602081830303815290604052876101600135338961018001356040518963ffffffff1660e01b815260040161068e97969594939291906111c1565b6000604051808303818588803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050505050565b336106cc610795565b6001600160a01b0316146106f25760405162461bcd60e51b815260040161044390611270565b6005546007546040516342288df960e11b81526001600160a01b03928316926384511bf292610726929116906004016111ad565b600060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b50505050565b33610763610795565b6001600160a01b0316146107895760405162461bcd60e51b815260040161044390611270565b6107936000610b7e565b565b6000546001600160a01b031690565b60006001600160a01b038216158015906107ee5750816001600160a01b03166003846040516107d39190611191565b908152604051908190036020019020546001600160a01b0316145b9392505050565b336107fe610795565b6001600160a01b0316146108245760405162461bcd60e51b815260040161044390611270565b8051610837906002906020840190610bce565b5050565b33610844610795565b6001600160a01b03161461086a5760405162461bcd60e51b815260040161044390611270565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b7f60cf18cff3490451c0453096daa47405f97c75e9449e175a7aff997f04f6b04f81836040516108bd929190611229565b60405180910390a16108cf81836107a4565b6108eb5760405162461bcd60e51b815260040161044390611253565b6000806108fa85870187610f13565b6004805460405163dd59af5960e01b81529395509193506001600160a01b039091169163dd59af59916109319186918691016113f1565b600060405180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b50505050505050505050565b33610974610795565b6001600160a01b03161461099a5760405162461bcd60e51b815260040161044390611270565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336109c5610795565b6001600160a01b0316146109eb5760405162461bcd60e51b815260040161044390611270565b600480546001600160a01b039092166001600160a01b0319928316811790915560018054909216179055565b33610a20610795565b6001600160a01b031614610a465760405162461bcd60e51b815260040161044390611270565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b33610a71610795565b6001600160a01b031614610a975760405162461bcd60e51b815260040161044390611270565b6001600160a01b038116610afc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610443565b610b0581610b7e565b50565b33610b11610795565b6001600160a01b031614610b375760405162461bcd60e51b815260040161044390611270565b8060038484604051610b4a9291906110e5565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054610bda906115e6565b90600052602060002090601f016020900481019282610bfc5760008555610c42565b82601f10610c1557805160ff1916838001178555610c42565b82800160010185558215610c42579182015b82811115610c42578251825591602001919060010190610c27565b50610c4e929150610c52565b5090565b5b80821115610c4e5760008155600101610c53565b8035610c7281611637565b919050565b80358015158114610c7257600080fd5b60008083601f840112610c9957600080fd5b5081356001600160401b03811115610cb057600080fd5b602083019150836020828501011115610cc857600080fd5b9250929050565b600082601f830112610ce057600080fd5b81356001600160401b0380821115610cfa57610cfa611621565b604051601f8301601f19908116603f01168101908282118183101715610d2257610d22611621565b81604052838152866020858801011115610d3b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215610d6d57600080fd5b81356107ee81611637565b60008060008060608587031215610d8e57600080fd5b84356001600160401b0380821115610da557600080fd5b610db188838901610c87565b909650945060208701359150610dc682611637565b90925060408601359080821115610ddc57600080fd5b50610de987828801610ccf565b91505092959194509250565b600080600060408486031215610e0a57600080fd5b83356001600160401b03811115610e2057600080fd5b610e2c86828701610c87565b9094509250506020840135610e4081611637565b809150509250925092565b600060208284031215610e5d57600080fd5b81356001600160401b03811115610e7357600080fd5b610e7f84828501610ccf565b949350505050565b60008060408385031215610e9a57600080fd5b82356001600160401b03811115610eb057600080fd5b610ebc85828601610ccf565b9250506020830135610ecd81611637565b809150509250929050565b600060208284031215610eea57600080fd5b81356001600160401b03811115610f0057600080fd5b82016101a081850312156107ee57600080fd5b60008060408385031215610f2657600080fd5b82356001600160401b0380821115610f3d57600080fd5b908401906101a08287031215610f5257600080fd5b610f5a61154c565b823582811115610f6957600080fd5b610f7588828601610ccf565b825250602083013582811115610f8a57600080fd5b610f9688828601610ccf565b602083015250604083013582811115610fae57600080fd5b610fba88828601610ccf565b60408301525060608301356060820152608083013582811115610fdc57600080fd5b610fe888828601610ccf565b60808301525060a083013560a082015260c083013560c082015260e08301358281111561101457600080fd5b61102088828601610ccf565b60e08301525061010083810135908201526101209150611041828401610c77565b91810191909152610140828101359082015261016080830135908201526101809182013591810191909152915061107a60208401610c67565b90509250929050565b6001600160a01b03169052565b600081518084526110a88160208601602086016115ba565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183823760009101908152919050565b600080835481600182811c91508083168061111157607f831692505b602080841082141561113157634e487b7160e01b86526022600452602486fd5b818015611145576001811461115657611183565b60ff19861689528489019650611183565b60008a81526020902060005b8681101561117b5781548b820152908501908301611162565b505084890196505b509498975050505050505050565b600082516111a38184602087016115ba565b9190910192915050565b6001600160a01b0391909116815260200190565b60c0815260006111d560c08301898b6110bc565b6001600160a01b03888116602085015283820360408501526111f78289611090565b60608501979097529490941660808301525060a0015250949350505050565b6020815260006107ee6020830184611090565b60408152600061123c6040830185611090565b905060018060a01b03831660208301529392505050565b602080825260039082015262214f4160e81b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6040815260006112b58485611575565b6101a08060408601526112cd6101e0860183856110bc565b92506112dc6020880188611575565b9250603f19808786030160608801526112f68585846110bc565b945061130560408a018a611575565b945091508087860301608088015261131e8585846110bc565b9450606089013560a088015261133760808a018a611575565b94509150808786030160c08801526113508585846110bc565b945060a089013560e0880152610100935060c08901358488015261137760e08a018a611575565b92506101208289880301818a01526113908785846110bc565b96506101409350858b0135848a01526113aa818c01610c77565b95505050506101606113bf8188018515159052565b908801356101808781019190915290880135918601919091528601356101c08501525090506107ee6020830184611083565b60408152600083516101a08060408501526114106101e0850183611090565b91506020860151603f198086850301606087015261142e8483611090565b9350604088015191508086850301608087015261144b8483611090565b9350606088015160a087015260808801519150808685030160c08701526114728483611090565b935060a088015160e087015260c08801519150610100828188015260e089015192506101208288870301818901526114aa8685611090565b9550818a0151935061014092508383890152808a0151935050506101606114d48188018415159052565b90880151610180878101919091529088015192860192909252508501516101c084015290506107ee6020830184611083565b6000808335601e1984360301811261151d57600080fd5b8301803591506001600160401b0382111561153757600080fd5b602001915036819003821315610cc857600080fd5b6040516101a081016001600160401b038111828210171561156f5761156f611621565b60405290565b6000808335601e1984360301811261158c57600080fd5b83016020810192503590506001600160401b038111156115ab57600080fd5b803603831315610cc857600080fd5b60005b838110156115d55781810151838201526020016115bd565b838111156107545750506000910152565b600181811c908216806115fa57607f821691505b6020821081141561161b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b0557600080fdfea264697066735822122064a61c0549d0acd9a50fe6a6806850fbcee916a71a7977c51cae9d3dc33fe6a264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000089557e29812f1967dd40e087a9f8ba0073b5dd8a
-----Decoded View---------------
Arg [0] : _router (address): 0x89557E29812f1967dd40E087A9f8BA0073B5DD8A
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000089557e29812f1967dd40e087a9f8ba0073b5dd8a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in GLMR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.