Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 6 from a total of 6 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Register With Pa... | 15004861 | 1359 days ago | IN | 0 ETH | 0.15797855 | ||||
| Register With Pa... | 15004854 | 1359 days ago | IN | 0 ETH | 0.07713859 | ||||
| Register With Pa... | 15004844 | 1359 days ago | IN | 0 ETH | 0.09201934 | ||||
| Register With Pa... | 15004841 | 1359 days ago | IN | 0 ETH | 0.09228041 | ||||
| Register With Pa... | 15004839 | 1359 days ago | IN | 0 ETH | 0.06169895 | ||||
| Register With Pa... | 15004813 | 1359 days ago | IN | 0 ETH | 0.01047697 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WRLD_Name_Service_Registrar
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "./IWNS_Passes.sol";
import "./IWRLD_Name_Service_Registry.sol";
import "./StringUtils.sol";
contract WRLD_Name_Service_Registrar is Ownable, ReentrancyGuard {
using StringUtils for *;
/**
* @dev @iamarkdev was here
* */
IERC20 immutable wrld;
IWNS_Passes immutable whitelist;
IWRLD_Name_Service_Registry immutable registry;
uint256 private constant YEAR_SECONDS = 31536000;
uint256 private constant PREREGISTRATION_PASS_TYPE_ID = 2;
bool public registrationEnabled = false;
uint256[5] public annualWrldPrices = [ 1e70, 1e70, 20000 ether, 2000 ether, 500 ether ]; // $WRLD, 1 char to 5 chars
address private approvedWithdrawer;
constructor(address _registry, address _wrld, address _whitelist) {
registry = IWRLD_Name_Service_Registry(_registry);
wrld = IERC20(_wrld);
whitelist = IWNS_Passes(_whitelist);
}
/****************
* Registration *
****************/
function registerWithPass(string[] calldata _names) external nonReentrant {
bool senderIsOwner = msg.sender == owner();
if (!senderIsOwner) {
whitelist.burnTypeForOwnerAddress(PREREGISTRATION_PASS_TYPE_ID, _names.length, msg.sender);
}
uint16[] memory registrationYears = new uint16[](_names.length);
for (uint256 i = 0; i < _names.length; i++) {
registrationYears[i] = 1;
if (!senderIsOwner) {
require(getRegistrationPrice(_names[i]) < 1000000 ether, "Name not available for sale");
}
}
_register(_names, registrationYears, true);
}
function register(string[] calldata _names, uint16[] calldata _registrationYears) external nonReentrant {
require(registrationEnabled, "Registration is not enabled.");
_register(_names, _registrationYears, false);
}
function _register(string[] calldata _names, uint16[] memory _registrationYears, bool _free) private {
require(_names.length == _registrationYears.length, "Arg size mismatched");
uint256 sumPrice = 0;
for (uint256 i = 0; i < _names.length; i++) {
sumPrice += _registrationYears[i] * getRegistrationPrice(_names[i]);
}
registry.register(msg.sender, _names, _registrationYears);
if (!_free) {
wrld.transferFrom(msg.sender, address(this), sumPrice);
}
}
function getRegistrationPrice(string calldata _name) public view returns (uint price) {
uint len = _name.strlen();
if (len > 0 && len <= 5) {
price = annualWrldPrices[len-1];
} else if (len > 5) {
price = annualWrldPrices[4];
} else {
revert("Invalid name");
}
}
/*************
* Extension *
*************/
function extendRegistration(string[] calldata _names, uint16[] calldata _additionalYears) external nonReentrant {
require(_names.length == _additionalYears.length, "Arg size mismatched");
uint256 sumPrice = 0;
for (uint256 i = 0; i < _names.length; i++) {
sumPrice += _additionalYears[i] * getRegistrationPrice(_names[i]);
}
registry.extendRegistration(_names, _additionalYears);
wrld.transferFrom(msg.sender, address(this), sumPrice);
}
/*********
* Owner *
*********/
function setAnnualWrldPrices(uint256[] memory _annualWrldPrices) external onlyOwner {
annualWrldPrices[0] = _annualWrldPrices[0];
annualWrldPrices[1] = _annualWrldPrices[1];
annualWrldPrices[2] = _annualWrldPrices[2];
annualWrldPrices[3] = _annualWrldPrices[3];
annualWrldPrices[4] = _annualWrldPrices[4];
}
function setApprovedWithdrawer(address _approvedWithdrawer) external onlyOwner {
approvedWithdrawer = _approvedWithdrawer;
}
function enableRegistration() external onlyOwner {
registrationEnabled = true;
}
/**************
* Withdrawal *
**************/
function withdrawWrld(address toAddress) external {
require(msg.sender == owner() || msg.sender == approvedWithdrawer, "Not approved to withdraw");
wrld.transfer(toAddress, wrld.balanceOf(address(this)));
}
}// 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 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @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 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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, 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 `from` to `to` 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 from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
interface IWNS_Passes is IERC1155 {
function burnTypeBulk(uint256 _typeId, address[] calldata owners) external;
function burnTypeForOwnerAddress(uint256 _typeId, uint256 _quantity, address _typeOwnerAddress) external returns (bool);
function mintTypeToAddress(uint256 _typeId, uint256 _quantity, address _toAddress) external returns (bool);
function bulkSafeTransfer(uint256 _typeId, uint256 _quantityPerRecipient, address[] calldata recipients) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
interface IWRLD_Name_Service_Registry is IERC165 {
function register(address _registerer, string[] calldata _names, uint16[] memory _registrationYears) external;
function extendRegistration(string[] calldata _names, uint16[] calldata _additionalYears) external;
function getNameTokenId(string calldata _name) external view returns (uint256);
event NameRegistered(string indexed idxName, string name, uint16 registrationYears);
event NameRegistrationExtended(string indexed idxName, string name, uint16 additionalYears);
event NameControllerUpdated(string indexed idxName, string name, address controller);
event ResolverStringRecordUpdated(string indexed idxName, string name, string record, string value, string typeOf, uint256 ttl, address resolver);
event ResolverAddressRecordUpdated(string indexed idxName, string name, string record, address value, uint256 ttl, address resolver);
event ResolverUintRecordUpdated(string indexed idxName, string name, string record, uint256 value, uint256 ttl, address resolver);
event ResolverIntRecordUpdated(string indexed idxName, string name, string record, int256 value, uint256 ttl, address resolver);
event ResolverStringEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, string value);
event ResolverAddressEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, address value);
event ResolverUintEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, uint256 value);
event ResolverIntEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, int256 value);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
library StringUtils {
/**
* @dev Returns the length of a given string
*
* @param s The string to measure the length of
* @return The length of the input string
*/
function strlen(string memory s) internal pure returns (uint256) {
uint len;
uint i = 0;
uint bytelength = bytes(s).length;
for (len = 0; i < bytelength; len++) {
bytes1 b = bytes(s)[i];
if (b < 0x80) {
i += 1;
} else if (b < 0xE0) {
i += 2;
} else if (b < 0xF0) {
i += 3;
} else if (b < 0xF8) {
i += 4;
} else if (b < 0xFC) {
i += 5;
} else {
i += 6;
}
}
return len;
}
/**
* @dev Checks the string for RFC3986 reserved characters.
* Includes a few more extra chars for security. Specifically, percent encoding is not allowed.
*
* @param s The string to check
* @return T/F
*/
function validateUriCharset(string memory s) internal pure returns (bool) {
uint len;
uint i = 0;
uint bytelength = bytes(s).length;
bytes1 b0 = bytes(s)[0];
if (b0==0x2d||b0==0x5f||b0==0x7e) { // not allowed: - _ ~
return false;
}
for (len = 0; i < bytelength; len++) {
bytes1 b = bytes(s)[i];
if (b < 0x80) {
i += 1;
if (b<0x2d||b==0x2e||b==0x2f||(b>=0x3a&&b<=0x40)||b==0x5b||b==0x5c||b==0x5d||b==0x5e||b==0x60||b==0x7b||b==0x7c||b==0x7d||b==0x7f) {
return false;
}
} else if (b < 0xE0) {
i += 2;
} else if (b < 0xF0) {
i += 3;
} else if (b < 0xF8) {
i += 4;
} else if (b < 0xFC) {
i += 5;
} else {
i += 6;
}
}
return true;
}
/**
* @dev Apply UTS-46 normalization to a string. (implementation deviates from the standard)
*
* @param s The string to normalize
* @return T/F
*/
function UTS46Normalize(string memory s) internal pure returns (string memory) {
uint len;
uint i = 0;
uint bytelength = bytes(s).length;
bytes1 b0 = bytes(s)[0];
if (b0==0x2d||b0==0x5f||b0==0x7e) { // not allowed in first position: - _ ~
revert("invalid charset");
}
for (len = 0; i < bytelength; len++) {
bytes1 b = bytes(s)[i];
if (b < 0x80) {
if (b<0x2d||b==0x2e||b==0x2f||(b>=0x3a&&b<=0x40)||b==0x5b||b==0x5c||b==0x5d||b==0x5e||b==0x60||b==0x7b||b==0x7c||b==0x7d||b==0x7f) {
revert("invalid charset");
}
if (b>=0x41&&b<=0x5a) {
bytes(s)[i] = bytes1(uint8(b) + 32);
}
i += 1;
} else if (b < 0xE0) {
i += 2;
} else if (b < 0xF0) {
i += 3;
} else if (b < 0xF8) {
i += 4;
} else if (b < 0xFC) {
i += 5;
} else {
i += 6;
}
}
return s;
}
}// 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
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*
* _Available since v3.1._
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] values
);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the amount of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
external
view
returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes calldata data
) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] calldata ids,
uint256[] calldata amounts,
bytes calldata data
) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"optimizer": {
"enabled": true,
"runs": 1000
},
"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":"address","name":"_registry","type":"address"},{"internalType":"address","name":"_wrld","type":"address"},{"internalType":"address","name":"_whitelist","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"annualWrldPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRegistration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"_names","type":"string[]"},{"internalType":"uint16[]","name":"_additionalYears","type":"uint16[]"}],"name":"extendRegistration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"getRegistrationPrice","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"_names","type":"string[]"},{"internalType":"uint16[]","name":"_registrationYears","type":"uint16[]"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"_names","type":"string[]"}],"name":"registerWithPass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registrationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_annualWrldPrices","type":"uint256[]"}],"name":"setAnnualWrldPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approvedWithdrawer","type":"address"}],"name":"setApprovedWithdrawer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddress","type":"address"}],"name":"withdrawWrld","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6002805460ff191690556101806040527d0172ebad6ddc73c86d67c5faa71c245689c107950240000000000000000060e08181526101009190915269043c33c193756480000061012052686c6b935b8bbd40000061014052681b1ae4d6e2ef50000061016052620000759060039060056200012d565b503480156200008357600080fd5b5060405162001a8038038062001a80833981016040819052620000a691620001af565b620000b133620000dd565b600180556001600160601b0319606093841b811660c05291831b821660805290911b1660a052620001f8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b826005810192821562000169579160200282015b828111156200016957825182906001600160f01b031690559160200191906001019062000141565b50620001779291506200017b565b5090565b5b808211156200017757600081556001016200017c565b80516001600160a01b0381168114620001aa57600080fd5b919050565b600080600060608486031215620001c4578283fd5b620001cf8462000192565b9250620001df6020850162000192565b9150620001ef6040850162000192565b90509250925092565b60805160601c60a05160601c60c05160601c61183a620002466000396000818161098b0152610fcd015260006104720152600081816102a501528181610a180152611061015261183a6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063c626347b11610066578063c626347b146101a1578063e7c08166146101b4578063f2b9b40f146101d1578063f2fde38b146101d957600080fd5b80638da5cb5b14610160578063b2c0ede81461017b578063bf4243391461018e57600080fd5b80635b3d2896116100bd5780635b3d289614610132578063715018a614610145578063811e8fa31461014d57600080fd5b806326c40bf8146100e4578063295c285b1461010a57806342a100ec1461011f575b600080fd5b6100f76100f2366004611587565b6101ec565b6040519081526020015b60405180910390f35b61011d610118366004611349565b610203565b005b61011d61012d366004611377565b6103cb565b61011d6101403660046113b7565b61064c565b61011d610734565b61011d61015b366004611349565b61079a565b6000546040516001600160a01b039091168152602001610101565b61011d6101893660046113b7565b610823565b61011d61019c366004611420565b610aaa565b6100f76101af366004611500565b610c8f565b6002546101c19060ff1681565b6040519015158152602001610101565b61011d610d7e565b61011d6101e7366004611349565b610de7565b600381600581106101fc57600080fd5b0154905081565b6000546001600160a01b031633148061022657506008546001600160a01b031633145b6102775760405162461bcd60e51b815260206004820152601860248201527f4e6f7420617070726f76656420746f207769746864726177000000000000000060448201526064015b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90839083906370a082319060240160206040518083038186803b1580156102f957600080fd5b505afa15801561030d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610331919061159f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c791906114e0565b5050565b6002600154141561041e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026e565b60026001556000546001600160a01b03163314806104f8576040517f14f329af00000000000000000000000000000000000000000000000000000000815260026004820152602481018390523360448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906314f329af90606401602060405180830381600087803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f691906114e0565b505b60008267ffffffffffffffff81111561052157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561054a578160200160208202803683370190505b50905060005b8381101561063457600182828151811061057a57634e487b7160e01b600052603260045260246000fd5b602002602001019061ffff16908161ffff1681525050826106225769d3c21bcecceda10000006105d58686848181106105c357634e487b7160e01b600052603260045260246000fd5b90506020028101906101af919061172a565b106106225760405162461bcd60e51b815260206004820152601b60248201527f4e616d65206e6f7420617661696c61626c6520666f722073616c650000000000604482015260640161026e565b8061062c816117bd565b915050610550565b506106428484836001610ec9565b5050600180555050565b6002600154141561069f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026e565b600260018190555460ff166106f65760405162461bcd60e51b815260206004820152601c60248201527f526567697374726174696f6e206973206e6f7420656e61626c65642e00000000604482015260640161026e565b610642848484848080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250610ec9915050565b6000546001600160a01b0316331461078e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b61079860006110ee565b565b6000546001600160a01b031633146107f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b6008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600260015414156108765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026e565b60026001558281146108ca5760405162461bcd60e51b815260206004820152601360248201527f4172672073697a65206d69736d61746368656400000000000000000000000000604482015260640161026e565b6000805b8481101561095a576108f98686838181106105c357634e487b7160e01b600052603260045260246000fd5b84848381811061091957634e487b7160e01b600052603260045260246000fd5b905060200201602081019061092e919061156d565b61ffff1661093c9190611787565b610946908361176f565b915080610952816117bd565b9150506108ce565b506040517fb2c0ede80000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b2c0ede8906109c69088908890889088906004016116da565b600060405180830381600087803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b50506040516323b872dd60e01b8152336004820152306024820152604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506323b872dd9150606401602060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9e91906114e0565b50506001805550505050565b6000546001600160a01b03163314610b045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b80600081518110610b2557634e487b7160e01b600052603260045260246000fd5b60200260200101516003600060058110610b4f57634e487b7160e01b600052603260045260246000fd5b0155805181906001908110610b7457634e487b7160e01b600052603260045260246000fd5b60200260200101516003600160058110610b9e57634e487b7160e01b600052603260045260246000fd5b0155805181906002908110610bc357634e487b7160e01b600052603260045260246000fd5b60200260200101516003600260058110610bed57634e487b7160e01b600052603260045260246000fd5b0155805181906003908110610c1257634e487b7160e01b600052603260045260246000fd5b602002602001015160038060058110610c3b57634e487b7160e01b600052603260045260246000fd5b0155805181906004908110610c6057634e487b7160e01b600052603260045260246000fd5b60200260200101516003600460058110610c8a57634e487b7160e01b600052603260045260246000fd5b015550565b600080610cd184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061114b92505050565b9050600081118015610ce4575060058111155b15610d1d576003610cf66001836117a6565b60058110610d1457634e487b7160e01b600052603260045260246000fd5b01549150610d77565b6005811115610d2f5760036004610d14565b60405162461bcd60e51b815260206004820152600c60248201527f496e76616c6964206e616d650000000000000000000000000000000000000000604482015260640161026e565b5092915050565b6000546001600160a01b03163314610dd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b6002805460ff19166001179055565b6000546001600160a01b03163314610e415760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b6001600160a01b038116610ebd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026e565b610ec6816110ee565b50565b81518314610f195760405162461bcd60e51b815260206004820152601360248201527f4172672073697a65206d69736d61746368656400000000000000000000000000604482015260640161026e565b6000805b84811015610f9c57610f488686838181106105c357634e487b7160e01b600052603260045260246000fd5b848281518110610f6857634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff16610f7e9190611787565b610f88908361176f565b915080610f94816117bd565b915050610f1d565b506040517fddba71540000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ddba715490611008903390899089908990600401611671565b600060405180830381600087803b15801561102257600080fd5b505af1158015611036573d6000803e3d6000fd5b50505050816110e7576040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401602060405180830381600087803b1580156110ad57600080fd5b505af11580156110c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e591906114e0565b505b5050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051600090819081905b808210156112df57600085838151811061117f57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191690507f80000000000000000000000000000000000000000000000000000000000000008110156111ca576111c360018461176f565b92506112cc565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611207576111c360028461176f565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611244576111c360038461176f565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611281576111c360048461176f565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156112be576111c360058461176f565b6112c960068461176f565b92505b50826112d7816117bd565b935050611155565b50909392505050565b60008083601f8401126112f9578081fd5b50813567ffffffffffffffff811115611310578182fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b803561ffff8116811461134457600080fd5b919050565b60006020828403121561135a578081fd5b81356001600160a01b0381168114611370578182fd5b9392505050565b60008060208385031215611389578081fd5b823567ffffffffffffffff81111561139f578182fd5b6113ab858286016112e8565b90969095509350505050565b600080600080604085870312156113cc578182fd5b843567ffffffffffffffff808211156113e3578384fd5b6113ef888389016112e8565b90965094506020870135915080821115611407578384fd5b50611414878288016112e8565b95989497509550505050565b60006020808385031215611432578182fd5b823567ffffffffffffffff80821115611449578384fd5b818501915085601f83011261145c578384fd5b81358181111561146e5761146e6117ee565b8060051b604051601f19603f83011681018181108582111715611493576114936117ee565b604052828152858101935084860182860187018a10156114b1578788fd5b8795505b838610156114d35780358552600195909501949386019386016114b5565b5098975050505050505050565b6000602082840312156114f1578081fd5b81518015158114611370578182fd5b60008060208385031215611512578182fd5b823567ffffffffffffffff80821115611529578384fd5b818501915085601f83011261153c578384fd5b81358181111561154a578485fd5b86602082850101111561155b578485fd5b60209290920196919550909350505050565b60006020828403121561157e578081fd5b61137082611332565b600060208284031215611598578081fd5b5035919050565b6000602082840312156115b0578081fd5b5051919050565b60008383855260208086019550808560051b83010184845b8781101561163b57848303601f19018952813536889003601e190181126115f4578687fd5b8701803567ffffffffffffffff81111561160c578788fd5b80360389131561161a578788fd5b6116278582888501611648565b9a86019a94505050908301906001016115cf565b5090979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0385168152600060206060818401526116956060840186886115b7565b8381036040850152845180825282860191830190845b818110156116cb57835161ffff16835292840192918401916001016116ab565b50909998505050505050505050565b6040815260006116ee6040830186886115b7565b82810360208481019190915284825285918101835b868110156114d35761ffff61171785611332565b1682529282019290820190600101611703565b6000808335601e19843603018112611740578283fd5b83018035915067ffffffffffffffff82111561175a578283fd5b60200191503681900382131561132b57600080fd5b60008219821115611782576117826117d8565b500190565b60008160001904831182151516156117a1576117a16117d8565b500290565b6000828210156117b8576117b86117d8565b500390565b60006000198214156117d1576117d16117d8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220aa6ef20262c6396c5bb073fa66450c6734c81b3c87c973fa07bcaeb08ae1f6c464736f6c63430008040033000000000000000000000000d17f3e694cbf9264a7da5ef4e31b2259ae925f7e000000000000000000000000d5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e9000000000000000000000000605757a5cceb44ced7a5be421735e0151333c338
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063c626347b11610066578063c626347b146101a1578063e7c08166146101b4578063f2b9b40f146101d1578063f2fde38b146101d957600080fd5b80638da5cb5b14610160578063b2c0ede81461017b578063bf4243391461018e57600080fd5b80635b3d2896116100bd5780635b3d289614610132578063715018a614610145578063811e8fa31461014d57600080fd5b806326c40bf8146100e4578063295c285b1461010a57806342a100ec1461011f575b600080fd5b6100f76100f2366004611587565b6101ec565b6040519081526020015b60405180910390f35b61011d610118366004611349565b610203565b005b61011d61012d366004611377565b6103cb565b61011d6101403660046113b7565b61064c565b61011d610734565b61011d61015b366004611349565b61079a565b6000546040516001600160a01b039091168152602001610101565b61011d6101893660046113b7565b610823565b61011d61019c366004611420565b610aaa565b6100f76101af366004611500565b610c8f565b6002546101c19060ff1681565b6040519015158152602001610101565b61011d610d7e565b61011d6101e7366004611349565b610de7565b600381600581106101fc57600080fd5b0154905081565b6000546001600160a01b031633148061022657506008546001600160a01b031633145b6102775760405162461bcd60e51b815260206004820152601860248201527f4e6f7420617070726f76656420746f207769746864726177000000000000000060448201526064015b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000d5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e96001600160a01b03169063a9059cbb90839083906370a082319060240160206040518083038186803b1580156102f957600080fd5b505afa15801561030d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610331919061159f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c791906114e0565b5050565b6002600154141561041e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026e565b60026001556000546001600160a01b03163314806104f8576040517f14f329af00000000000000000000000000000000000000000000000000000000815260026004820152602481018390523360448201527f000000000000000000000000605757a5cceb44ced7a5be421735e0151333c3386001600160a01b0316906314f329af90606401602060405180830381600087803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f691906114e0565b505b60008267ffffffffffffffff81111561052157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561054a578160200160208202803683370190505b50905060005b8381101561063457600182828151811061057a57634e487b7160e01b600052603260045260246000fd5b602002602001019061ffff16908161ffff1681525050826106225769d3c21bcecceda10000006105d58686848181106105c357634e487b7160e01b600052603260045260246000fd5b90506020028101906101af919061172a565b106106225760405162461bcd60e51b815260206004820152601b60248201527f4e616d65206e6f7420617661696c61626c6520666f722073616c650000000000604482015260640161026e565b8061062c816117bd565b915050610550565b506106428484836001610ec9565b5050600180555050565b6002600154141561069f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026e565b600260018190555460ff166106f65760405162461bcd60e51b815260206004820152601c60248201527f526567697374726174696f6e206973206e6f7420656e61626c65642e00000000604482015260640161026e565b610642848484848080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250610ec9915050565b6000546001600160a01b0316331461078e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b61079860006110ee565b565b6000546001600160a01b031633146107f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b6008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600260015414156108765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026e565b60026001558281146108ca5760405162461bcd60e51b815260206004820152601360248201527f4172672073697a65206d69736d61746368656400000000000000000000000000604482015260640161026e565b6000805b8481101561095a576108f98686838181106105c357634e487b7160e01b600052603260045260246000fd5b84848381811061091957634e487b7160e01b600052603260045260246000fd5b905060200201602081019061092e919061156d565b61ffff1661093c9190611787565b610946908361176f565b915080610952816117bd565b9150506108ce565b506040517fb2c0ede80000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000d17f3e694cbf9264a7da5ef4e31b2259ae925f7e169063b2c0ede8906109c69088908890889088906004016116da565b600060405180830381600087803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b50506040516323b872dd60e01b8152336004820152306024820152604481018490527f000000000000000000000000d5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e96001600160a01b031692506323b872dd9150606401602060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9e91906114e0565b50506001805550505050565b6000546001600160a01b03163314610b045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b80600081518110610b2557634e487b7160e01b600052603260045260246000fd5b60200260200101516003600060058110610b4f57634e487b7160e01b600052603260045260246000fd5b0155805181906001908110610b7457634e487b7160e01b600052603260045260246000fd5b60200260200101516003600160058110610b9e57634e487b7160e01b600052603260045260246000fd5b0155805181906002908110610bc357634e487b7160e01b600052603260045260246000fd5b60200260200101516003600260058110610bed57634e487b7160e01b600052603260045260246000fd5b0155805181906003908110610c1257634e487b7160e01b600052603260045260246000fd5b602002602001015160038060058110610c3b57634e487b7160e01b600052603260045260246000fd5b0155805181906004908110610c6057634e487b7160e01b600052603260045260246000fd5b60200260200101516003600460058110610c8a57634e487b7160e01b600052603260045260246000fd5b015550565b600080610cd184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061114b92505050565b9050600081118015610ce4575060058111155b15610d1d576003610cf66001836117a6565b60058110610d1457634e487b7160e01b600052603260045260246000fd5b01549150610d77565b6005811115610d2f5760036004610d14565b60405162461bcd60e51b815260206004820152600c60248201527f496e76616c6964206e616d650000000000000000000000000000000000000000604482015260640161026e565b5092915050565b6000546001600160a01b03163314610dd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b6002805460ff19166001179055565b6000546001600160a01b03163314610e415760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026e565b6001600160a01b038116610ebd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026e565b610ec6816110ee565b50565b81518314610f195760405162461bcd60e51b815260206004820152601360248201527f4172672073697a65206d69736d61746368656400000000000000000000000000604482015260640161026e565b6000805b84811015610f9c57610f488686838181106105c357634e487b7160e01b600052603260045260246000fd5b848281518110610f6857634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff16610f7e9190611787565b610f88908361176f565b915080610f94816117bd565b915050610f1d565b506040517fddba71540000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000d17f3e694cbf9264a7da5ef4e31b2259ae925f7e169063ddba715490611008903390899089908990600401611671565b600060405180830381600087803b15801561102257600080fd5b505af1158015611036573d6000803e3d6000fd5b50505050816110e7576040516323b872dd60e01b8152336004820152306024820152604481018290527f000000000000000000000000d5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e96001600160a01b0316906323b872dd90606401602060405180830381600087803b1580156110ad57600080fd5b505af11580156110c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e591906114e0565b505b5050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051600090819081905b808210156112df57600085838151811061117f57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191690507f80000000000000000000000000000000000000000000000000000000000000008110156111ca576111c360018461176f565b92506112cc565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611207576111c360028461176f565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611244576111c360038461176f565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611281576111c360048461176f565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156112be576111c360058461176f565b6112c960068461176f565b92505b50826112d7816117bd565b935050611155565b50909392505050565b60008083601f8401126112f9578081fd5b50813567ffffffffffffffff811115611310578182fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b803561ffff8116811461134457600080fd5b919050565b60006020828403121561135a578081fd5b81356001600160a01b0381168114611370578182fd5b9392505050565b60008060208385031215611389578081fd5b823567ffffffffffffffff81111561139f578182fd5b6113ab858286016112e8565b90969095509350505050565b600080600080604085870312156113cc578182fd5b843567ffffffffffffffff808211156113e3578384fd5b6113ef888389016112e8565b90965094506020870135915080821115611407578384fd5b50611414878288016112e8565b95989497509550505050565b60006020808385031215611432578182fd5b823567ffffffffffffffff80821115611449578384fd5b818501915085601f83011261145c578384fd5b81358181111561146e5761146e6117ee565b8060051b604051601f19603f83011681018181108582111715611493576114936117ee565b604052828152858101935084860182860187018a10156114b1578788fd5b8795505b838610156114d35780358552600195909501949386019386016114b5565b5098975050505050505050565b6000602082840312156114f1578081fd5b81518015158114611370578182fd5b60008060208385031215611512578182fd5b823567ffffffffffffffff80821115611529578384fd5b818501915085601f83011261153c578384fd5b81358181111561154a578485fd5b86602082850101111561155b578485fd5b60209290920196919550909350505050565b60006020828403121561157e578081fd5b61137082611332565b600060208284031215611598578081fd5b5035919050565b6000602082840312156115b0578081fd5b5051919050565b60008383855260208086019550808560051b83010184845b8781101561163b57848303601f19018952813536889003601e190181126115f4578687fd5b8701803567ffffffffffffffff81111561160c578788fd5b80360389131561161a578788fd5b6116278582888501611648565b9a86019a94505050908301906001016115cf565b5090979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0385168152600060206060818401526116956060840186886115b7565b8381036040850152845180825282860191830190845b818110156116cb57835161ffff16835292840192918401916001016116ab565b50909998505050505050505050565b6040815260006116ee6040830186886115b7565b82810360208481019190915284825285918101835b868110156114d35761ffff61171785611332565b1682529282019290820190600101611703565b6000808335601e19843603018112611740578283fd5b83018035915067ffffffffffffffff82111561175a578283fd5b60200191503681900382131561132b57600080fd5b60008219821115611782576117826117d8565b500190565b60008160001904831182151516156117a1576117a16117d8565b500290565b6000828210156117b8576117b86117d8565b500390565b60006000198214156117d1576117d16117d8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220aa6ef20262c6396c5bb073fa66450c6734c81b3c87c973fa07bcaeb08ae1f6c464736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d17f3e694cbf9264a7da5ef4e31b2259ae925f7e000000000000000000000000d5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e9000000000000000000000000605757a5cceb44ced7a5be421735e0151333c338
-----Decoded View---------------
Arg [0] : _registry (address): 0xD17f3e694CBF9264A7DA5eF4E31b2259aE925f7E
Arg [1] : _wrld (address): 0xD5d86FC8d5C0Ea1aC1Ac5Dfab6E529c9967a45E9
Arg [2] : _whitelist (address): 0x605757A5cCEB44Ced7A5Be421735E0151333c338
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d17f3e694cbf9264a7da5ef4e31b2259ae925f7e
Arg [1] : 000000000000000000000000d5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e9
Arg [2] : 000000000000000000000000605757a5cceb44ced7a5be421735e0151333c338
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.