Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Distribute Ether | 14881942 | 1056 days ago | IN | 0.4658362 ETH | 0.03913751 | ||||
Distribute Ether | 14881942 | 1056 days ago | IN | 0.48442814 ETH | 0.04245409 | ||||
Distribute Ether | 14881942 | 1056 days ago | IN | 0.5479479 ETH | 0.04245504 | ||||
Distribute Ether | 14881942 | 1056 days ago | IN | 0.5315879 ETH | 0.04245361 | ||||
Distribute Ether | 14881942 | 1056 days ago | IN | 0.50744241 ETH | 0.04245456 | ||||
Distribute Ether | 14881942 | 1056 days ago | IN | 0.51243938 ETH | 0.04245551 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 14881942 | 1056 days ago | 0.00480851 ETH | ||||
- | 14881942 | 1056 days ago | 0.00549446 ETH | ||||
- | 14881942 | 1056 days ago | 0.00681341 ETH | ||||
- | 14881942 | 1056 days ago | 0.00327088 ETH | ||||
- | 14881942 | 1056 days ago | 0.00574839 ETH | ||||
- | 14881942 | 1056 days ago | 0.00342531 ETH | ||||
- | 14881942 | 1056 days ago | 0.00385144 ETH | ||||
- | 14881942 | 1056 days ago | 0.00339879 ETH | ||||
- | 14881942 | 1056 days ago | 0.006414 ETH | ||||
- | 14881942 | 1056 days ago | 0.0044287 ETH | ||||
- | 14881942 | 1056 days ago | 0.00581268 ETH | ||||
- | 14881942 | 1056 days ago | 0.00734955 ETH | ||||
- | 14881942 | 1056 days ago | 0.00423426 ETH | ||||
- | 14881942 | 1056 days ago | 0.00858825 ETH | ||||
- | 14881942 | 1056 days ago | 0.0051769 ETH | ||||
- | 14881942 | 1056 days ago | 0.00446433 ETH | ||||
- | 14881942 | 1056 days ago | 0.00360862 ETH | ||||
- | 14881942 | 1056 days ago | 0.00384074 ETH | ||||
- | 14881942 | 1056 days ago | 0.00480476 ETH | ||||
- | 14881942 | 1056 days ago | 0.00761516 ETH | ||||
- | 14881942 | 1056 days ago | 0.00410824 ETH | ||||
- | 14881942 | 1056 days ago | 0.00391356 ETH | ||||
- | 14881942 | 1056 days ago | 0.00420564 ETH | ||||
- | 14881942 | 1056 days ago | 0.0067856 ETH | ||||
- | 14881942 | 1056 days ago | 0.00375063 ETH |
Loading...
Loading
Contract Name:
NiftyEtherDistributor
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 1500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; import "./Withdrawable.sol"; import "./ReentrancyGuard.sol"; contract NiftyEtherDistributor is Withdrawable, ReentrancyGuard { constructor(address niftyRegistryContract_) { initializeNiftyEntity(niftyRegistryContract_); } function distributeEther(address[] calldata wallets, uint256[] calldata amounts) external payable nonReentrant { require(wallets.length == amounts.length, "Input array size mismatch"); uint256 remainingEthValue = msg.value; uint256 i = 0; uint256 amount = 0; while(i < wallets.length) { amount = amounts[i]; remainingEthValue -= amount; (bool success,) = wallets[i].call{value: amount}(""); require(success, "Transfer ETH Failed"); ++i; } (bool refundSuccess,) = msg.sender.call{value: remainingEthValue}(""); require(refundSuccess, "Refund ETH Failed"); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; import "./RejectEther.sol"; import "./NiftyPermissions.sol"; import "../interfaces/IERC20.sol"; import "../interfaces/IERC721.sol"; abstract contract Withdrawable is RejectEther, NiftyPermissions { /** * @dev Slither identifies an issue with sending ETH to an arbitrary destianation. * https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations * Recommended mitigation is to "Ensure that an arbitrary user cannot withdraw unauthorized funds." * This mitigation has been performed, as only the contract admin can call 'withdrawETH' and they should * verify the recipient should receive the ETH first. */ function withdrawETH(address payable recipient, uint256 amount) external { _requireOnlyValidSender(); require(amount > 0, ERROR_ZERO_ETH_TRANSFER); require(recipient != address(0), "Transfer to zero address"); uint256 currentBalance = address(this).balance; require(amount <= currentBalance, ERROR_INSUFFICIENT_BALANCE); //slither-disable-next-line arbitrary-send (bool success,) = recipient.call{value: amount}(""); require(success, ERROR_WITHDRAW_UNSUCCESSFUL); } function withdrawERC20(address tokenContract, address recipient, uint256 amount) external { _requireOnlyValidSender(); bool success = IERC20(tokenContract).transfer(recipient, amount); require(success, ERROR_WITHDRAW_UNSUCCESSFUL); } function withdrawERC721(address tokenContract, address recipient, uint256 tokenId) external { _requireOnlyValidSender(); IERC721(tokenContract).safeTransferFrom(address(this), recipient, tokenId, ""); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity 0.8.9; /** * @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 pragma solidity 0.8.9; /** * @title A base contract that may be inherited in order to protect a contract from having its fallback function * invoked and to block the receipt of ETH by a contract. * @author Nathan Gang * @notice This contract bestows on inheritors the ability to block ETH transfers into the contract * @dev ETH may still be forced into the contract - it is impossible to block certain attacks, but this protects from accidental ETH deposits */ // For more info, see: "https://medium.com/@alexsherbuck/two-ways-to-force-ether-into-a-contract-1543c1311c56" abstract contract RejectEther { /** * @dev For most contracts, it is safest to explicitly restrict the use of the fallback function * This would generally be invoked if sending ETH to this contract with a 'data' value provided */ fallback() external payable { revert("Fallback function not permitted"); } /** * @dev This is the standard path where ETH would land if sending ETH to this contract without a 'data' value * In our case, we don't want our contract to receive ETH, so we restrict it here */ receive() external payable { revert("Receiving ETH not permitted"); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; import "./ERC165.sol"; import "./GenericErrors.sol"; import "../interfaces/INiftyEntityCloneable.sol"; import "../interfaces/INiftyRegistry.sol"; import "../libraries/Context.sol"; abstract contract NiftyPermissions is Context, ERC165, GenericErrors, INiftyEntityCloneable { event AdminTransferred(address indexed previousAdmin, address indexed newAdmin); // Only allow Nifty Entity to be initialized once bool internal initializedNiftyEntity; // If address(0), use enable Nifty Gateway permissions - otherwise, specifies the address with permissions address public admin; // To prevent a mistake, transferring admin rights will be a two step process // First, the current admin nominates a new admin // Second, the nominee accepts admin address public nominatedAdmin; // Nifty Registry Contract INiftyRegistry internal permissionsRegistry; function initializeNiftyEntity(address niftyRegistryContract_) public { require(!initializedNiftyEntity, ERROR_REINITIALIZATION_NOT_PERMITTED); permissionsRegistry = INiftyRegistry(niftyRegistryContract_); initializedNiftyEntity = true; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(INiftyEntityCloneable).interfaceId || super.supportsInterface(interfaceId); } function renounceAdmin() external { _requireOnlyValidSender(); _transferAdmin(address(0)); } function nominateAdmin(address nominee) external { _requireOnlyValidSender(); nominatedAdmin = nominee; } function acceptAdmin() external { address nominee = nominatedAdmin; require(_msgSender() == nominee, ERROR_INVALID_MSG_SENDER); _transferAdmin(nominee); } function _requireOnlyValidSender() internal view { address currentAdmin = admin; if(currentAdmin == address(0)) { require(permissionsRegistry.isValidNiftySender(_msgSender()), ERROR_INVALID_MSG_SENDER); } else { require(_msgSender() == currentAdmin, ERROR_INVALID_MSG_SENDER); } } function _transferAdmin(address newAdmin) internal { address oldAdmin = admin; admin = newAdmin; delete nominatedAdmin; emit AdminTransferred(oldAdmin, newAdmin); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; import "./IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; import "../interfaces/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.9; abstract contract GenericErrors { string internal constant ERROR_INPUT_ARRAY_EMPTY = "Input array empty"; string internal constant ERROR_INPUT_ARRAY_SIZE_MISMATCH = "Input array size mismatch"; string internal constant ERROR_INVALID_MSG_SENDER = "Invalid msg.sender"; string internal constant ERROR_UNEXPECTED_DATA_SIGNER = "Unexpected data signer"; string internal constant ERROR_INSUFFICIENT_BALANCE = "Insufficient balance"; string internal constant ERROR_WITHDRAW_UNSUCCESSFUL = "Withdraw unsuccessful"; string internal constant ERROR_CONTRACT_IS_FINALIZED = "Contract is finalized"; string internal constant ERROR_CANNOT_CHANGE_DEFAULT_OWNER = "Cannot change default owner"; string internal constant ERROR_UNCLONEABLE_REFERENCE_CONTRACT = "Uncloneable reference contract"; string internal constant ERROR_BIPS_OVER_100_PERCENT = "Bips over 100%"; string internal constant ERROR_NO_ROYALTY_RECEIVER = "No royalty receiver"; string internal constant ERROR_REINITIALIZATION_NOT_PERMITTED = "Re-initialization not permitted"; string internal constant ERROR_ZERO_ETH_TRANSFER = "Zero ETH Transfer"; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; import "./IERC165.sol"; interface INiftyEntityCloneable is IERC165 { function initializeNiftyEntity(address niftyRegistryContract_) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; interface INiftyRegistry { function isValidNiftySender(address sendingKey) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.9; /** * @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.9; /** * @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": 1500 }, "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":"niftyRegistryContract_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"distributeEther","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"niftyRegistryContract_","type":"address"}],"name":"initializeNiftyEntity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"name":"nominateAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceAdmin","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":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161107e38038061107e83398101604081905261002f916100d5565b600160035561003d81610043565b5061015a565b60005460408051808201909152601f81527f52652d696e697469616c697a6174696f6e206e6f74207065726d69747465640060208201529060ff16156100a55760405162461bcd60e51b815260040161009c9190610105565b60405180910390fd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556000805460ff19166001179055565b6000602082840312156100e757600080fd5b81516001600160a01b03811681146100fe57600080fd5b9392505050565b600060208083528351808285015260005b8181101561013257858101830151858201604001528201610116565b81811115610144576000604083870101525b50601f01601f1916929092016040019392505050565b610f15806101696000396000f3fe6080604052600436106100c05760003560e01c80634782f77911610074578063cd5ad4c51161004e578063cd5ad4c51461024e578063e8ac65331461026e578063f851a440146102a657610112565b80634782f779146102065780638bad0c0a146102265780639e7934db1461023b57610112565b80634025feb2116100a55780634025feb2146101a657806343264347146101c657806344004cc1146101e657610112565b806301ffc9a71461015a5780630e18b6811461018f57610112565b366101125760405162461bcd60e51b815260206004820152601b60248201527f526563656976696e6720455448206e6f74207065726d6974746564000000000060448201526064015b60405180910390fd5b60405162461bcd60e51b815260206004820152601f60248201527f46616c6c6261636b2066756e6374696f6e206e6f74207065726d6974746564006044820152606401610109565b34801561016657600080fd5b5061017a610175366004610c6a565b6102cb565b60405190151581526020015b60405180910390f35b34801561019b57600080fd5b506101a4610364565b005b3480156101b257600080fd5b506101a46101c1366004610cc8565b6103dd565b3480156101d257600080fd5b506101a46101e1366004610d09565b610479565b3480156101f257600080fd5b506101a4610201366004610cc8565b61050f565b34801561021257600080fd5b506101a4610221366004610d26565b610614565b34801561023257600080fd5b506101a46107c8565b6101a4610249366004610d9e565b6107dc565b34801561025a57600080fd5b506101a4610269366004610d09565b610a3a565b34801561027a57600080fd5b5060015461028e906001600160a01b031681565b6040516001600160a01b039091168152602001610186565b3480156102b257600080fd5b5060005461028e9061010090046001600160a01b031681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4326434700000000000000000000000000000000000000000000000000000000148061035e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001546001600160a01b031680336001600160a01b0316146040518060400160405280601281526020017f496e76616c6964206d73672e73656e6465720000000000000000000000000000815250906103d05760405162461bcd60e51b81526004016101099190610e0a565b506103da81610a71565b50565b6103e5610afe565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015260448201839052608060648301526000608483015284169063b88d4fde9060a401600060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b50505050505050565b60005460408051808201909152601f81527f52652d696e697469616c697a6174696f6e206e6f74207065726d69747465640060208201529060ff16156104d25760405162461bcd60e51b81526004016101099190610e0a565b506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556000805460ff19166001179055565b610517610afe565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390526000919085169063a9059cbb90604401602060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b69190610e5f565b9050806040518060400160405280601581526020017f576974686472617720756e7375636365737366756c00000000000000000000008152509061060d5760405162461bcd60e51b81526004016101099190610e0a565b5050505050565b61061c610afe565b60408051808201909152601181527f5a65726f20455448205472616e7366657200000000000000000000000000000060208201528161066e5760405162461bcd60e51b81526004016101099190610e0a565b506001600160a01b0382166106c55760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610109565b60408051808201909152601481527f496e73756666696369656e742062616c616e6365000000000000000000000000602082015247908183111561071c5760405162461bcd60e51b81526004016101099190610e0a565b506000836001600160a01b03168360405160006040518083038185875af1925050503d806000811461076a576040519150601f19603f3d011682016040523d82523d6000602084013e61076f565b606091505b50509050806040518060400160405280601581526020017f576974686472617720756e7375636365737366756c00000000000000000000008152509061060d5760405162461bcd60e51b81526004016101099190610e0a565b6107d0610afe565b6107da6000610a71565b565b6002600354141561082f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610109565b60026003558281146108835760405162461bcd60e51b815260206004820152601960248201527f496e7075742061727261792073697a65206d69736d61746368000000000000006044820152606401610109565b346000805b85821015610993578484838181106108a2576108a2610e81565b90506020020135905080836108b79190610ead565b925060008787848181106108cd576108cd610e81565b90506020020160208101906108e29190610d09565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461092c576040519150601f19603f3d011682016040523d82523d6000602084013e610931565b606091505b50509050806109825760405162461bcd60e51b815260206004820152601360248201527f5472616e7366657220455448204661696c6564000000000000000000000000006044820152606401610109565b61098b83610ec4565b925050610888565b604051600090339085908381818185875af1925050503d80600081146109d5576040519150601f19603f3d011682016040523d82523d6000602084013e6109da565b606091505b5050905080610a2b5760405162461bcd60e51b815260206004820152601160248201527f526566756e6420455448204661696c65640000000000000000000000000000006044820152606401610109565b50506001600355505050505050565b610a42610afe565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161785556001805473ffffffffffffffffffffffffffffffffffffffff1916905560405193049190911692909183917ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec691a35050565b60005461010090046001600160a01b031680610c0d576002546001600160a01b031663e37ce6fa336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610b7d57600080fd5b505afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190610e5f565b6040518060400160405280601281526020017f496e76616c6964206d73672e73656e646572000000000000000000000000000081525090610c095760405162461bcd60e51b81526004016101099190610e0a565b5050565b60408051808201909152601281527f496e76616c6964206d73672e73656e64657200000000000000000000000000006020820152336001600160a01b03831614610c095760405162461bcd60e51b81526004016101099190610e0a565b600060208284031215610c7c57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cac57600080fd5b9392505050565b6001600160a01b03811681146103da57600080fd5b600080600060608486031215610cdd57600080fd5b8335610ce881610cb3565b92506020840135610cf881610cb3565b929592945050506040919091013590565b600060208284031215610d1b57600080fd5b8135610cac81610cb3565b60008060408385031215610d3957600080fd5b8235610d4481610cb3565b946020939093013593505050565b60008083601f840112610d6457600080fd5b50813567ffffffffffffffff811115610d7c57600080fd5b6020830191508360208260051b8501011115610d9757600080fd5b9250929050565b60008060008060408587031215610db457600080fd5b843567ffffffffffffffff80821115610dcc57600080fd5b610dd888838901610d52565b90965094506020870135915080821115610df157600080fd5b50610dfe87828801610d52565b95989497509550505050565b600060208083528351808285015260005b81811015610e3757858101830151858201604001528201610e1b565b81811115610e49576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215610e7157600080fd5b81518015158114610cac57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610ebf57610ebf610e97565b500390565b6000600019821415610ed857610ed8610e97565b506001019056fea2646970667358221220d90c246c64b5215e3561a33408eb5fef7c8026b9b15cc682f16ddeb3e089677a64736f6c634300080900330000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106
Deployed Bytecode
0x6080604052600436106100c05760003560e01c80634782f77911610074578063cd5ad4c51161004e578063cd5ad4c51461024e578063e8ac65331461026e578063f851a440146102a657610112565b80634782f779146102065780638bad0c0a146102265780639e7934db1461023b57610112565b80634025feb2116100a55780634025feb2146101a657806343264347146101c657806344004cc1146101e657610112565b806301ffc9a71461015a5780630e18b6811461018f57610112565b366101125760405162461bcd60e51b815260206004820152601b60248201527f526563656976696e6720455448206e6f74207065726d6974746564000000000060448201526064015b60405180910390fd5b60405162461bcd60e51b815260206004820152601f60248201527f46616c6c6261636b2066756e6374696f6e206e6f74207065726d6974746564006044820152606401610109565b34801561016657600080fd5b5061017a610175366004610c6a565b6102cb565b60405190151581526020015b60405180910390f35b34801561019b57600080fd5b506101a4610364565b005b3480156101b257600080fd5b506101a46101c1366004610cc8565b6103dd565b3480156101d257600080fd5b506101a46101e1366004610d09565b610479565b3480156101f257600080fd5b506101a4610201366004610cc8565b61050f565b34801561021257600080fd5b506101a4610221366004610d26565b610614565b34801561023257600080fd5b506101a46107c8565b6101a4610249366004610d9e565b6107dc565b34801561025a57600080fd5b506101a4610269366004610d09565b610a3a565b34801561027a57600080fd5b5060015461028e906001600160a01b031681565b6040516001600160a01b039091168152602001610186565b3480156102b257600080fd5b5060005461028e9061010090046001600160a01b031681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4326434700000000000000000000000000000000000000000000000000000000148061035e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001546001600160a01b031680336001600160a01b0316146040518060400160405280601281526020017f496e76616c6964206d73672e73656e6465720000000000000000000000000000815250906103d05760405162461bcd60e51b81526004016101099190610e0a565b506103da81610a71565b50565b6103e5610afe565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015260448201839052608060648301526000608483015284169063b88d4fde9060a401600060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b50505050505050565b60005460408051808201909152601f81527f52652d696e697469616c697a6174696f6e206e6f74207065726d69747465640060208201529060ff16156104d25760405162461bcd60e51b81526004016101099190610e0a565b506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556000805460ff19166001179055565b610517610afe565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390526000919085169063a9059cbb90604401602060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b69190610e5f565b9050806040518060400160405280601581526020017f576974686472617720756e7375636365737366756c00000000000000000000008152509061060d5760405162461bcd60e51b81526004016101099190610e0a565b5050505050565b61061c610afe565b60408051808201909152601181527f5a65726f20455448205472616e7366657200000000000000000000000000000060208201528161066e5760405162461bcd60e51b81526004016101099190610e0a565b506001600160a01b0382166106c55760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610109565b60408051808201909152601481527f496e73756666696369656e742062616c616e6365000000000000000000000000602082015247908183111561071c5760405162461bcd60e51b81526004016101099190610e0a565b506000836001600160a01b03168360405160006040518083038185875af1925050503d806000811461076a576040519150601f19603f3d011682016040523d82523d6000602084013e61076f565b606091505b50509050806040518060400160405280601581526020017f576974686472617720756e7375636365737366756c00000000000000000000008152509061060d5760405162461bcd60e51b81526004016101099190610e0a565b6107d0610afe565b6107da6000610a71565b565b6002600354141561082f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610109565b60026003558281146108835760405162461bcd60e51b815260206004820152601960248201527f496e7075742061727261792073697a65206d69736d61746368000000000000006044820152606401610109565b346000805b85821015610993578484838181106108a2576108a2610e81565b90506020020135905080836108b79190610ead565b925060008787848181106108cd576108cd610e81565b90506020020160208101906108e29190610d09565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461092c576040519150601f19603f3d011682016040523d82523d6000602084013e610931565b606091505b50509050806109825760405162461bcd60e51b815260206004820152601360248201527f5472616e7366657220455448204661696c6564000000000000000000000000006044820152606401610109565b61098b83610ec4565b925050610888565b604051600090339085908381818185875af1925050503d80600081146109d5576040519150601f19603f3d011682016040523d82523d6000602084013e6109da565b606091505b5050905080610a2b5760405162461bcd60e51b815260206004820152601160248201527f526566756e6420455448204661696c65640000000000000000000000000000006044820152606401610109565b50506001600355505050505050565b610a42610afe565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161785556001805473ffffffffffffffffffffffffffffffffffffffff1916905560405193049190911692909183917ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec691a35050565b60005461010090046001600160a01b031680610c0d576002546001600160a01b031663e37ce6fa336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610b7d57600080fd5b505afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190610e5f565b6040518060400160405280601281526020017f496e76616c6964206d73672e73656e646572000000000000000000000000000081525090610c095760405162461bcd60e51b81526004016101099190610e0a565b5050565b60408051808201909152601281527f496e76616c6964206d73672e73656e64657200000000000000000000000000006020820152336001600160a01b03831614610c095760405162461bcd60e51b81526004016101099190610e0a565b600060208284031215610c7c57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cac57600080fd5b9392505050565b6001600160a01b03811681146103da57600080fd5b600080600060608486031215610cdd57600080fd5b8335610ce881610cb3565b92506020840135610cf881610cb3565b929592945050506040919091013590565b600060208284031215610d1b57600080fd5b8135610cac81610cb3565b60008060408385031215610d3957600080fd5b8235610d4481610cb3565b946020939093013593505050565b60008083601f840112610d6457600080fd5b50813567ffffffffffffffff811115610d7c57600080fd5b6020830191508360208260051b8501011115610d9757600080fd5b9250929050565b60008060008060408587031215610db457600080fd5b843567ffffffffffffffff80821115610dcc57600080fd5b610dd888838901610d52565b90965094506020870135915080821115610df157600080fd5b50610dfe87828801610d52565b95989497509550505050565b600060208083528351808285015260005b81811015610e3757858101830151858201604001528201610e1b565b81811115610e49576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215610e7157600080fd5b81518015158114610cac57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610ebf57610ebf610e97565b500390565b6000600019821415610ed857610ed8610e97565b506001019056fea2646970667358221220d90c246c64b5215e3561a33408eb5fef7c8026b9b15cc682f16ddeb3e089677a64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106
-----Decoded View---------------
Arg [0] : niftyRegistryContract_ (address): 0x6e53130dDfF21E3BC963Ee902005223b9A202106
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006e53130ddff21e3bc963ee902005223b9a202106
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.