Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xAA230C2A...D904534Ec The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
AutoSniper
Compiler Version
v0.8.24+commit.e11b9ed9
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.24; import {SniperState} from "./helpers/SniperStructs.sol"; import {IERC721} from "forge-std/interfaces/IERC721.sol"; import {IERC20} from "forge-std/interfaces/IERC20.sol"; import {IERC1155} from "forge-std/interfaces/IERC1155.sol"; import {Ownable} from "solady/auth/Ownable.sol"; /** * @title AutoSniper 4.0 for @oSnipeNFT * @author 0xQuit */ /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+=--::::::--=+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=:. ...... :=*%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=. .-+*%@@@@@@@@@@@@%#+=: -@@@@@@=:::=#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@%+. :=#@@@@@@@@@@@@@@@@@@@@@@@@#+#@@@@@%**+-:::-%@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@#- :+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******+-::=@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@%: =%@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%*++++++***+=+@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@= -@@@@@@@@@@@@#+-:. :-+%@@@@@%*+++++++++*#@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@#. :%@@@@@@@@@%+: ..:::::. .*@@@%*+++++++++++#@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@* =@@@@@@@@@#: .=*%@@@@@@@@@@%@@@%+----======+#@@@@@%@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@+ *@@@@@@@@#: .+%@@@@@@@@@@@@@@@@@@=-------==+#@@@@@%- -@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@# #@@@@@@@@= .*@@@@@@@@@#=. .-+#+=--------*@@@@@@@% +@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@. =@@@@@@@@- =@@@@@@@@@@: -+**+- .--=----+%@@@@@@@@@# %@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@+ .@@@@@@@@- +@@@@@@@@@@- #@@@@%+-:. :=*@#%@@@*%@@@@@@@= -@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@. #@@@@@@@+ =@@@@@@@@@@@: @@@%=-----. #@@@@@*. -@@@@@@@@ %@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@# @@@@@@@@. .@@@@@@@@@@@@% :#=:::::--*+=@@@@@@- %@@@@@@@- +@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@+ :@@@@@@@% =@@@@@@@@@@@@@%-:--::::-*@@@@@@@@@@* *@@@@@@@+ :@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@= -@@@@@@@# +@@@@@@@@@@@@@#-:---:-*@@@@@@@@@@@@# +@@@@@@@+ :@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@+ -@@@@@@@% =@@@@@@*#@@@#-::---=. -@@@@@@@@@@@@* +@@@@@@@+ :@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@# .@@@@@@@@ .@@@@@+ #*-:::--*@@# -@@@@@@@@@@@- %@@@@@@@- =@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ #@@@@@@@+ =@@@@@% .--:--+@@@@@= %@@@@@@@@@# :@@@@@@@@ %@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@= :@@@@@@@@=%@@@@@@*: :-*@@@@@@%. .@@@@@@@@@% %@@@@@@@= :@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@#+---:. .=*###*- :%@@@@@@@@# .%@@@@@@@# #@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@* %@@@@@@@@@#=------*%+- .-#@@@@@@@@%= .%@@@@@@@@. =@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@= .*@@@@@@@@+------=%@@@@@@%%%@@@@@@@@@@#- +@@@@@@@@@: :@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@#@@@@@@@@*===---=#@@@@@@@@@@@@@@@@@%*- +@@@@@@@@@# -@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@*=====+#%@@@@@%= .:--==--:. .-*@@@@@@@@@@+ +@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@+--==+#@@@@@@@@=:. :=*%@@@@@@@@@@@*. .#@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@*===+-*@@@@@@@@@@@@@@%%#####%@@@@@@@@@@@@@@@*. +@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@#+==#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#= .+@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@+==+%@@@@@@@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@*- -*@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@#=%@@@@@@@@@+ -=*%@@@@@@@@@@@@@@%*+-. :+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-. ..:::::::. .-+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+=-:........:-=+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */ contract AutoSniper is Ownable { error InsufficientBalance(); error FailedToWithdraw(); error FailedToPayAutosniper(); error FailedToPayValidator(); error OrderFailed(); error CallerNotFulfiller(); error MigrationNotEnabled(); error ArrayLengthMismatch(); error SniperIsPaused(); error FulfillerCannotHaveBalance(); event Deposit(address sniper, uint256 amount); event Withdrawal(address sniper, uint256 amount); address private fulfillerAddress = 0x7D79Bd0E4B3dC90665A3ed30Aa6C6c06c89D224E; address public nextContractVersionAddress; bool public migrationEnabled; mapping(address => SniperState) public sniperStates; constructor() { _initializeOwner(tx.origin); } // only the fulfiller can call this function modifier onlyFulfiller() { if (msg.sender != fulfillerAddress) revert CallerNotFulfiller(); _; } // allow the contract to receive Ether receive() external payable {} /** * @dev Generalized function for fulfilling orders * @param contractAddresses a list of contract addresses that will be called * @param calls a matching array to contractAddresses, each index being a call to make to a given contract * @param values a matching array to contractAddresses, each index being the value to send with the call * @param sniper the address of the sniper * @param validatorTip the amount to send to block.coinbase. Reverts if this is 0. * @param fulfillerTip the amount to send to fulfillerAddress. Reverts if this is 0. */ function snipe_2572234525( address[] calldata contractAddresses, bytes[] calldata calls, uint256[] calldata values, address sniper, uint256 validatorTip, uint256 fulfillerTip ) external onlyFulfiller { if (contractAddresses.length != calls.length) revert ArrayLengthMismatch(); if (calls.length != values.length) revert ArrayLengthMismatch(); if (sniperStates[sniper].isPaused) revert SniperIsPaused(); uint256 balanceBefore = address(this).balance; for (uint256 i = 0; i < contractAddresses.length; ++i) { (bool success,) = contractAddresses[i].call{value: values[i]}(calls[i]); if (!success) revert OrderFailed(); } (bool validatorPaid,) = block.coinbase.call{value: validatorTip}(""); if (!validatorPaid) revert FailedToPayValidator(); (bool fulfillerPaid,) = fulfillerAddress.call{value: fulfillerTip}(""); if (!fulfillerPaid) revert FailedToPayAutosniper(); uint256 balanceAfter = address(this).balance; if (balanceAfter < balanceBefore) { uint128 spent = uint128(balanceBefore - balanceAfter); if (sniperStates[sniper].ethBalance < spent) revert InsufficientBalance(); unchecked { sniperStates[sniper].ethBalance -= spent; } emit Withdrawal(sniper, spent); } else if (balanceAfter > balanceBefore) { unchecked { sniperStates[sniper].ethBalance += uint128(balanceAfter - balanceBefore); } emit Deposit(sniper, balanceAfter - balanceBefore); } } /** * @dev deposit Ether into the contract. * @param sniper is the address who's balance is affected. */ function deposit(address sniper) public payable { if (tx.origin == fulfillerAddress) revert FulfillerCannotHaveBalance(); unchecked { sniperStates[sniper].ethBalance += uint128(msg.value); } emit Deposit(sniper, msg.value); } /** * @dev deposit Ether into your own contract balance. */ function depositSelf() external payable { deposit(msg.sender); } /** * @dev withdraw Ether from your contract balance * @param amount the amount of Ether to be withdrawn */ function withdraw(uint256 amount) external { if (tx.origin == fulfillerAddress) revert FulfillerCannotHaveBalance(); if (sniperStates[msg.sender].ethBalance < amount) revert InsufficientBalance(); unchecked { sniperStates[msg.sender].ethBalance -= uint128(amount); } (bool success,) = payable(msg.sender).call{value: amount}(""); if (!success) revert FailedToWithdraw(); emit Withdrawal(msg.sender, amount); } function setUserIsPaused(bool isPaused) external { sniperStates[msg.sender].isPaused = isPaused; } /** * @dev Owner function to change fulfiller address if needed. */ function setFulfillerAddress(address _fulfiller) external onlyOwner { fulfillerAddress = _fulfiller; } /** * Enables migration and sets a destination address (the new contract) * @param _destination the new AutoSniper version to allow migration to. */ function setMigrationAddress(address _destination) external onlyOwner { migrationEnabled = true; nextContractVersionAddress = _destination; } /** * @dev in the event of a future contract upgrade, this function allows snipers to * easily move their ether balance to the new contract. This can only be called by * the sniper to move their personal balance - the contract owner or anybody else * does not have the power to migrate balances for users. */ function migrateBalance() external { if (!migrationEnabled) revert MigrationNotEnabled(); uint256 balanceToMigrate = sniperStates[msg.sender].ethBalance; sniperStates[msg.sender].ethBalance = 0; (bool success,) = nextContractVersionAddress.call{value: balanceToMigrate}( abi.encodeWithSelector(this.deposit.selector, msg.sender) ); if (!success) revert FailedToWithdraw(); } function sniperBalance(address sniper) external view returns (uint128) { return sniperStates[sniper].ethBalance; } function onERC1155Received(address, address, uint256, uint256, bytes calldata) public virtual returns (bytes4) { return this.onERC1155Received.selector; } function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) public virtual returns (bytes4) { return this.onERC1155BatchReceived.selector; } function onERC721Received(address, address, uint256, bytes calldata) external virtual returns (bytes4) { return 0x150b7a02; } // Used by ERC721BasicToken.sol function onERC721Received(address, uint256, bytes calldata) external virtual returns (bytes4) { return 0xf0b9e5ba; } function supportsInterface(bytes4 interfaceId) external view virtual returns (bool) { return interfaceId == this.supportsInterface.selector; } // Emergency function: In case any ERC20 tokens get stuck in the contract unintentionally // Only owner can retrieve the asset balance to a recipient address function rescueERC20(address asset, address recipient) external onlyOwner { IERC20 token = IERC20(asset); token.transfer(recipient, token.balanceOf(address(this))); } // Emergency function: In case any ERC721 tokens get stuck in the contract unintentionally // Only owner can retrieve the asset balance to a recipient address function rescueERC721(address asset, uint256[] calldata ids, address recipient) external onlyOwner { for (uint256 i = 0; i < ids.length; i++) { IERC721(asset).transferFrom(address(this), recipient, ids[i]); } } // Emergency function: In case any ERC1155 tokens get stuck in the contract unintentionally // Only owner can retrieve the asset balance to a recipient address function rescueERC1155(address asset, uint256[] calldata ids, uint256[] calldata amounts, address recipient) external onlyOwner { for (uint256 i = 0; i < ids.length; i++) { IERC1155(asset).safeTransferFrom(address(this), recipient, ids[i], amounts[i], ""); } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.24; struct SniperState { uint128 ethBalance; bool isPaused; }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2; import "./IERC165.sol"; /// @title ERC-721 Non-Fungible Token Standard /// @dev See https://eips.ethereum.org/EIPS/eip-721 /// Note: the ERC-165 identifier for this interface is 0x80ac58cd. interface IERC721 is IERC165 { /// @dev This emits when ownership of any NFT changes by any mechanism. /// This event emits when NFTs are created (`from` == 0) and destroyed /// (`to` == 0). Exception: during contract creation, any number of NFTs /// may be created and assigned without emitting Transfer. At the time of /// any transfer, the approved address for that NFT (if any) is reset to none. event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. /// When a Transfer event emits, this also indicates that the approved /// address for that NFT (if any) is reset to none. event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); /// @dev This emits when an operator is enabled or disabled for an owner. /// The operator can manage all NFTs of the owner. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @notice Count all NFTs assigned to an owner /// @dev NFTs assigned to the zero address are considered invalid, and this /// function throws for queries about the zero address. /// @param _owner An address for whom to query the balance /// @return The number of NFTs owned by `_owner`, possibly zero function balanceOf(address _owner) external view returns (uint256); /// @notice Find the owner of an NFT /// @dev NFTs assigned to zero address are considered invalid, and queries /// about them do throw. /// @param _tokenId The identifier for an NFT /// @return The address of the owner of the NFT function ownerOf(uint256 _tokenId) external view returns (address); /// @notice Transfers the ownership of an NFT from one address to another address /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. When transfer is complete, this function /// checks if `_to` is a smart contract (code size > 0). If so, it calls /// `onERC721Received` on `_to` and throws if the return value is not /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer /// @param data Additional data with no specified format, sent in call to `_to` function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; /// @notice Transfers the ownership of an NFT from one address to another address /// @dev This works identically to the other function with an extra data parameter, /// except this function just sets data to "". /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE /// THEY MAY BE PERMANENTLY LOST /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function transferFrom(address _from, address _to, uint256 _tokenId) external payable; /// @notice Change or reaffirm the approved address for an NFT /// @dev The zero address indicates there is no approved address. /// Throws unless `msg.sender` is the current NFT owner, or an authorized /// operator of the current owner. /// @param _approved The new approved NFT controller /// @param _tokenId The NFT to approve function approve(address _approved, uint256 _tokenId) external payable; /// @notice Enable or disable approval for a third party ("operator") to manage /// all of `msg.sender`'s assets /// @dev Emits the ApprovalForAll event. The contract MUST allow /// multiple operators per owner. /// @param _operator Address to add to the set of authorized operators /// @param _approved True if the operator is approved, false to revoke approval function setApprovalForAll(address _operator, bool _approved) external; /// @notice Get the approved address for a single NFT /// @dev Throws if `_tokenId` is not a valid NFT. /// @param _tokenId The NFT to find the approved address for /// @return The approved address for this NFT, or the zero address if there is none function getApproved(uint256 _tokenId) external view returns (address); /// @notice Query if an address is an authorized operator for another address /// @param _owner The address that owns the NFTs /// @param _operator The address that acts on behalf of the owner /// @return True if `_operator` is an approved operator for `_owner`, false otherwise function isApprovedForAll(address _owner, address _operator) external view returns (bool); } /// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. interface IERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. Return of other than the magic value MUST result in the /// transaction being reverted. /// Note: the contract address is always the message sender. /// @param _operator The address which called `safeTransferFrom` function /// @param _from The address which previously owned the token /// @param _tokenId The NFT identifier which is being transferred /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` /// unless throwing function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns (bytes4); } /// @title ERC-721 Non-Fungible Token Standard, optional metadata extension /// @dev See https://eips.ethereum.org/EIPS/eip-721 /// Note: the ERC-165 identifier for this interface is 0x5b5e139f. interface IERC721Metadata is IERC721 { /// @notice A descriptive name for a collection of NFTs in this contract function name() external view returns (string memory _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external view returns (string memory _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string memory); } /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension /// @dev See https://eips.ethereum.org/EIPS/eip-721 /// Note: the ERC-165 identifier for this interface is 0x780e9d63. interface IERC721Enumerable is IERC721 { /// @notice Count NFTs tracked by this contract /// @return A count of valid NFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address function totalSupply() external view returns (uint256); /// @notice Enumerate valid NFTs /// @dev Throws if `_index` >= `totalSupply()`. /// @param _index A counter less than `totalSupply()` /// @return The token identifier for the `_index`th NFT, /// (sort order not specified) function tokenByIndex(uint256 _index) external view returns (uint256); /// @notice Enumerate NFTs assigned to an owner /// @dev Throws if `_index` >= `balanceOf(_owner)` or if /// `_owner` is the zero address, representing invalid NFTs. /// @param _owner An address where we are interested in NFTs owned by them /// @param _index A counter less than `balanceOf(_owner)` /// @return The token identifier for the `_index`th NFT assigned to `_owner`, /// (sort order not specified) function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2; /// @dev Interface of the ERC20 standard as defined in the EIP. /// @dev This includes the optional name, symbol, and decimals metadata. interface IERC20 { /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). event Transfer(address indexed from, address indexed to, uint256 value); /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value` /// is the new allowance. event Approval(address indexed owner, address indexed spender, uint256 value); /// @notice Returns the amount of tokens in existence. function totalSupply() external view returns (uint256); /// @notice Returns the amount of tokens owned by `account`. function balanceOf(address account) external view returns (uint256); /// @notice Moves `amount` tokens from the caller's account to `to`. function transfer(address to, uint256 amount) external returns (bool); /// @notice Returns the remaining number of tokens that `spender` is allowed /// to spend on behalf of `owner` function allowance(address owner, address spender) external view returns (uint256); /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens. /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 function approve(address spender, uint256 amount) external returns (bool); /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism. /// `amount` is then deducted from the caller's allowance. function transferFrom(address from, address to, uint256 amount) external returns (bool); /// @notice Returns the name of the token. function name() external view returns (string memory); /// @notice Returns the symbol of the token. function symbol() external view returns (string memory); /// @notice Returns the decimals places of the token. function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2; import "./IERC165.sol"; /// @title ERC-1155 Multi Token Standard /// @dev See https://eips.ethereum.org/EIPS/eip-1155 /// Note: The ERC-165 identifier for this interface is 0xd9b67a26. interface IERC1155 is IERC165 { /// @dev /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). /// - The `_from` argument MUST be the address of the holder whose balance is decreased. /// - The `_to` argument MUST be the address of the recipient whose balance is increased. /// - The `_id` argument MUST be the token type being transferred. /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). event TransferSingle( address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value ); /// @dev /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). /// - The `_from` argument MUST be the address of the holder whose balance is decreased. /// - The `_to` argument MUST be the address of the recipient whose balance is increased. /// - The `_ids` argument MUST be the list of tokens being transferred. /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). event TransferBatch( address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values ); /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled). event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". event URI(string _value, uint256 indexed _id); /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). /// - MUST revert if `_to` is the zero address. /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent. /// - MUST revert on any other error. /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). /// @param _from Source address /// @param _to Target address /// @param _id ID of the token type /// @param _value Transfer amount /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). /// - MUST revert if `_to` is the zero address. /// - MUST revert if length of `_ids` is not the same as length of `_values`. /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. /// - MUST revert on any other error. /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). /// @param _from Source address /// @param _to Target address /// @param _ids IDs of each token type (order and length must match _values array) /// @param _values Transfer amounts per token type (order and length must match _ids array) /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` function safeBatchTransferFrom( address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data ) external; /// @notice Get the balance of an account's tokens. /// @param _owner The address of the token holder /// @param _id ID of the token /// @return The _owner's balance of the token type requested function balanceOf(address _owner, uint256 _id) external view returns (uint256); /// @notice Get the balance of multiple account/token pairs /// @param _owners The addresses of the token holders /// @param _ids ID of the tokens /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory); /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. /// @dev MUST emit the ApprovalForAll event on success. /// @param _operator Address to add to the set of authorized operators /// @param _approved True if the operator is approved, false to revoke approval function setApprovalForAll(address _operator, bool _approved) external; /// @notice Queries the approval status of an operator for a given owner. /// @param _owner The owner of the tokens /// @param _operator Address of authorized operator /// @return True if the operator is approved, false if not function isApprovedForAll(address _owner, address _operator) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice Simple single owner authorization mixin. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol) /// /// @dev Note: /// This implementation does NOT auto-initialize the owner to `msg.sender`. /// You MUST call the `_initializeOwner` in the constructor / initializer. /// /// While the ownable portion follows /// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility, /// the nomenclature for the 2-step ownership handover may be unique to this codebase. abstract contract Ownable { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The caller is not authorized to call the function. error Unauthorized(); /// @dev The `newOwner` cannot be the zero address. error NewOwnerIsZeroAddress(); /// @dev The `pendingOwner` does not have a valid handover request. error NoHandoverRequest(); /// @dev Cannot double-initialize. error AlreadyInitialized(); /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* EVENTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The ownership is transferred from `oldOwner` to `newOwner`. /// This event is intentionally kept the same as OpenZeppelin's Ownable to be /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), /// despite it not being as lightweight as a single argument event. event OwnershipTransferred(address indexed oldOwner, address indexed newOwner); /// @dev An ownership handover to `pendingOwner` has been requested. event OwnershipHandoverRequested(address indexed pendingOwner); /// @dev The ownership handover to `pendingOwner` has been canceled. event OwnershipHandoverCanceled(address indexed pendingOwner); /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`. uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE = 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0; /// @dev `keccak256(bytes("OwnershipHandoverRequested(address)"))`. uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE = 0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d; /// @dev `keccak256(bytes("OwnershipHandoverCanceled(address)"))`. uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE = 0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* STORAGE */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The owner slot is given by: /// `bytes32(~uint256(uint32(bytes4(keccak256("_OWNER_SLOT_NOT")))))`. /// It is intentionally chosen to be a high value /// to avoid collision with lower slots. /// The choice of manual storage layout is to enable compatibility /// with both regular and upgradeable contracts. bytes32 internal constant _OWNER_SLOT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927; /// The ownership handover slot of `newOwner` is given by: /// ``` /// mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED)) /// let handoverSlot := keccak256(0x00, 0x20) /// ``` /// It stores the expiry timestamp of the two-step ownership handover. uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* INTERNAL FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Override to return true to make `_initializeOwner` prevent double-initialization. function _guardInitializeOwner() internal pure virtual returns (bool guard) {} /// @dev Initializes the owner directly without authorization guard. /// This function must be called upon initialization, /// regardless of whether the contract is upgradeable or not. /// This is to enable generalization to both regular and upgradeable contracts, /// and to save gas in case the initial owner is not the caller. /// For performance reasons, this function will not check if there /// is an existing owner. function _initializeOwner(address newOwner) internal virtual { if (_guardInitializeOwner()) { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT if sload(ownerSlot) { mstore(0x00, 0x0dc149f0) // `AlreadyInitialized()`. revert(0x1c, 0x04) } // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Store the new value. sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner)))) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner) } } else { /// @solidity memory-safe-assembly assembly { // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Store the new value. sstore(_OWNER_SLOT, newOwner) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner) } } } /// @dev Sets the owner directly without authorization guard. function _setOwner(address newOwner) internal virtual { if (_guardInitializeOwner()) { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner) // Store the new value. sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner)))) } } else { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner) // Store the new value. sstore(ownerSlot, newOwner) } } } /// @dev Throws if the sender is not the owner. function _checkOwner() internal view virtual { /// @solidity memory-safe-assembly assembly { // If the caller is not the stored owner, revert. if iszero(eq(caller(), sload(_OWNER_SLOT))) { mstore(0x00, 0x82b42900) // `Unauthorized()`. revert(0x1c, 0x04) } } } /// @dev Returns how long a two-step ownership handover is valid for in seconds. /// Override to return a different value if needed. /// Made internal to conserve bytecode. Wrap it in a public function if needed. function _ownershipHandoverValidFor() internal view virtual returns (uint64) { return 48 * 3600; } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* PUBLIC UPDATE FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Allows the owner to transfer the ownership to `newOwner`. function transferOwnership(address newOwner) public payable virtual onlyOwner { /// @solidity memory-safe-assembly assembly { if iszero(shl(96, newOwner)) { mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`. revert(0x1c, 0x04) } } _setOwner(newOwner); } /// @dev Allows the owner to renounce their ownership. function renounceOwnership() public payable virtual onlyOwner { _setOwner(address(0)); } /// @dev Request a two-step ownership handover to the caller. /// The request will automatically expire in 48 hours (172800 seconds) by default. function requestOwnershipHandover() public payable virtual { unchecked { uint256 expires = block.timestamp + _ownershipHandoverValidFor(); /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to `expires`. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, caller()) sstore(keccak256(0x0c, 0x20), expires) // Emit the {OwnershipHandoverRequested} event. log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller()) } } } /// @dev Cancels the two-step ownership handover to the caller, if any. function cancelOwnershipHandover() public payable virtual { /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to 0. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, caller()) sstore(keccak256(0x0c, 0x20), 0) // Emit the {OwnershipHandoverCanceled} event. log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller()) } } /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`. /// Reverts if there is no existing ownership handover requested by `pendingOwner`. function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner { /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to 0. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, pendingOwner) let handoverSlot := keccak256(0x0c, 0x20) // If the handover does not exist, or has expired. if gt(timestamp(), sload(handoverSlot)) { mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`. revert(0x1c, 0x04) } // Set the handover slot to 0. sstore(handoverSlot, 0) } _setOwner(pendingOwner); } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* PUBLIC READ FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Returns the owner of the contract. function owner() public view virtual returns (address result) { /// @solidity memory-safe-assembly assembly { result := sload(_OWNER_SLOT) } } /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`. function ownershipHandoverExpiresAt(address pendingOwner) public view virtual returns (uint256 result) { /// @solidity memory-safe-assembly assembly { // Compute the handover slot. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, pendingOwner) // Load the handover slot. result := sload(keccak256(0x0c, 0x20)) } } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* MODIFIERS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Marks a function as only callable by the owner. modifier onlyOwner() virtual { _checkOwner(); _; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2; interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); }
{ "viaIR": false, "codegen": "yul", "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "solady/=lib/solady/src/", "soladytest/=lib/solady/test/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solmate/=lib/solmate/src/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "detectMissingLibraries": false, "enableEraVMExtensions": false, "forceEVMLA": false }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"CallerNotFulfiller","type":"error"},{"inputs":[],"name":"FailedToPayAutosniper","type":"error"},{"inputs":[],"name":"FailedToPayValidator","type":"error"},{"inputs":[],"name":"FailedToWithdraw","type":"error"},{"inputs":[],"name":"FulfillerCannotHaveBalance","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"MigrationNotEnabled","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"OrderFailed","type":"error"},{"inputs":[],"name":"SniperIsPaused","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sniper","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"depositSelf","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"migrateBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextContractVersionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fulfiller","type":"address"}],"name":"setFulfillerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_destination","type":"address"}],"name":"setMigrationAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool"}],"name":"setUserIsPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"contractAddresses","type":"address[]"},{"internalType":"bytes[]","name":"calls","type":"bytes[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"address","name":"sniper","type":"address"},{"internalType":"uint256","name":"validatorTip","type":"uint256"},{"internalType":"uint256","name":"fulfillerTip","type":"uint256"}],"name":"snipe_2572234525","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sniper","type":"address"}],"name":"sniperBalance","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sniperStates","outputs":[{"internalType":"uint128","name":"ethBalance","type":"uint128"},{"internalType":"bool","name":"isPaused","type":"bool"}],"stateMutability":"view","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x0004000000000002000900000000000200000000030200190000006004100270000002060240019700030000002103550002000000010355000002060040019d0000008004000039000000400040043f0000000100300190000000a90000c13d000000040020008c000000cf0000413d000000000301043b000000e0033002700000020f0030009c000000d30000a13d000002100030009c000000ee0000213d0000021a0030009c000001970000a13d0000021b0030009c000001d20000213d0000021e0030009c000001f60000613d0000021f0030009c000005550000c13d000000840020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000303043b000900000003001d000002340030009c000005550000213d0000002403100370000000000303043b000002390030009c000005550000213d0000002304300039000000000024004b000005550000813d0000000404300039000000000441034f000000000404043b000500000004001d000002390040009c000005550000213d000400240030003d000000050300002900000005033002100000000403300029000000000023004b000005550000213d0000004403100370000000000303043b000002390030009c000005550000213d0000002304300039000000000024004b000005550000813d0000000404300039000000000441034f000000000404043b000300000004001d000002390040009c000005550000213d000200240030003d000000030300002900000005033002100000000203300029000000000023004b000005550000213d0000006401100370000000000101043b000100000001001d000002340010009c000005550000213d0000020b01000041000000000101041a0000000002000411000000000012004b000004100000c13d000000050000006b000000d10000613d0000000004000019000000050140021000000004031000290000000202000367000000000332034f000000000303043b000700000003001d000800000004001d000000030040006c000005e00000813d0000000201100029000000000112034f000000000101043b000600000001001d00000244010000410000000000100443000000090100002900000004001004430000000001000414000002060010009c0000020601008041000000c00110021000000245011001c700008002020000390814080f0000040f0000000100200190000007320000613d000000000101043b000000000001004b0000000804000029000005550000613d000000400500043d0000008401500039000000a002000039000000000021043500000064015000390000000602000029000000000021043500000044015000390000000702000029000000000021043500000024015000390000000102000029000000000021043500000246010000410000000000150435000000040150003900000000020004100000000000210435000000a401500039000000000001043500000000010004140000000902000029000000040020008c000000a20000613d000002060050009c000002060200004100000000020540190000004002200210000002060010009c0000020601008041000000c001100210000000000121019f00000247011001c70000000902000029000700000005001d0814080a0000040f000000070500002900000008040000290000006003100270000102060030019d00030000000103550000000100200190000005e60000613d000002390050009c000004320000213d000000400050043f0000000104400039000000050040006c000000590000413d000000d10000013d0000000001000416000000000001004b000005550000c13d000000000100041a000002070110019700000208011001c7000000000010041b000002090100004100000000001004430000000001000414000002060010009c0000020601008041000000c0011002100000020a011001c70000800b020000390814080f0000040f0000000100200190000007320000613d000000000601043b0000020b01000041000000000061041b0000000001000414000002060010009c0000020601008041000000c0011002100000020c011001c70000800d0200003900000003030000390000020d0400004100000000050000190814080a0000040f0000000100200190000005550000613d0000002001000039000001000010044300000120000004430000020e01000041000008150001042e000000000002004b000005550000c13d0000000001000019000008150001042e000002230030009c000001090000a13d000002240030009c000001a20000a13d000002250030009c000001ca0000213d000002280030009c0000027a0000613d000002290030009c000005550000c13d000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b000900000001001d000002340010009c000005550000213d081407ea0000040f000000000100041a000002070110019700000009011001af000000000010041b0000000001000019000008150001042e000002110030009c000001b30000a13d000002120030009c000001df0000213d000002150030009c0000028d0000613d000002160030009c000005550000c13d000000240020008c000005550000413d0000000401100370000000000101043b000900000001001d000002340010009c000005550000213d0000020b01000041000000000501041a0000000001000411000000000051004b000004100000c13d0000000906000029000000000006004b0000044d0000c13d0000023701000041000000000010043f000002380100004100000816000104300000022d0030009c000001260000213d000002310030009c000002a80000613d000002320030009c000002b70000613d000002330030009c000005550000c13d000000840020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000303043b000002340030009c000005550000213d0000002403100370000000000303043b000002340030009c000005550000213d0000006401100370000000000101043b000002390010009c000005550000213d0000000401100039081407860000040f0000026e01000041000002a10000013d0000022e0030009c000002d40000613d0000022f0030009c000002ec0000613d000002300030009c000005550000c13d000000640020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000303043b000900000003001d000002340030009c000005550000213d0000002403100370000000000303043b000002390030009c000005550000213d0000002304300039000000000024004b000005550000813d0000000404300039000000000441034f000000000404043b000600000004001d000002390040009c000005550000213d000500240030003d000000060300002900000005033002100000000503300029000000000023004b000005550000213d0000004401100370000000000101043b000002340010009c000005550000213d0000020b02000041000000000202041a0000000003000411000000000023004b000004100000c13d000000060000006b000000d10000613d000402340010019b0000000004000019000800000004001d000000050140021000000005011000290000000201100367000000000101043b000700000001001d00000244010000410000000000100443000000090100002900000004001004430000000001000414000002060010009c0000020601008041000000c00110021000000245011001c700008002020000390814080f0000040f0000000100200190000007320000613d000000000101043b000000000001004b0000000804000029000005550000613d000000400500043d0000004401500039000000070200002900000000002104350000002401500039000000040200002900000000002104350000026801000041000000000015043500000004015000390000000002000410000000000021043500000000010004140000000902000029000000040020008c000001900000613d000002060050009c000002060200004100000000020540190000004002200210000002060010009c0000020601008041000000c001100210000000000121019f00000269011001c70000000902000029000700000005001d0814080a0000040f000000070500002900000008040000290000006003100270000102060030019d00030000000103550000000100200190000005cb0000613d0000026a0050009c000004320000813d000000400050043f0000000104400039000000060040006c000001560000413d000000d10000013d000002200030009c000003130000613d000002210030009c000003340000613d000002220030009c000005550000c13d0000000001000416000000000001004b000005550000c13d0000020b01000041000001da0000013d0000022a0030009c000003490000613d0000022b0030009c000003540000613d0000022c0030009c000005550000c13d0000000001000416000000000001004b000005550000c13d0000000101000039000000000101041a00000260001001980000000001000039000000010100c039000000800010043f0000023601000041000008150001042e000002170030009c000003710000613d000002180030009c000003850000613d000002190030009c000005550000c13d000000640020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000303043b000002340030009c000005550000213d0000004401100370000000000101043b000002390010009c000005550000213d0000000401100039081407860000040f0000023c01000041000002a10000013d000002260030009c000003b40000613d000002270030009c000005550000c13d00000000010004110814079f0000040f0000000001000019000008150001042e0000021c0030009c000003d00000613d0000021d0030009c000005550000c13d0000000001000416000000000001004b000005550000c13d0000000101000039000000000101041a0000023401100197000000800010043f0000023601000041000008150001042e000002130030009c000004070000613d000002140030009c000005550000c13d000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b000002340010009c000005550000213d00000235020000410000000c0020043f000000000010043f0000000c010000390000002002000039081407f50000040f000000000101041a000000800010043f0000023601000041000008150001042e000000c40020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000403043b000002390040009c000005550000213d0000002303400039000000000023004b000005550000813d0000000403400039000000000331034f000000000303043b000002390030009c000005550000213d000600240040003d00000005043002100000000604400029000000000024004b000005550000213d0000002404100370000000000404043b000700000004001d000002390040009c000005550000213d00000007040000290000002304400039000000000024004b000005550000813d00000007040000290000000404400039000000000441034f000000000404043b000002390040009c000005550000213d0000000705000029000900240050003d00000005054002100000000905500029000000000025004b000005550000213d0000004405100370000000000505043b000002390050009c000005550000213d0000002306500039000000000026004b000005550000813d0000000406500039000000000661034f000000000606043b000500000006001d000002390060009c000005550000213d000400240050003d000000050500002900000005055002100000000405500029000000000025004b000005550000213d0000006401100370000000000101043b000300000001001d000002340010009c000005550000213d000000000100041a00000234011001970000000002000411000000000012004b000005d80000c13d000000000043004b000005dc0000c13d000000050030006c000005dc0000c13d0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000000000101041a0000024d00100198000005f30000c13d00000250010000410000000000100443000000000100041000000004001004430000000001000414000002060010009c0000020601008041000000c00110021000000245011001c70000800a020000390814080f0000040f0000000100200190000007320000613d000000000101043b000200000001001d000000050000006b000005f60000c13d00000084010000390000000201100367000000000101043b000900000001001d000002530100004100000000001004430000000001000414000002060010009c0000020601008041000000c0011002100000020a011001c70000800b020000390814080f0000040f0000000100200190000007320000613d000000000401043b0000000001000414000000040040008c0000068e0000c13d00000001020000390000000101000031000006a10000013d000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b000900000001001d000002340010009c000005550000213d081407ea0000040f0000000101000039000000000201041a0000025e0220019700000009022001af0000025f022001c7000000000021041b0000000001000019000008150001042e000000a40020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000303043b000002340030009c000005550000213d0000002403100370000000000303043b000002340030009c000005550000213d0000008401100370000000000101043b000002390010009c000005550000213d0000000401100039081407860000040f0000023a01000041000000400200043d0000000000120435000002060020009c000002060200804100000040012002100000023b011001c7000008150001042e000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b0000027100100198000005550000c13d000002720010009c00000000010000390000000101006039000000800010043f0000023601000041000008150001042e000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000201043b000000000002004b0000000001000039000000010100c039000900000002001d000000000012004b000005550000c13d0000000001000411000000000010043f0000000201000039000000200010043f00000040020000390000000001000019081407f50000040f000000090000006b00000000020000190000026f0200c041000000000301041a0000027003300197000000000223019f000000000021041b0000000001000019000008150001042e000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b000002340010009c000005550000213d000000000010043f0000000201000039000000200010043f00000040020000390000000001000019081407f50000040f000000000101041a0000024002100197000000800020043f0000024d001001980000000001000039000000010100c039000000a00010043f0000026d01000041000008150001042e00000235010000410000000c0010043f0000000001000411000000000010043f0000023e0100004100000000001004430000000001000414000002060010009c0000020601008041000000c0011002100000020a011001c70000800b020000390814080f0000040f0000000100200190000007320000613d000000000101043b000900000001001d0000000001000414000002060010009c0000020601008041000000c0011002100000023d011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b00000009020000290000026b0220009a000000000021041b0000000001000414000002060010009c0000020601008041000000c0011002100000020c011001c70000800d0200003900000002030000390000026c04000041000003cb0000013d000000440020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000402100370000000000202043b000900000002001d000002340020009c000005550000213d0000002401100370000000000101043b000800000001001d000002340010009c000005550000213d0000020b01000041000000000101041a0000000002000411000000000012004b000004100000c13d0000025901000041000000800010043f0000000001000410000000840010043f00000000010004140000000902000029000000040020008c000004660000c13d0000000103000031000000200030008c000000200400003900000000040340190000048b0000013d0000020b01000041000000000501041a0000000001000411000000000051004b000004100000c13d0000000001000414000002060010009c0000020601008041000000c0011002100000020c011001c70000800d0200003900000003030000390000020d0400004100000000060000190814080a0000040f0000000100200190000005550000613d0000020b01000041000000000001041b0000000001000019000008150001042e0000000001000416000000000001004b000005550000c13d0000000101000039000000000101041a0000026000100198000004140000c13d0000026601000041000000800010043f0000024a010000410000081600010430000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b000800000001001d000000000100041a000900000001001d000002090100004100000000001004430000000001000414000002060010009c0000020601008041000000c0011002100000020a011001c70000800b020000390814080f0000040f0000000100200190000007320000613d00000009020000290000023402200197000000000101043b000000000021004b000004380000c13d000000400100043d0000026202000041000005c50000013d000000240020008c000005550000413d0000000002000416000000000002004b000005550000c13d0000000401100370000000000101043b000002340010009c000005550000213d000000000010043f0000000201000039000000200010043f00000040020000390000000001000019081407f50000040f000000000101041a0000024001100197000000800010043f0000023601000041000008150001042e000000240020008c000005550000413d0000000401100370000000000101043b000900000001001d000002340010009c000005550000213d0000020b01000041000000000101041a0000000002000411000000000012004b000004100000c13d00000235010000410000000c0010043f0000000901000029000000000010043f0000000001000414000002060010009c0000020601008041000000c0011002100000023d011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000700000001001d000000000101041a000800000001001d0000023e0100004100000000001004430000000001000414000002060010009c0000020601008041000000c0011002100000020a011001c70000800b020000390814080f0000040f0000000100200190000007320000613d000000000101043b000000080010006c000004cb0000a13d0000023f01000041000000000010043f0000023801000041000008160001043000000235010000410000000c0010043f0000000001000411000000000010043f0000000001000414000002060010009c0000020601008041000000c0011002100000023d011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000000000001041b0000000001000414000002060010009c0000020601008041000000c0011002100000020c011001c70000800d0200003900000002030000390000025d0400004100000000050004110814080a0000040f0000000100200190000000d10000c13d000005550000013d000000a40020008c000005550000413d0000000003000416000000000003004b000005550000c13d0000000403100370000000000303043b000002340030009c000005550000213d0000002403100370000000000303043b000002340030009c000005550000213d0000004403100370000000000303043b000002390030009c000005550000213d0000002304300039000000000024004b000005550000813d0000000404300039000000000441034f000000000404043b000002390040009c000005550000213d000000050440021000000000034300190000002403300039000000000023004b000005550000213d0000006403100370000000000303043b000002390030009c000005550000213d0000002304300039000000000024004b000005550000813d0000000404300039000000000441034f000000000404043b000002390040009c000005550000213d000000050440021000000000034300190000002403300039000000000023004b000005550000213d0000008401100370000000000101043b000002390010009c000005550000213d0000000401100039081407860000040f0000024101000041000002a10000013d000000240020008c000005550000413d0000000401100370000000000101043b000002340010009c000005550000213d0814079f0000040f0000000001000019000008150001042e0000026701000041000000000010043f000002380100004100000816000104300000000001000411000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000201043b000000000102041a0000025603100197000000000032041b0000000102000039000000000402041a000000400300043d00000020073000390000026305000041000000000057043500000024053000390000000006000411000000000065043500000024050000390000000000530435000002640030009c0000045d0000a13d0000024201000041000000000010043f0000004101000039000000040010043f000002430100004100000816000104300000000001000411000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000000000101041a0000024001100197000000080010006c000004a20000813d000000400100043d0000026102000041000005c50000013d0000000001000414000002060010009c0000020601008041000000c0011002100000020c011001c70000800d0200003900000003030000390000020d040000410814080a0000040f0000000100200190000005550000613d0000020b010000410000000902000029000000000021041b0000000001000019000008150001042e00000234044001970000006005300039000000400050043f00000000060304330000000005000414000000040040008c000004bb0000c13d0000000101000031000004f40000013d000002060010009c0000020601008041000000c0011002100000025a011001c70814080f0000040f00000060031002700000020603300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000800a0000390000047a0000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000004760000c13d000000000006004b000004870000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000004e00000613d0000001f01400039000000600110018f00000080021001bf000700000002001d000000400020043f000000200030008c000005550000413d000000800200043d0000025b030000410000000705000029000000000035043500000084031001bf00000008040000290000000000430435000000a403100039000000000023043500000000030004140000000902000029000000040020008c000005210000c13d0000000001150019000000400010043f0000054e0000013d0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000000000201041a000000080320006a00000240033001970000025602200197000000000223019f000000000021041b00000000010004140000000002000411000000040020008c000005570000c13d00000001020000390000000101000031000005860000013d0000024003100197000002060070009c00000206070080410000004001700210000002060060009c00000206060080410000006002600210000000000112019f000002060050009c0000020605008041000000c002500210000000000121019f000000000003004b000004ec0000c13d0000000002040019000004ef0000013d0000000701000029000000000001041b0000020b01000041000000000501041a0000000001000414000002060010009c0000020601008041000000c0011002100000020c011001c70000800d0200003900000003030000390000020d0400004100000009060000290814080a0000040f0000000100200190000005550000613d00000009010000290000020b02000041000000000012041b0000000001000019000008150001042e0000001f0530018f0000024806300198000000400200043d0000000004620019000005690000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000004e70000c13d000005690000013d0000020c011001c7000080090200003900000000050000190814080a0000040f00030000000103550000006001100270000102060010019d0000020601100197000000000001004b000004fa0000c13d0000000100200190000000d10000c13d000000400100043d000005c40000013d0000001f0310003900000273033001970000003f033000390000027304300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000002390040009c000004320000213d0000000100500190000004320000c13d000000400040043f000000000513043600000273081001980000001f0310018f00000000018500190000000304000367000005130000613d000000000604034f000000006706043c0000000005750436000000000015004b0000050f0000c13d000000000003004b000004f60000613d000000000584034f0000000303300210000000000401043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000310435000004f60000013d000002060030009c0000020603008041000000c0013002100000004003500210000000000131019f0000025c011001c70814080a0000040f00000060031002700000020603300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000005370000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000005330000c13d000000000006004b000005440000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000055e0000613d0000001f01400039000000600110018f0000000701100029000000400010043f000000200030008c000005550000413d00000007010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000d10000613d00000000010000190000081600010430000002060010009c0000020601008041000000c001100210000000080000006b0000057c0000c13d0000000002000411000005810000013d0000001f0530018f0000024806300198000000400200043d0000000004620019000005690000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005650000c13d000000000005004b000005760000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000002060020009c00000206020080410000004002200210000000000112019f00000816000104300000020c011001c700008009020000390000000803000029000000000400041100000000050000190814080a0000040f00030000000103550000006001100270000102060010019d0000020601100197000000000001004b000005ae0000613d0000001f0410003900000273044001970000003f044000390000027305400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000002390050009c000004320000213d0000000100600190000004320000c13d000000400050043f000000000614043600000273031001980000001f0410018f00000000013600190000000305000367000005a10000613d000000000705034f000000007807043c0000000006860436000000000016004b0000059d0000c13d000000000004004b000005ae0000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000400100043d0000000100200190000005c40000613d000000200210003900000008030000290000000000320435000000000200041100000234022001970000000000210435000002060010009c000002060100804100000040011002100000000002000414000002060020009c0000020602008041000000c002200210000000000112019f0000024c011001c70000800d0200003900000001030000390000025804000041000003cc0000013d00000265020000410000000000210435000002060010009c000002060100804100000040011002100000024f011001c7000008160001043000000206033001970000001f0530018f0000024806300198000000400200043d0000000004620019000005690000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005d30000c13d000005690000013d0000024901000041000000800010043f0000024a0100004100000816000104300000024b01000041000000800010043f0000024a0100004100000816000104300000024201000041000000000010043f0000003201000039000000040010043f0000024301000041000008160001043000000206033001970000001f0530018f0000024806300198000000400200043d0000000004620019000005690000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005ee0000c13d000005690000013d000000400100043d0000024e02000041000005c50000013d0000000002000019000800000002001d000000050120021000000006031000290000000202000367000000000332034f000000000403043b000002340040009c000005550000213d0000000903100029000000000332034f000000000603043b0000000005000031000000070350006a000000430330008a00000251073001970000025108600197000000000978013f000000000078004b00000000070000190000025107004041000000000036004b00000000030000190000025103008041000002510090009c000000000703c0190000000401100029000000000112034f000000000301043b000000000007004b000005550000c13d0000000906600029000000000162034f000000000101043b000002390010009c000005550000213d0000000007150049000000200560003900000251067001970000025108500197000000000968013f000000000068004b00000000060000190000025106004041000000000075004b00000000070000190000025107002041000002510090009c000000000607c019000000000006004b000005550000c13d000000000652034f0000027307100198000000400200043d0000000005720019000006340000613d000000000806034f0000000009020019000000008a08043c0000000009a90436000000000059004b000006300000c13d0000001f08100190000006410000613d000000000676034f0000000307800210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000000512001900000000000504350000000005000414000000040040008c000006490000c13d00000001010000310000000102000039000006600000013d000002060010009c00000206010080410000006001100210000002060020009c00000206020080410000004002200210000000000112019f000002060050009c0000020605008041000000c002500210000000000112019f000000000003004b0000065a0000613d0000020c011001c7000080090200003900000000050000190000065b0000013d00000000020400190814080a0000040f00030000000103550000006001100270000102060010019d0000020601100197000000000001004b000006870000613d0000001f0310003900000273033001970000003f033000390000027304300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000002390040009c000004320000213d0000000100500190000004320000c13d000000400040043f00000000061304360000027304100198000000000346001900000003050003670000067a0000613d000000000705034f000000007807043c0000000006860436000000000036004b000006760000c13d0000001f01100190000006870000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f00000000001304350000000100200190000006950000613d00000008020000290000000102200039000000050020006c000005f70000413d000002640000013d000002060010009c0000020601008041000000c001100210000000090000006b000006980000c13d00000000020400190000069c0000013d000000400100043d0000025202000041000005c50000013d0000020c011001c70000800902000039000000090300002900000000050000190814080a0000040f00030000000103550000006001100270000102060010019d0000020601100197000000000001004b000006af0000c13d0000000100200190000006d60000613d000000a4020000390000000202200367000000000302043b000000000400041a00000000020004140000023404400197000000040040008c000006d90000c13d0000000102000039000006e80000013d0000001f0410003900000273044001970000003f044000390000027305400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000002390050009c000004320000213d0000000100600190000004320000c13d000000400050043f000000000714043600000273041001980000001f0510018f00000000034700190000000306000367000006c80000613d000000000806034f000000008908043c0000000007970436000000000037004b000006c40000c13d000000000005004b000006a30000613d000000000446034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000006a30000013d000000400100043d0000025402000041000005c50000013d000002060020009c0000020602008041000000c001200210000000000003004b000006e00000c13d0000000002040019000006e30000013d0000020c011001c7000080090200003900000000050000190814080a0000040f00030000000103550000006001100270000102060010019d0000020601100197000000000001004b000007330000c13d00000001002001900000075a0000613d00000250010000410000000000100443000000000100041000000004001004430000000001000414000002060010009c0000020601008041000000c00110021000000245011001c70000800a020000390814080f0000040f0000000100200190000007320000613d000000000201043b000900000002001d00080002002000740000075d0000813d0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d00000009030000290000000202300069000800000002001d000902400020019b000000000101043b000000000101041a0000024001100197000000090010006c0000044a0000413d0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000000000201041a000000080320006a00000240033001970000025602200197000000000223019f000000000021041b000000400100043d00000020021000390000000903000029000000000032043500000003020000290000000000210435000002060010009c000002060100804100000040011002100000000002000414000005bb0000013d000000000001042f0000001f0410003900000273044001970000003f044000390000027305400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000002390050009c000004320000213d0000000100600190000004320000c13d000000400050043f000000000614043600000273031001980000001f0410018f000000000136001900000003050003670000074c0000613d000000000705034f000000007807043c0000000006860436000000000016004b000007480000c13d000000000004004b000006ea0000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000006ea0000013d000000400100043d0000025502000041000005c50000013d000000d10000a13d0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000005550000613d000000000101043b000000000201041a0000000804000029000000000342001900000240033001970000025602200197000000000223019f000000000021041b000000400100043d00000020021000390000000000420435000000030200002900000234022001970000000000210435000002060010009c000002060100804100000040011002100000000002000414000002060020009c0000020602008041000000c002200210000000000112019f0000024c011001c70000800d0200003900000001030000390000025704000041000003cc0000013d0000001f03100039000000000023004b0000000004000019000002510400404100000251052001970000025103300197000000000653013f000000000053004b00000000030000190000025103002041000002510060009c000000000304c019000000000003004b0000079d0000613d0000000203100367000000000303043b000002390030009c0000079d0000213d00000000013100190000002001100039000000000021004b0000079d0000213d000000000001042d000000000100001900000816000104300002000000000002000100000001001d000000000100041a000200000001001d000002090100004100000000001004430000000001000414000002060010009c0000020601008041000000c0011002100000020a011001c70000800b020000390814080f0000040f0000000100200190000007e10000613d00000002020000290000023402200197000000000101043b000000000021004b000007e20000613d00000001010000290000023401100197000200000001001d000000000010043f0000000201000039000000200010043f0000000001000414000002060010009c0000020601008041000000c0011002100000024c011001c700008010020000390814080f0000040f0000000100200190000007df0000613d000000000101043b000000000201041a0000000003000416000000000423001900000240044001970000025602200197000000000224019f000000000021041b000000400100043d0000002002100039000000000032043500000002020000290000000000210435000002060010009c000002060100804100000040011002100000000002000414000002060020009c0000020602008041000000c002200210000000000112019f0000024c011001c70000800d02000039000000010300003900000257040000410814080a0000040f0000000100200190000007df0000613d000000000001042d00000000010000190000081600010430000000000001042f000000400100043d00000262020000410000000000210435000002060010009c000002060100804100000040011002100000024f011001c700000816000104300000020b01000041000000000101041a0000000002000411000000000012004b000007f00000c13d000000000001042d0000026701000041000000000010043f00000238010000410000081600010430000000000001042f000002060010009c00000206010080410000004001100210000002060020009c00000206020080410000006002200210000000000112019f0000000002000414000002060020009c0000020602008041000000c002200210000000000112019f0000020c011001c700008010020000390814080f0000040f0000000100200190000008080000613d000000000101043b000000000001042d000000000100001900000816000104300000080d002104210000000102000039000000000001042d0000000002000019000000000001042d00000812002104230000000102000039000000000001042d0000000002000019000000000001042d0000081400000432000008150001042e0000081600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000007d79bd0e4b3dc90665a3ed30aa6c6c06c89d224e938b5f3299a1f3b18e458564efbb950733226014eece26fae19012d850b48d830200000200000000000000000000000000000004000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392702000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000005d799f8600000000000000000000000000000000000000000000000000000000e339d9f000000000000000000000000000000000000000000000000000000000f23a6e6000000000000000000000000000000000000000000000000000000000f340fa0000000000000000000000000000000000000000000000000000000000f340fa0100000000000000000000000000000000000000000000000000000000fee81cf400000000000000000000000000000000000000000000000000000000f23a6e6100000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000e339d9f100000000000000000000000000000000000000000000000000000000f04e283e00000000000000000000000000000000000000000000000000000000f0b9e5ba00000000000000000000000000000000000000000000000000000000b00b1e4f00000000000000000000000000000000000000000000000000000000bc197c8000000000000000000000000000000000000000000000000000000000bc197c8100000000000000000000000000000000000000000000000000000000c9c50e2300000000000000000000000000000000000000000000000000000000b00b1e5000000000000000000000000000000000000000000000000000000000b7ce33a2000000000000000000000000000000000000000000000000000000005d799f8700000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000270a6230000000000000000000000000000000000000000000000000000000004732a7db0000000000000000000000000000000000000000000000000000000054d1f13c0000000000000000000000000000000000000000000000000000000054d1f13d0000000000000000000000000000000000000000000000000000000057323648000000000000000000000000000000000000000000000000000000004732a7dc000000000000000000000000000000000000000000000000000000004c412aa300000000000000000000000000000000000000000000000000000000270a6231000000000000000000000000000000000000000000000000000000002e1a7d4d0000000000000000000000000000000000000000000000000000000035b944bf000000000000000000000000000000000000000000000000000000001a21241b000000000000000000000000000000000000000000000000000000001a21241c00000000000000000000000000000000000000000000000000000000256929620000000000000000000000000000000000000000000000000000000026e2dca20000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000115b794000000000000000000000000000000000000000000000000000000000150b7a02000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000389a75e10000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000000000007448fbae00000000000000000000000000000000000000040000001c0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffff23a6e61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f0b9e5ba0000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000200000000c0000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132000000000000000000000000000000000000000000000000000000006f5e881800000000000000000000000000000000ffffffffffffffffffffffffffffffffbc197c81000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000f242432a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffe019caaa0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000a24a13a6000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000004e2916b70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f398000000000000000000000000000000000000000000000000000000000000000e8d529f900000000000000000000000000000000000000000000000000000000a6ae0aac158b2d5c9a9c9285743419d62a32f6727a640955e4ce8ee41503c7842d66518f000000000000000000000000000000000000000000000000000000005676c71000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6570a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000a9059cbb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000fa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92ffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000f4d678b80000000000000000000000000000000000000000000000000000000035179a2400000000000000000000000000000000000000000000000000000000f340fa0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f2684a07900000000000000000000000000000000000000000000000000000000f6017bbd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082b4290023b872dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000010000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5d00dbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d0000000000000000000000000000000000000040000000800000000000000000150b7a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a700000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0418869ac80f3b78189f8008cd34cb48b6f8f6bb6585f5848a9a441d04c9882ec
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.