Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 10 from a total of 10 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Test Mint_139E10... | 14917954 | 1389 days ago | IN | 0 ETH | 0.00136936 | ||||
| Flip | 14917954 | 1389 days ago | IN | 0 ETH | 0.00112353 | ||||
| Flip | 14917950 | 1389 days ago | IN | 0 ETH | 0.0021432 | ||||
| Flip | 14917842 | 1389 days ago | IN | 0 ETH | 0.00243225 | ||||
| Test Mint_139E10... | 14911245 | 1390 days ago | IN | 0 ETH | 0.0010771 | ||||
| Flip | 14911245 | 1390 days ago | IN | 0 ETH | 0.00178493 | ||||
| Test Mint_139E10... | 14911212 | 1390 days ago | IN | 0 ETH | 0.00169752 | ||||
| Flip | 14911212 | 1390 days ago | IN | 0 ETH | 0.00139278 | ||||
| Test Mint_139E10... | 14911188 | 1390 days ago | IN | 0 ETH | 0.00136603 | ||||
| Flip | 14911188 | 1390 days ago | IN | 0 ETH | 0.00226373 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WaveTestDrop
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
import "./ERC1155D.sol";
contract WaveTestDrop is ERC1155 {
uint256 private currentIndex = 1;
bool private isFlipped = false;
constructor() ERC1155("") {}
function testMint_139E1071() external payable {
uint256 _currentIndex = currentIndex;
unchecked {
_currentIndex++;
}
currentIndex = _currentIndex;
}
function flip() external {
isFlipped = !isFlipped;
}
}// SPDX-License-Identifier: MIT
// Donkeverse Contracts v0.0.1
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
import "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/utils/Context.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";
/**
* @dev Implementation of the basic standard multi-token.
* See https://eips.ethereum.org/EIPS/eip-1155
* Originally based on code by Enjin: https://github.com/enjin/erc-1155
*
* _Available since v3.1._
*/
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
uint256 public constant MAX_SUPPLY = 1000000;
address[MAX_SUPPLY] internal _owners;
// Mapping from account to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
string private _uri;
/**
* @dev See {_setURI}.
*/
constructor(string memory uri_) {
_setURI(uri_);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC1155).interfaceId ||
interfaceId == type(IERC1155MetadataURI).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC1155MetadataURI-uri}.
*
* This implementation returns the same URI for *all* token types. It relies
* on the token type ID substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* Clients calling this function must replace the `\{id\}` substring with the
* actual token type ID.
*/
function uri(uint256) public view virtual override returns (string memory) {
return _uri;
}
/**
* @dev See {IERC1155-balanceOf}.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
require(id < MAX_SUPPLY, "ERC1155D: id exceeds maximum");
return _owners[id] == account ? 1 : 0;
}
/**
* @dev See {IERC1155-balanceOfBatch}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
public
view
virtual
override
returns (uint256[] memory)
{
require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
uint256[] memory batchBalances = new uint256[](accounts.length);
for (uint256 i = 0; i < accounts.length; ++i) {
batchBalances[i] = balanceOf(accounts[i], ids[i]);
}
return batchBalances;
}
/**
* @dev See {IERC1155-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC1155-isApprovedForAll}.
*/
function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
return _operatorApprovals[account][operator];
}
/**
* @dev See {IERC1155-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
_safeTransferFrom(from, to, id, amount, data);
}
/**
* @dev See {IERC1155-safeBatchTransferFrom}.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: transfer caller is not owner nor approved"
);
_safeBatchTransferFrom(from, to, ids, amounts, data);
}
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `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 memory data
) internal virtual {
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
uint256[] memory ids = _asSingletonArray(id);
uint256[] memory amounts = _asSingletonArray(amount);
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
require(_owners[id] == from && amount < 2, "ERC1155: insufficient balance for transfer");
// The ERC1155 spec allows for transfering zero tokens, but we are still expected
// to run the other checks and emit the event. But we don't want an ownership change
// in that case
if (amount == 1) {
_owners[id] = to;
}
emit TransferSingle(operator, from, to, id, amount);
_afterTokenTransfer(operator, from, to, ids, amounts, data);
_doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - 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[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
uint256 id = ids[i];
require(_owners[id] == from && amounts[i] < 2, "ERC1155: insufficient balance for transfer");
if (amounts[i] == 1) {
_owners[id] = to;
}
}
emit TransferBatch(operator, from, to, ids, amounts);
_afterTokenTransfer(operator, from, to, ids, amounts, data);
_doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
}
/**
* @dev Sets a new URI for all token types, by relying on the token type ID
* substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* By this mechanism, any occurrence of the `\{id\}` substring in either the
* URI or any of the amounts in the JSON file at said URI will be replaced by
* clients with the token type ID.
*
* For example, the `https://token-cdn-domain/\{id\}.json` URI would be
* interpreted by clients as
* `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
* for token type ID 0x4cce0.
*
* See {uri}.
*
* Because these URIs cannot be meaningfully represented by the {URI} event,
* this function emits no events.
*/
function _setURI(string memory newuri) internal virtual {
_uri = newuri;
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _mint(
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(amount < 2, "ERC1155D: exceeds supply");
require(id < MAX_SUPPLY, "ERC1155D: invalid id");
address operator = _msgSender();
uint256[] memory ids = _asSingletonArray(id);
uint256[] memory amounts = _asSingletonArray(amount);
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
// The ERC1155 spec allows for transfering zero tokens, but we are still expected
// to run the other checks and emit the event. But we don't want an ownership change
// in that case
if (amount == 1) {
_owners[id] = to;
}
emit TransferSingle(operator, address(0), to, id, amount);
_afterTokenTransfer(operator, address(0), to, ids, amounts, data);
_doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `id` must be less than MAX_SUPPLY;
* This does not implement smart contract checks according to ERC1155 so it exists as a separate function
*/
function _mintSingle(address to, uint256 id) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address"); // you can remove this if only minting to msg.sender
require(_owners[id] == address(0), "ERC1155D: supply exceeded");
require(id < MAX_SUPPLY, "ERC1155D: invalid id"); // you can remove this if the check is done outside
_owners[id] = to; // this can be made more efficient with assembly if you know what you are doing!
emit TransferSingle(to, address(0), to, id, 1);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
*
* 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 _mintBatch(
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; i++) {
require(amounts[i] < 2, "ERC1155D: exceeds supply");
require(_owners[ids[i]] == address(0), "ERC1155D: supply exceeded");
if (amounts[i] == 1) {
_owners[ids[i]] = to;
}
}
emit TransferBatch(operator, address(0), to, ids, amounts);
_afterTokenTransfer(operator, address(0), to, ids, amounts, data);
_doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
}
/**
* @dev Destroys `amount` tokens of token type `id` from `from`
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `from` must have at least `amount` tokens of token type `id`.
*/
function _burn(
address from,
uint256 id,
uint256 amount
) internal virtual {
require(from != address(0), "ERC1155: burn from the zero address");
address operator = _msgSender();
uint256[] memory ids = _asSingletonArray(id);
uint256[] memory amounts = _asSingletonArray(amount);
_beforeTokenTransfer(operator, from, address(0), ids, amounts, "");
require(_owners[id] == from && amount < 2, "ERC1155: burn amount exceeds balance");
if (amount == 1) {
_owners[id] = address(0);
}
emit TransferSingle(operator, from, address(0), id, amount);
_afterTokenTransfer(operator, from, address(0), ids, amounts, "");
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
*/
function _burnBatch(
address from,
uint256[] memory ids,
uint256[] memory amounts
) internal virtual {
require(from != address(0), "ERC1155: burn from the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, address(0), ids, amounts, "");
for (uint256 i = 0; i < ids.length; i++) {
uint256 id = ids[i];
require(_owners[id] == from && amounts[i] < 2, "ERC1155: burn amount exceeds balance");
if (amounts[i] == 1) {
_owners[id] = address(0);
}
}
emit TransferBatch(operator, from, address(0), ids, amounts);
_afterTokenTransfer(operator, from, address(0), ids, amounts, "");
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits a {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC1155: setting approval status for self");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
/**
* @dev Hook that is called after any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
function _doSafeTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
if (response != IERC1155Receiver.onERC1155Received.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _doSafeBatchTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
bytes4 response
) {
if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _asSingletonArray(uint256 element) internal pure returns (uint256[] memory) {
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;
}
function _prepayGas(uint256 start, uint256 end) internal {
require(end <= MAX_SUPPLY, "ERC1155D: end id exceeds maximum");
for (uint256 i = start; i < end; i++) {
bytes32 slotValue;
assembly {
slotValue := sload(add(_owners.slot, i))
}
bytes32 leftmostBitSetToOne = slotValue | bytes32(uint256(1) << 255);
assembly {
sstore(add(_owners.slot, i), leftmostBitSetToOne)
}
}
}
function getOwnershipRecordOffChain() external view returns(address[MAX_SUPPLY] memory) {
return _owners;
}
function ownerOfERC721Like(uint256 id) external view returns(address) {
require(id < _owners.length, "ERC1155D: id exceeds maximum");
address owner = _owners[id];
require(owner != address(0), "ERC1155D: owner query for nonexistent token");
return owner;
}
function getERC721BalanceOffChain(address _address) external view returns(uint256) {
uint256 counter = 0;
for (uint256 i; i < _owners.length; i++) {
if (_owners[i] == _address) {
counter++;
}
}
return counter;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}// SPDX-License-Identifier: MIT
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.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)
pragma solidity ^0.8.0;
import "../IERC1155.sol";
/**
* @dev Interface of the optional ERC1155MetadataExtension interface, as defined
* in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
*
* _Available since v3.1._
*/
interface IERC1155MetadataURI is IERC1155 {
/**
* @dev Returns the URI for token type `id`.
*
* If the `\{id\}` substring is present in the URI, it must be replaced by
* clients with the actual token type ID.
*/
function uri(uint256 id) external view returns (string memory);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
* @dev Handles the receipt of a single ERC1155 token type. This function is
* called at the end of a `safeTransferFrom` after the balance has been updated.
*
* NOTE: To accept the transfer, this must return
* `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
* (i.e. 0xf23a6e61, or its own function selector).
*
* @param operator The address which initiated the transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param id The ID of the token being transferred
* @param value The amount of tokens being transferred
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external returns (bytes4);
/**
* @dev Handles the receipt of a multiple ERC1155 token types. This function
* is called at the end of a `safeBatchTransferFrom` after the balances have
* been updated.
*
* NOTE: To accept the transfer(s), this must return
* `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
* (i.e. 0xbc197c81, or its own function selector).
*
* @param operator The address which initiated the batch transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param ids An array containing ids of each token being transferred (order and length must match values array)
* @param values An array containing amounts of each token being transferred (order and length must match ids array)
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external returns (bytes4);
}// 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
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": 10000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getERC721BalanceOffChain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnershipRecordOffChain","outputs":[{"internalType":"address[1000000]","name":"","type":"address[1000000]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOfERC721Like","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"testMint_139E1071","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526001620f424255620f4243805460ff191690553480156200002457600080fd5b506040805160208101909152600081526200003f8162000046565b5062000143565b80516200005d90620f424190602084019062000061565b5050565b8280546200006f9062000107565b90600052602060002090601f016020900481019282620000935760008555620000de565b82601f10620000ae57805160ff1916838001178555620000de565b82800160010185558215620000de579182015b82811115620000de578251825591602001919060010190620000c1565b50620000ec929150620000f0565b5090565b5b80821115620000ec5760008155600101620000f1565b600181811c908216806200011c57607f821691505b6020821081036200013d57634e487b7160e01b600052602260045260246000fd5b50919050565b611e4580620001536000396000f3fe6080604052600436106100d95760003560e01c80634e1273f41161007f578063a22cb46511610059578063a22cb4651461026b578063cde4efa91461028b578063e985e9c5146102cf578063f242432a1461032757600080fd5b80634e1273f4146101d757806356e695ed146102045780638e4777891461022657600080fd5b80630e89341c116100bb5780630e89341c146101535780632eb2c2d61461018057806332cb6b0c146101a057806339f81d8b146101b757600080fd5b806032146100de578062fdd58e146100f057806301ffc9a714610123575b600080fd5b6100ee620f424280546001019055565b005b3480156100fc57600080fd5b5061011061010b3660046115af565b610347565b6040519081526020015b60405180910390f35b34801561012f57600080fd5b5061014361013e36600461160a565b610486565b604051901515815260200161011a565b34801561015f57600080fd5b5061017361016e36600461162e565b61056b565b60405161011a91906116b2565b34801561018c57600080fd5b506100ee61019b366004611866565b610601565b3480156101ac57600080fd5b50610110620f424081565b3480156101c357600080fd5b506101106101d2366004611910565b6106b0565b3480156101e357600080fd5b506101f76101f236600461192b565b610730565b60405161011a9190611a31565b34801561021057600080fd5b5061021961086e565b60405161011a9190611a44565b34801561023257600080fd5b5061024661024136600461162e565b6108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011a565b34801561027757600080fd5b506100ee610286366004611a90565b6109bc565b34801561029757600080fd5b506100ee620f424380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b3480156102db57600080fd5b506101436102ea366004611acc565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152620f42406020908152604080832093909416825291909152205460ff1690565b34801561033357600080fd5b506100ee610342366004611aff565b6109cb565b600073ffffffffffffffffffffffffffffffffffffffff83166103d75760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b620f424082106104295760405162461bcd60e51b815260206004820152601c60248201527f45524331313535443a2069642065786365656473206d6178696d756d0000000060448201526064016103ce565b8273ffffffffffffffffffffffffffffffffffffffff16600083620f4240811061045557610455611b64565b015473ffffffffffffffffffffffffffffffffffffffff161461047957600061047c565b60015b60ff169392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061051957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061056557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060620f4241805461057c90611b93565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890611b93565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff851633148061062a575061062a85336102ea565b61069c5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f766564000000000000000000000000000060648201526084016103ce565b6106a98585858585610a73565b5050505050565b600080805b620f4240811015610729578373ffffffffffffffffffffffffffffffffffffffff16600082620f424081106106ec576106ec611b64565b015473ffffffffffffffffffffffffffffffffffffffff1603610717578161071381611be6565b9250505b8061072181611be6565b9150506106b5565b5092915050565b606081518351146107a95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016103ce565b6000835167ffffffffffffffff8111156107c5576107c56116c5565b6040519080825280602002602001820160405280156107ee578160200160208202803683370190505b50905060005b84518110156108665761083985828151811061081257610812611b64565b602002602001015185838151811061082c5761082c611b64565b6020026020010151610347565b82828151811061084b5761084b611b64565b602090810291909101015261085f81611be6565b90506107f4565b509392505050565b610876611563565b604080516301e8480081019182905290600090620f42409082845b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610891575050505050905090565b6000620f424082106109195760405162461bcd60e51b815260206004820152601c60248201527f45524331313535443a2069642065786365656473206d6178696d756d0000000060448201526064016103ce565b60008083620f4240811061092f5761092f611b64565b015473ffffffffffffffffffffffffffffffffffffffff169050806105655760405162461bcd60e51b815260206004820152602b60248201527f45524331313535443a206f776e657220717565727920666f72206e6f6e65786960448201527f7374656e7420746f6b656e00000000000000000000000000000000000000000060648201526084016103ce565b6109c7338383610d9c565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806109f457506109f485336102ea565b610a665760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016103ce565b6106a98585858585610ed7565b8151835114610aea5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016103ce565b73ffffffffffffffffffffffffffffffffffffffff8416610b735760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103ce565b3360005b8451811015610d07576000858281518110610b9457610b94611b64565b602002602001015190508773ffffffffffffffffffffffffffffffffffffffff16600082620f42408110610bca57610bca611b64565b015473ffffffffffffffffffffffffffffffffffffffff16148015610c0857506002858381518110610bfe57610bfe611b64565b6020026020010151105b610c7a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016103ce565b848281518110610c8c57610c8c611b64565b6020026020010151600103610cf65786600082620f42408110610cb157610cb1611b64565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555b50610d0081611be6565b9050610b77565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d7e929190611c45565b60405180910390a4610d94818787878787611140565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e3d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016103ce565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152620f4240602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610f605760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103ce565b336000610f6c85611385565b90506000610f7985611385565b90508773ffffffffffffffffffffffffffffffffffffffff16600087620f42408110610fa757610fa7611b64565b015473ffffffffffffffffffffffffffffffffffffffff16148015610fcc5750600285105b61103e5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016103ce565b846001036110a15786600087620f4240811061105c5761105c611b64565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611120929190918252602082015260400190565b60405180910390a46111368389898989896113d0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610d94576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c81906111b79089908990889088908890600401611c73565b6020604051808303816000875af1925050508015611210575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261120d91810190611cde565b60015b6112c55761121c611cfb565b806308c379a0036112555750611230611d17565b8061123b5750611257565b8060405162461bcd60e51b81526004016103ce91906116b2565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016103ce565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461137c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016103ce565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106113bf576113bf611b64565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610d94576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906114479089908990889088908890600401611dbf565b6020604051808303816000875af19250505080156114a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149d91810190611cde565b60015b6114ac5761121c611cfb565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461137c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016103ce565b604051806301e848000160405280620f4240906020820280368337509192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115aa57600080fd5b919050565b600080604083850312156115c257600080fd5b6115cb83611586565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461160757600080fd5b50565b60006020828403121561161c57600080fd5b8135611627816115d9565b9392505050565b60006020828403121561164057600080fd5b5035919050565b6000815180845260005b8181101561166d57602081850181015186830182015201611651565b8181111561167f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006116276020830184611647565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611738576117386116c5565b6040525050565b600067ffffffffffffffff821115611759576117596116c5565b5060051b60200190565b600082601f83011261177457600080fd5b813560206117818261173f565b60405161178e82826116f4565b83815260059390931b85018201928281019150868411156117ae57600080fd5b8286015b848110156117c957803583529183019183016117b2565b509695505050505050565b600082601f8301126117e557600080fd5b813567ffffffffffffffff8111156117ff576117ff6116c5565b60405161183460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601826116f4565b81815284602083860101111561184957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561187e57600080fd5b61188786611586565b945061189560208701611586565b9350604086013567ffffffffffffffff808211156118b257600080fd5b6118be89838a01611763565b945060608801359150808211156118d457600080fd5b6118e089838a01611763565b935060808801359150808211156118f657600080fd5b50611903888289016117d4565b9150509295509295909350565b60006020828403121561192257600080fd5b61162782611586565b6000806040838503121561193e57600080fd5b823567ffffffffffffffff8082111561195657600080fd5b818501915085601f83011261196a57600080fd5b813560206119778261173f565b60405161198482826116f4565b83815260059390931b85018201928281019150898411156119a457600080fd5b948201945b838610156119c9576119ba86611586565b825294820194908201906119a9565b965050860135925050808211156119df57600080fd5b506119ec85828601611763565b9150509250929050565b600081518084526020808501945080840160005b83811015611a2657815187529582019590820190600101611a0a565b509495945050505050565b60208152600061162760208301846119f6565b6301e848008101818360005b620f4240811015611a8757815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101611a50565b50505092915050565b60008060408385031215611aa357600080fd5b611aac83611586565b915060208301358015158114611ac157600080fd5b809150509250929050565b60008060408385031215611adf57600080fd5b611ae883611586565b9150611af660208401611586565b90509250929050565b600080600080600060a08688031215611b1757600080fd5b611b2086611586565b9450611b2e60208701611586565b93506040860135925060608601359150608086013567ffffffffffffffff811115611b5857600080fd5b611903888289016117d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680611ba757607f821691505b602082108103611be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b604081526000611c5860408301856119f6565b8281036020840152611c6a81856119f6565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a06040830152611cac60a08301866119f6565b8281036060840152611cbe81866119f6565b90508281036080840152611cd28185611647565b98975050505050505050565b600060208284031215611cf057600080fd5b8151611627816115d9565b600060033d1115611d145760046000803e5060005160e01c5b90565b600060443d1015611d255790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715611d7357505050505090565b8285019150815181811115611d8b5750505050505090565b843d8701016020828501011115611da55750505050505090565b611db4602082860101876116f4565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611e0460a0830184611647565b97965050505050505056fea264697066735822122055f5e888125fd9badb5aa51e5f811258af20fb1fc1ebfd8581b398817708e56364736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106100d95760003560e01c80634e1273f41161007f578063a22cb46511610059578063a22cb4651461026b578063cde4efa91461028b578063e985e9c5146102cf578063f242432a1461032757600080fd5b80634e1273f4146101d757806356e695ed146102045780638e4777891461022657600080fd5b80630e89341c116100bb5780630e89341c146101535780632eb2c2d61461018057806332cb6b0c146101a057806339f81d8b146101b757600080fd5b806032146100de578062fdd58e146100f057806301ffc9a714610123575b600080fd5b6100ee620f424280546001019055565b005b3480156100fc57600080fd5b5061011061010b3660046115af565b610347565b6040519081526020015b60405180910390f35b34801561012f57600080fd5b5061014361013e36600461160a565b610486565b604051901515815260200161011a565b34801561015f57600080fd5b5061017361016e36600461162e565b61056b565b60405161011a91906116b2565b34801561018c57600080fd5b506100ee61019b366004611866565b610601565b3480156101ac57600080fd5b50610110620f424081565b3480156101c357600080fd5b506101106101d2366004611910565b6106b0565b3480156101e357600080fd5b506101f76101f236600461192b565b610730565b60405161011a9190611a31565b34801561021057600080fd5b5061021961086e565b60405161011a9190611a44565b34801561023257600080fd5b5061024661024136600461162e565b6108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011a565b34801561027757600080fd5b506100ee610286366004611a90565b6109bc565b34801561029757600080fd5b506100ee620f424380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b3480156102db57600080fd5b506101436102ea366004611acc565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152620f42406020908152604080832093909416825291909152205460ff1690565b34801561033357600080fd5b506100ee610342366004611aff565b6109cb565b600073ffffffffffffffffffffffffffffffffffffffff83166103d75760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b620f424082106104295760405162461bcd60e51b815260206004820152601c60248201527f45524331313535443a2069642065786365656473206d6178696d756d0000000060448201526064016103ce565b8273ffffffffffffffffffffffffffffffffffffffff16600083620f4240811061045557610455611b64565b015473ffffffffffffffffffffffffffffffffffffffff161461047957600061047c565b60015b60ff169392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061051957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061056557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060620f4241805461057c90611b93565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890611b93565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff851633148061062a575061062a85336102ea565b61069c5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f766564000000000000000000000000000060648201526084016103ce565b6106a98585858585610a73565b5050505050565b600080805b620f4240811015610729578373ffffffffffffffffffffffffffffffffffffffff16600082620f424081106106ec576106ec611b64565b015473ffffffffffffffffffffffffffffffffffffffff1603610717578161071381611be6565b9250505b8061072181611be6565b9150506106b5565b5092915050565b606081518351146107a95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016103ce565b6000835167ffffffffffffffff8111156107c5576107c56116c5565b6040519080825280602002602001820160405280156107ee578160200160208202803683370190505b50905060005b84518110156108665761083985828151811061081257610812611b64565b602002602001015185838151811061082c5761082c611b64565b6020026020010151610347565b82828151811061084b5761084b611b64565b602090810291909101015261085f81611be6565b90506107f4565b509392505050565b610876611563565b604080516301e8480081019182905290600090620f42409082845b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610891575050505050905090565b6000620f424082106109195760405162461bcd60e51b815260206004820152601c60248201527f45524331313535443a2069642065786365656473206d6178696d756d0000000060448201526064016103ce565b60008083620f4240811061092f5761092f611b64565b015473ffffffffffffffffffffffffffffffffffffffff169050806105655760405162461bcd60e51b815260206004820152602b60248201527f45524331313535443a206f776e657220717565727920666f72206e6f6e65786960448201527f7374656e7420746f6b656e00000000000000000000000000000000000000000060648201526084016103ce565b6109c7338383610d9c565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806109f457506109f485336102ea565b610a665760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016103ce565b6106a98585858585610ed7565b8151835114610aea5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016103ce565b73ffffffffffffffffffffffffffffffffffffffff8416610b735760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103ce565b3360005b8451811015610d07576000858281518110610b9457610b94611b64565b602002602001015190508773ffffffffffffffffffffffffffffffffffffffff16600082620f42408110610bca57610bca611b64565b015473ffffffffffffffffffffffffffffffffffffffff16148015610c0857506002858381518110610bfe57610bfe611b64565b6020026020010151105b610c7a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016103ce565b848281518110610c8c57610c8c611b64565b6020026020010151600103610cf65786600082620f42408110610cb157610cb1611b64565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555b50610d0081611be6565b9050610b77565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d7e929190611c45565b60405180910390a4610d94818787878787611140565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e3d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016103ce565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152620f4240602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610f605760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103ce565b336000610f6c85611385565b90506000610f7985611385565b90508773ffffffffffffffffffffffffffffffffffffffff16600087620f42408110610fa757610fa7611b64565b015473ffffffffffffffffffffffffffffffffffffffff16148015610fcc5750600285105b61103e5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016103ce565b846001036110a15786600087620f4240811061105c5761105c611b64565b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611120929190918252602082015260400190565b60405180910390a46111368389898989896113d0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610d94576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c81906111b79089908990889088908890600401611c73565b6020604051808303816000875af1925050508015611210575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261120d91810190611cde565b60015b6112c55761121c611cfb565b806308c379a0036112555750611230611d17565b8061123b5750611257565b8060405162461bcd60e51b81526004016103ce91906116b2565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016103ce565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461137c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016103ce565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106113bf576113bf611b64565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610d94576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906114479089908990889088908890600401611dbf565b6020604051808303816000875af19250505080156114a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149d91810190611cde565b60015b6114ac5761121c611cfb565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461137c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016103ce565b604051806301e848000160405280620f4240906020820280368337509192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115aa57600080fd5b919050565b600080604083850312156115c257600080fd5b6115cb83611586565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461160757600080fd5b50565b60006020828403121561161c57600080fd5b8135611627816115d9565b9392505050565b60006020828403121561164057600080fd5b5035919050565b6000815180845260005b8181101561166d57602081850181015186830182015201611651565b8181111561167f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006116276020830184611647565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611738576117386116c5565b6040525050565b600067ffffffffffffffff821115611759576117596116c5565b5060051b60200190565b600082601f83011261177457600080fd5b813560206117818261173f565b60405161178e82826116f4565b83815260059390931b85018201928281019150868411156117ae57600080fd5b8286015b848110156117c957803583529183019183016117b2565b509695505050505050565b600082601f8301126117e557600080fd5b813567ffffffffffffffff8111156117ff576117ff6116c5565b60405161183460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601826116f4565b81815284602083860101111561184957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561187e57600080fd5b61188786611586565b945061189560208701611586565b9350604086013567ffffffffffffffff808211156118b257600080fd5b6118be89838a01611763565b945060608801359150808211156118d457600080fd5b6118e089838a01611763565b935060808801359150808211156118f657600080fd5b50611903888289016117d4565b9150509295509295909350565b60006020828403121561192257600080fd5b61162782611586565b6000806040838503121561193e57600080fd5b823567ffffffffffffffff8082111561195657600080fd5b818501915085601f83011261196a57600080fd5b813560206119778261173f565b60405161198482826116f4565b83815260059390931b85018201928281019150898411156119a457600080fd5b948201945b838610156119c9576119ba86611586565b825294820194908201906119a9565b965050860135925050808211156119df57600080fd5b506119ec85828601611763565b9150509250929050565b600081518084526020808501945080840160005b83811015611a2657815187529582019590820190600101611a0a565b509495945050505050565b60208152600061162760208301846119f6565b6301e848008101818360005b620f4240811015611a8757815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101611a50565b50505092915050565b60008060408385031215611aa357600080fd5b611aac83611586565b915060208301358015158114611ac157600080fd5b809150509250929050565b60008060408385031215611adf57600080fd5b611ae883611586565b9150611af660208401611586565b90509250929050565b600080600080600060a08688031215611b1757600080fd5b611b2086611586565b9450611b2e60208701611586565b93506040860135925060608601359150608086013567ffffffffffffffff811115611b5857600080fd5b611903888289016117d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680611ba757607f821691505b602082108103611be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b604081526000611c5860408301856119f6565b8281036020840152611c6a81856119f6565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a06040830152611cac60a08301866119f6565b8281036060840152611cbe81866119f6565b90508281036080840152611cd28185611647565b98975050505050505050565b600060208284031215611cf057600080fd5b8151611627816115d9565b600060033d1115611d145760046000803e5060005160e01c5b90565b600060443d1015611d255790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715611d7357505050505090565b8285019150815181811115611d8b5750505050505090565b843d8701016020828501011115611da55750505050505090565b611db4602082860101876116f4565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611e0460a0830184611647565b97965050505050505056fea264697066735822122055f5e888125fd9badb5aa51e5f811258af20fb1fc1ebfd8581b398817708e56364736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 32 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.