Overview
ETH Balance
1.22 ETH
Eth Value
$2,933.52 (@ $2,404.52/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,015 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x48656c6c | 20508792 | 23 days ago | IN | 0 ETH | 0.00002659 | ||||
Cancel Swap | 14534219 | 881 days ago | IN | 0 ETH | 0.0014183 | ||||
Cancel Swap | 14534208 | 881 days ago | IN | 0 ETH | 0.00760815 | ||||
Propose Swap | 14524995 | 883 days ago | IN | 0 ETH | 0.01014639 | ||||
Accept Swap | 14523087 | 883 days ago | IN | 0 ETH | 0.00187448 | ||||
Accept Swap | 14523087 | 883 days ago | IN | 0 ETH | 0.02770108 | ||||
Propose Swap | 14523087 | 883 days ago | IN | 0 ETH | 0.00324419 | ||||
Propose Swap | 14523079 | 883 days ago | IN | 0 ETH | 0.00255716 | ||||
Initiate Swap | 14523038 | 883 days ago | IN | 0 ETH | 0.01786903 | ||||
Propose Swap | 14522959 | 883 days ago | IN | 0 ETH | 0.01578798 | ||||
Accept Swap | 14522457 | 883 days ago | IN | 0 ETH | 0.00897291 | ||||
Initiate Swap | 14522449 | 883 days ago | IN | 0 ETH | 0.00916647 | ||||
Propose Swap | 14522427 | 883 days ago | IN | 2.2 ETH | 0.02160468 | ||||
Propose Swap | 14520271 | 883 days ago | IN | 0 ETH | 0.04474436 | ||||
Cancel Swap | 14496394 | 887 days ago | IN | 0 ETH | 0.00436518 | ||||
Propose Swap | 14496328 | 887 days ago | IN | 0 ETH | 0.01434278 | ||||
Accept Swap | 14496286 | 887 days ago | IN | 0 ETH | 0.0059464 | ||||
Initiate Swap | 14496281 | 887 days ago | IN | 0 ETH | 0.00906716 | ||||
Propose Swap | 14496276 | 887 days ago | IN | 0 ETH | 0.01445104 | ||||
Cancel Swap | 14496210 | 887 days ago | IN | 0 ETH | 0.00359753 | ||||
Propose Swap | 14496138 | 887 days ago | IN | 0 ETH | 0.01002362 | ||||
Cancel Swap | 14495959 | 887 days ago | IN | 0 ETH | 0.00877607 | ||||
Propose Swap | 14495889 | 887 days ago | IN | 0 ETH | 0.01866956 | ||||
Accept Swap | 14488171 | 888 days ago | IN | 0 ETH | 0.01117658 | ||||
Initiate Swap | 14488155 | 888 days ago | IN | 0 ETH | 0.00926066 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14522457 | 883 days ago | 2.2 ETH | ||||
14488171 | 888 days ago | 7 ETH | ||||
14439289 | 896 days ago | 34 ETH | ||||
14399216 | 902 days ago | 0.75 ETH | ||||
14392697 | 903 days ago | 1.25 ETH | ||||
14392614 | 903 days ago | 0.3 ETH | ||||
14362037 | 908 days ago | 0.3 ETH | ||||
14356758 | 909 days ago | 0.033 ETH | ||||
14343077 | 911 days ago | 20 ETH | ||||
14321159 | 914 days ago | 4.5 ETH | ||||
14315992 | 915 days ago | 26 ETH | ||||
14260767 | 924 days ago | 4 ETH | ||||
14187217 | 935 days ago | 9 ETH | ||||
14153678 | 940 days ago | 5.15 ETH | ||||
14121639 | 945 days ago | 16 ETH | ||||
14116999 | 946 days ago | 2.575 ETH | ||||
14115572 | 946 days ago | 5 ETH | ||||
14115453 | 946 days ago | 2.5 ETH | ||||
14115349 | 946 days ago | 0.2 ETH | ||||
14090084 | 950 days ago | 0.41 ETH | ||||
14089997 | 950 days ago | 0.45 ETH | ||||
14088941 | 950 days ago | 0.85 ETH | ||||
14083026 | 951 days ago | 1.1 ETH | ||||
14081265 | 952 days ago | 0.2 ETH | ||||
14081226 | 952 days ago | 0.2 ETH |
Loading...
Loading
Contract Name:
SwapKiwi
Compiler Version
v0.8.1+commit.df193b15
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.1; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract SwapKiwi is Ownable, IERC721Receiver { uint256 private _swapsCounter; uint256 private _etherLocked; uint256 public fee; mapping (uint256 => Swap) private _swaps; struct Swap { address payable initiator; address[] initiatorNftAddresses; uint256[] initiatorNftIds; uint256 initiatorEtherValue; address payable secondUser; address[] secondUserNftAddresses; uint256[] secondUserNftIds; uint256 secondUserEtherValue; } event SwapExecuted(address indexed from, address indexed to, uint256 indexed swapId); event SwapCanceled(address indexed canceledBy, uint256 indexed swapId); event SwapProposed( address indexed from, address indexed to, uint256 indexed swapId, address[] nftAddresses, uint256[] nftIds, uint256 etherValue ); event SwapInitiated( address indexed from, address indexed to, uint256 indexed swapId, address[] nftAddresses, uint256[] nftIds, uint256 etherValue ); event AppFeeChanged( uint256 fee ); modifier onlyInitiator(uint256 swapId) { require(msg.sender == _swaps[swapId].initiator, "SwapKiwi: caller is not swap initiator"); _; } modifier requireSameLength(address[] memory nftAddresses, uint256[] memory nftIds) { require(nftAddresses.length == nftIds.length, "SwapKiwi: NFT and ID arrays have to be same length"); _; } modifier chargeAppFee() { require(msg.value >= fee, "SwapKiwi: Sent ETH amount needs to be more or equal application fee"); _; } constructor(uint256 initalAppFee, address contractOwnerAddress) { fee = initalAppFee; super.transferOwnership(contractOwnerAddress); } function setAppFee(uint newFee) external onlyOwner { fee = newFee; emit AppFeeChanged(newFee); } /** * @dev First user proposes a swap to the second user with the NFTs that he deposits and wants to trade. * Proposed NFTs are transfered to the SwapKiwi contract and * kept there until the swap is accepted or canceled/rejected. * * @param secondUser address of the user that the first user wants to trade NFTs with * @param nftAddresses array of NFT addressed that want to be traded * @param nftIds array of IDs belonging to NFTs that want to be traded */ function proposeSwap(address secondUser, address[] memory nftAddresses, uint256[] memory nftIds) external payable chargeAppFee requireSameLength(nftAddresses, nftIds) { _swapsCounter += 1; safeMultipleTransfersFrom( msg.sender, address(this), nftAddresses, nftIds ); Swap storage swap = _swaps[_swapsCounter]; swap.initiator = payable(msg.sender); swap.initiatorNftAddresses = nftAddresses; swap.initiatorNftIds = nftIds; if (msg.value > fee) { swap.initiatorEtherValue = msg.value - fee; _etherLocked += swap.initiatorEtherValue; } swap.secondUser = payable(secondUser); emit SwapProposed(msg.sender, secondUser, _swapsCounter, nftAddresses, nftIds, swap.initiatorEtherValue); } /** * @dev Second user accepts the swap (with proposed NFTs) from swap initiator and * deposits his NFTs into the SwapKiwi contract. * Callable only by second user that is invited by swap initiator. * * @param swapId ID of the swap that the second user is invited to participate in * @param nftAddresses array of NFT addressed that want to be traded * @param nftIds array of IDs belonging to NFTs that want to be traded */ function initiateSwap(uint256 swapId, address[] memory nftAddresses, uint256[] memory nftIds) external payable chargeAppFee requireSameLength(nftAddresses, nftIds) { require(_swaps[swapId].secondUser == msg.sender, "SwapKiwi: caller is not swap participator"); require( _swaps[swapId].secondUserEtherValue == 0 && ( _swaps[swapId].secondUserNftAddresses.length == 0 && _swaps[swapId].secondUserNftIds.length == 0), "SwapKiwi: swap already initiated" ); safeMultipleTransfersFrom( msg.sender, address(this), nftAddresses, nftIds ); _swaps[swapId].secondUserNftAddresses = nftAddresses; _swaps[swapId].secondUserNftIds = nftIds; if (msg.value > fee) { _swaps[swapId].secondUserEtherValue = msg.value - fee; _etherLocked += _swaps[swapId].secondUserEtherValue; } emit SwapInitiated( msg.sender, _swaps[swapId].initiator, swapId, nftAddresses, nftIds, _swaps[swapId].secondUserEtherValue ); } /** * @dev Swap initiator accepts the swap (NFTs proposed by the second user). * Executeds the swap - transfers NFTs from SwapKiwi to the participating users. * Callable only by swap initiator. * * @param swapId ID of the swap that the initator wants to execute */ function acceptSwap(uint256 swapId) external onlyInitiator(swapId) { require( (_swaps[swapId].secondUserNftAddresses.length != 0 || _swaps[swapId].secondUserEtherValue > 0) && (_swaps[swapId].initiatorNftAddresses.length != 0 || _swaps[swapId].initiatorEtherValue > 0), "SwapKiwi: Can't accept swap, both participants didn't add NFTs" ); // transfer NFTs from escrow to initiator safeMultipleTransfersFrom( address(this), _swaps[swapId].initiator, _swaps[swapId].secondUserNftAddresses, _swaps[swapId].secondUserNftIds ); // transfer NFTs from escrow to second user safeMultipleTransfersFrom( address(this), _swaps[swapId].secondUser, _swaps[swapId].initiatorNftAddresses, _swaps[swapId].initiatorNftIds ); if (_swaps[swapId].initiatorEtherValue != 0) { _etherLocked -= _swaps[swapId].initiatorEtherValue; uint amountToTransfer = _swaps[swapId].initiatorEtherValue; _swaps[swapId].initiatorEtherValue = 0; _swaps[swapId].secondUser.transfer(amountToTransfer); } if (_swaps[swapId].secondUserEtherValue != 0) { _etherLocked -= _swaps[swapId].secondUserEtherValue; uint amountToTransfer = _swaps[swapId].secondUserEtherValue; _swaps[swapId].secondUserEtherValue = 0; _swaps[swapId].initiator.transfer(amountToTransfer); } emit SwapExecuted(_swaps[swapId].initiator, _swaps[swapId].secondUser, swapId); delete _swaps[swapId]; } /** * @dev Returns NFTs from SwapKiwi to swap initator. * Callable only if second user hasn't yet added NFTs. * * @param swapId ID of the swap that the swap participants want to cancel */ function cancelSwap(uint256 swapId) external { require( _swaps[swapId].initiator == msg.sender || _swaps[swapId].secondUser == msg.sender, "SwapKiwi: Can't cancel swap, must be swap participant" ); // return initiator NFTs safeMultipleTransfersFrom( address(this), _swaps[swapId].initiator, _swaps[swapId].initiatorNftAddresses, _swaps[swapId].initiatorNftIds ); if(_swaps[swapId].secondUserNftAddresses.length != 0) { // return second user NFTs safeMultipleTransfersFrom( address(this), _swaps[swapId].secondUser, _swaps[swapId].secondUserNftAddresses, _swaps[swapId].secondUserNftIds ); } if (_swaps[swapId].initiatorEtherValue != 0) { _etherLocked -= _swaps[swapId].initiatorEtherValue; uint amountToTransfer = _swaps[swapId].initiatorEtherValue; _swaps[swapId].initiatorEtherValue = 0; _swaps[swapId].initiator.transfer(amountToTransfer); } if (_swaps[swapId].secondUserEtherValue != 0) { _etherLocked -= _swaps[swapId].secondUserEtherValue; uint amountToTransfer = _swaps[swapId].secondUserEtherValue; _swaps[swapId].secondUserEtherValue = 0; _swaps[swapId].secondUser.transfer(amountToTransfer); } emit SwapCanceled(msg.sender, swapId); delete _swaps[swapId]; } function safeMultipleTransfersFrom( address from, address to, address[] memory nftAddresses, uint256[] memory nftIds ) internal virtual { for (uint256 i=0; i < nftIds.length; i++){ safeTransferFrom(from, to, nftAddresses[i], nftIds[i], ""); } } function safeTransferFrom( address from, address to, address tokenAddress, uint256 tokenId, bytes memory _data ) internal virtual { IERC721(tokenAddress).safeTransferFrom(from, to, tokenId, _data); } function withdrawEther(address payable recipient) external onlyOwner { require(recipient != address(0), "SwapKiwi: transfer to the zero address"); recipient.transfer((address(this).balance - _etherLocked)); } function onERC721Received( /* solhint-disable */ address operator, address from, uint256 tokenId, bytes calldata data /* solhint-enable */ ) external pure override returns (bytes4) { return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/introspection/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.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"initalAppFee","type":"uint256"},{"internalType":"address","name":"contractOwnerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"AppFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"canceledBy","type":"address"},{"indexed":true,"internalType":"uint256","name":"swapId","type":"uint256"}],"name":"SwapCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"swapId","type":"uint256"}],"name":"SwapExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"swapId","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"nftAddresses","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"nftIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"etherValue","type":"uint256"}],"name":"SwapInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"swapId","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"nftAddresses","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"nftIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"etherValue","type":"uint256"}],"name":"SwapProposed","type":"event"},{"inputs":[{"internalType":"uint256","name":"swapId","type":"uint256"}],"name":"acceptSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapId","type":"uint256"}],"name":"cancelSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapId","type":"uint256"},{"internalType":"address[]","name":"nftAddresses","type":"address[]"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"initiateSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"secondUser","type":"address"},{"internalType":"address[]","name":"nftAddresses","type":"address[]"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"proposeSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setAppFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001c2338038062001c23833981016040819052620000349162000173565b6000620000406200009e565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062001c03833981519152908290a350816003819055506200009681620000a260201b62000faf1760201c565b50506200022b565b3390565b620000ac6200009e565b6001600160a01b0316620000bf62000164565b6001600160a01b031614620000f15760405162461bcd60e51b8152600401620000e890620001f6565b60405180910390fd5b6001600160a01b0381166200011a5760405162461bcd60e51b8152600401620000e890620001b0565b600080546040516001600160a01b038085169392169160008051602062001c0383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000806040838503121562000186578182fd5b825160208401519092506001600160a01b0381168114620001a5578182fd5b809150509250929050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6119c8806200023b6000396000f3fe60806040526004361061009c5760003560e01c80637ea5482a116100645780637ea5482a146101415780638da5cb5b14610161578063af933b5714610183578063dbd6dd5f146101a3578063ddca3f43146101b6578063f2fde38b146101d85761009c565b8063150b7a02146100a15780631bf33004146100d757806354d6a2b7146100f957806355a36d5614610119578063715018a61461012c575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004611335565b6101f8565b6040516100ce91906115a2565b60405180910390f35b3480156100e357600080fd5b506100f76100f2366004611442565b610222565b005b34801561010557600080fd5b506100f7610114366004611442565b61069b565b6100f76101273660046113cf565b610aa0565b34801561013857600080fd5b506100f7610c00565b34801561014d57600080fd5b506100f761015c366004611442565b610c89565b34801561016d57600080fd5b50610176610d08565b6040516100ce919061148c565b34801561018f57600080fd5b506100f761019e366004611312565b610d17565b6100f76101b136600461145a565b610dc3565b3480156101c257600080fd5b506101cb610fa9565b6040516100ce91906118a9565b3480156101e457600080fd5b506100f76101f3366004611312565b610faf565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b60008181526004602052604090205481906001600160a01b031633146102635760405162461bcd60e51b815260040161025a90611719565b60405180910390fd5b600082815260046020526040902060050154151580610292575060008281526004602052604090206007015415155b80156102c857506000828152600460205260409020600101541515806102c8575060008281526004602052604090206003015415155b6102e45760405162461bcd60e51b815260040161025a906117b1565b6000828152600460209081526040918290208054600590910180548451818502810185019095528085526103c49430946001600160a01b03909416939092919083018282801561035d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161033f575b505050600088815260046020908152604091829020600601805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020905b8154815260200190600101908083116103a6575b505050505061106f565b60008281526004602081815260409283902091820154600190920180548451818402810184019095528085526104a29430946001600160a01b0316939092919083018282801561043d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161041f575b505050600088815260046020908152604091829020600201805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020908154815260200190600101908083116103a657505050505061106f565b6000828152600460205260409020600301541561053b5760008281526004602052604081206003015460028054919290916104de90849061191f565b9091555050600082815260046020819052604080832060038101805490859055920154905191926001600160a01b039091169183156108fc0291849190818181858888f19350505050158015610538573d6000803e3d6000fd5b50505b600082815260046020526040902060070154156105d057600082815260046020526040812060070154600280549192909161057790849061191f565b9091555050600082815260046020526040808220600781018054908490559054915190926001600160a01b039092169183156108fc02918491818181858888f193505050501580156105cd573d6000803e3d6000fd5b50505b6000828152600460208190526040808320918201549154905185936001600160a01b0393841693909216917fbad29f2bbbf6bb1e15563203bcdb0dd660c54eab078763eb66f797efa8f5e8c191a4600082815260046020526040812080546001600160a01b031916815590610648600183018261116d565b61065660028301600061116d565b6000600383018190556004830180546001600160a01b031916905561067f90600584019061116d565b61068d60068301600061116d565b600782016000905550505050565b6000818152600460205260409020546001600160a01b03163314806106da5750600081815260046020819052604090912001546001600160a01b031633145b6106f65760405162461bcd60e51b815260040161025a90611854565b6000818152600460209081526040918290208054600190910180548451818502810185019095528085526107d49430946001600160a01b03909416939092919083018282801561076f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610751575b505050600087815260046020908152604091829020600201805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020908154815260200190600101908083116103a657505050505061106f565b600081815260046020526040902060050154156108c95760008181526004602081815260409283902091820154600590920180548451818402810184019095528085526108c99430946001600160a01b0316939092919083018282801561086457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610846575b505050600087815260046020908152604091829020600601805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020908154815260200190600101908083116103a657505050505061106f565b6000818152600460205260409020600301541561095e57600081815260046020526040812060030154600280549192909161090590849061191f565b9091555050600081815260046020526040808220600381018054908490559054915190926001600160a01b039092169183156108fc02918491818181858888f1935050505015801561095b573d6000803e3d6000fd5b50505b600081815260046020526040902060070154156109f757600081815260046020526040812060070154600280549192909161099a90849061191f565b9091555050600081815260046020819052604080832060078101805490859055920154905191926001600160a01b039091169183156108fc0291849190818181858888f193505050501580156109f4573d6000803e3d6000fd5b50505b604051819033907fa715d65b6e7107257e3f1469a8b36f0003c039bf6cc6279c26d814b77efb658090600090a3600081815260046020526040812080546001600160a01b031916815590610a4e600183018261116d565b610a5c60028301600061116d565b6000600383018190556004830180546001600160a01b0319169055610a8590600584019061116d565b610a9360068301600061116d565b6007820160009055505050565b600354341015610ac25760405162461bcd60e51b815260040161025a9061167b565b81818051825114610ae55760405162461bcd60e51b815260040161025a9061175f565b6001806000828254610af79190611907565b90915550610b0990503330868661106f565b60018054600090815260046020908152604090912080546001600160a01b0319163317815586519092610b4392908401919088019061118e565b508351610b5990600283019060208701906111f3565b50600354341115610b9057600354610b71903461191f565b6003820181905560028054600090610b8a908490611907565b90915550505b6004810180546001600160a01b0319166001600160a01b038816908117909155600154600383015460405191929133917f47fb096797b2d0e6396ebd22643fca01f293468213c2fe2cb0c72256d21197e491610bf0918b918b9190611516565b60405180910390a4505050505050565b610c086110fe565b6001600160a01b0316610c19610d08565b6001600160a01b031614610c3f5760405162461bcd60e51b815260040161025a906116e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610c916110fe565b6001600160a01b0316610ca2610d08565b6001600160a01b031614610cc85760405162461bcd60e51b815260040161025a906116e4565b60038190556040517fe854185167cff7d85f6ce2ae7d2940249c4a78ae54e270a5f7dddf8e5d7cc45890610cfd9083906118a9565b60405180910390a150565b6000546001600160a01b031690565b610d1f6110fe565b6001600160a01b0316610d30610d08565b6001600160a01b031614610d565760405162461bcd60e51b815260040161025a906116e4565b6001600160a01b038116610d7c5760405162461bcd60e51b815260040161025a9061180e565b806001600160a01b03166108fc60025447610d97919061191f565b6040518115909202916000818181858888f19350505050158015610dbf573d6000803e3d6000fd5b5050565b600354341015610de55760405162461bcd60e51b815260040161025a9061167b565b81818051825114610e085760405162461bcd60e51b815260040161025a9061175f565b600085815260046020819052604090912001546001600160a01b03163314610e425760405162461bcd60e51b815260040161025a906115b7565b600085815260046020526040902060070154158015610e8a5750600085815260046020526040902060050154158015610e8a5750600085815260046020526040902060060154155b610ea65760405162461bcd60e51b815260040161025a90611600565b610eb23330868661106f565b60008581526004602090815260409091208551610ed79260059092019187019061118e565b5060008581526004602090815260409091208451610efd926006909201918601906111f3565b50600354341115610f4157600354610f15903461191f565b600086815260046020526040812060070182905560028054909190610f3b908490611907565b90915550505b600085815260046020526040908190208054600790910154915187926001600160a01b039092169133917f7b416b828b9210d412f535f753f5738b98aa13118616c9a6dc38b268a7b1fd0191610f9a918a918a91611516565b60405180910390a45050505050565b60035481565b610fb76110fe565b6001600160a01b0316610fc8610d08565b6001600160a01b031614610fee5760405162461bcd60e51b815260040161025a906116e4565b6001600160a01b0381166110145760405162461bcd60e51b815260040161025a90611635565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60005b81518110156110f7576110e585858584815181106110a057634e487b7160e01b600052603260045260246000fd5b60200260200101518585815181106110c857634e487b7160e01b600052603260045260246000fd5b602002602001015160405180602001604052806000815250611102565b806110ef81611936565b915050611072565b5050505050565b3390565b604051635c46a7ef60e11b81526001600160a01b0384169063b88d4fde906111349088908890879087906004016114a0565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b505050505050505050565b508054600082559060005260206000209081019061118b919061122e565b50565b8280548282559060005260206000209081019282156111e3579160200282015b828111156111e357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906111ae565b506111ef92915061122e565b5090565b8280548282559060005260206000209081019282156111e3579160200282015b828111156111e3578251825591602001919060010190611213565b5b808211156111ef576000815560010161122f565b600082601f830112611253578081fd5b81356020611268611263836118e3565b6118b2565b8281528181019085830183850287018401881015611284578586fd5b855b858110156112ab5781356112998161197d565b84529284019290840190600101611286565b5090979650505050505050565b600082601f8301126112c8578081fd5b813560206112d8611263836118e3565b82815281810190858301838502870184018810156112f4578586fd5b855b858110156112ab578135845292840192908401906001016112f6565b600060208284031215611323578081fd5b813561132e8161197d565b9392505050565b60008060008060006080868803121561134c578081fd5b85356113578161197d565b945060208601356113678161197d565b935060408601359250606086013567ffffffffffffffff8082111561138a578283fd5b818801915088601f83011261139d578283fd5b8135818111156113ab578384fd5b8960208285010111156113bc578384fd5b9699959850939650602001949392505050565b6000806000606084860312156113e3578283fd5b83356113ee8161197d565b9250602084013567ffffffffffffffff8082111561140a578384fd5b61141687838801611243565b9350604086013591508082111561142b578283fd5b50611438868287016112b8565b9150509250925092565b600060208284031215611453578081fd5b5035919050565b60008060006060848603121561146e578283fd5b83359250602084013567ffffffffffffffff8082111561140a578384fd5b6001600160a01b0391909116815260200190565b600060018060a01b0380871683526020818716818501528560408501526080606085015284519150816080850152825b828110156114ec5785810182015185820160a0015281016114d0565b828111156114fd578360a084870101525b5050601f01601f19169190910160a00195945050505050565b606080825284519082018190526000906020906080840190828801845b828110156115585781516001600160a01b031684529284019290840190600101611533565b50505083810382850152855180825286830191830190845b8181101561158c57835183529284019291840191600101611570565b5050809350505050826040830152949350505050565b6001600160e01b031991909116815260200190565b60208082526029908201527f537761704b6977693a2063616c6c6572206973206e6f742073776170207061726040820152683a34b1b4b830ba37b960b91b606082015260800190565b6020808252818101527f537761704b6977693a207377617020616c726561647920696e69746961746564604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526043908201527f537761704b6977693a2053656e742045544820616d6f756e74206e656564732060408201527f746f206265206d6f7265206f7220657175616c206170706c69636174696f6e2060608201526266656560e81b608082015260a00190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f537761704b6977693a2063616c6c6572206973206e6f74207377617020696e696040820152653a34b0ba37b960d11b606082015260800190565b60208082526032908201527f537761704b6977693a204e465420616e64204944206172726179732068617665604082015271040e8de40c4ca40e6c2daca40d8cadccee8d60731b606082015260800190565b6020808252603e908201527f537761704b6977693a2043616e27742061636365707420737761702c20626f7460408201527f68207061727469636970616e7473206469646e277420616464204e4654730000606082015260800190565b60208082526026908201527f537761704b6977693a207472616e7366657220746f20746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526035908201527f537761704b6977693a2043616e27742063616e63656c20737761702c206d75736040820152741d081899481cddd85c081c185c9d1a58da5c185b9d605a1b606082015260800190565b90815260200190565b604051601f8201601f1916810167ffffffffffffffff811182821017156118db576118db611967565b604052919050565b600067ffffffffffffffff8211156118fd576118fd611967565b5060209081020190565b6000821982111561191a5761191a611951565b500190565b60008282101561193157611931611951565b500390565b600060001982141561194a5761194a611951565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461118b57600080fdfea2646970667358221220daf9cef6a21944c8ad6dd8e62d7701b10e9c6a46cd3256ba799ee59c2973b89c64736f6c634300080100338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000000000000000000000000000000008e1bc9bf04000000000000000000000000000f37dcdef718eb72b542933b27427f39a3af09ad7
Deployed Bytecode
0x60806040526004361061009c5760003560e01c80637ea5482a116100645780637ea5482a146101415780638da5cb5b14610161578063af933b5714610183578063dbd6dd5f146101a3578063ddca3f43146101b6578063f2fde38b146101d85761009c565b8063150b7a02146100a15780631bf33004146100d757806354d6a2b7146100f957806355a36d5614610119578063715018a61461012c575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004611335565b6101f8565b6040516100ce91906115a2565b60405180910390f35b3480156100e357600080fd5b506100f76100f2366004611442565b610222565b005b34801561010557600080fd5b506100f7610114366004611442565b61069b565b6100f76101273660046113cf565b610aa0565b34801561013857600080fd5b506100f7610c00565b34801561014d57600080fd5b506100f761015c366004611442565b610c89565b34801561016d57600080fd5b50610176610d08565b6040516100ce919061148c565b34801561018f57600080fd5b506100f761019e366004611312565b610d17565b6100f76101b136600461145a565b610dc3565b3480156101c257600080fd5b506101cb610fa9565b6040516100ce91906118a9565b3480156101e457600080fd5b506100f76101f3366004611312565b610faf565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b60008181526004602052604090205481906001600160a01b031633146102635760405162461bcd60e51b815260040161025a90611719565b60405180910390fd5b600082815260046020526040902060050154151580610292575060008281526004602052604090206007015415155b80156102c857506000828152600460205260409020600101541515806102c8575060008281526004602052604090206003015415155b6102e45760405162461bcd60e51b815260040161025a906117b1565b6000828152600460209081526040918290208054600590910180548451818502810185019095528085526103c49430946001600160a01b03909416939092919083018282801561035d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161033f575b505050600088815260046020908152604091829020600601805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020905b8154815260200190600101908083116103a6575b505050505061106f565b60008281526004602081815260409283902091820154600190920180548451818402810184019095528085526104a29430946001600160a01b0316939092919083018282801561043d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161041f575b505050600088815260046020908152604091829020600201805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020908154815260200190600101908083116103a657505050505061106f565b6000828152600460205260409020600301541561053b5760008281526004602052604081206003015460028054919290916104de90849061191f565b9091555050600082815260046020819052604080832060038101805490859055920154905191926001600160a01b039091169183156108fc0291849190818181858888f19350505050158015610538573d6000803e3d6000fd5b50505b600082815260046020526040902060070154156105d057600082815260046020526040812060070154600280549192909161057790849061191f565b9091555050600082815260046020526040808220600781018054908490559054915190926001600160a01b039092169183156108fc02918491818181858888f193505050501580156105cd573d6000803e3d6000fd5b50505b6000828152600460208190526040808320918201549154905185936001600160a01b0393841693909216917fbad29f2bbbf6bb1e15563203bcdb0dd660c54eab078763eb66f797efa8f5e8c191a4600082815260046020526040812080546001600160a01b031916815590610648600183018261116d565b61065660028301600061116d565b6000600383018190556004830180546001600160a01b031916905561067f90600584019061116d565b61068d60068301600061116d565b600782016000905550505050565b6000818152600460205260409020546001600160a01b03163314806106da5750600081815260046020819052604090912001546001600160a01b031633145b6106f65760405162461bcd60e51b815260040161025a90611854565b6000818152600460209081526040918290208054600190910180548451818502810185019095528085526107d49430946001600160a01b03909416939092919083018282801561076f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610751575b505050600087815260046020908152604091829020600201805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020908154815260200190600101908083116103a657505050505061106f565b600081815260046020526040902060050154156108c95760008181526004602081815260409283902091820154600590920180548451818402810184019095528085526108c99430946001600160a01b0316939092919083018282801561086457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610846575b505050600087815260046020908152604091829020600601805483518184028101840190945280845292945092508301828280156103ba57602002820191906000526020600020908154815260200190600101908083116103a657505050505061106f565b6000818152600460205260409020600301541561095e57600081815260046020526040812060030154600280549192909161090590849061191f565b9091555050600081815260046020526040808220600381018054908490559054915190926001600160a01b039092169183156108fc02918491818181858888f1935050505015801561095b573d6000803e3d6000fd5b50505b600081815260046020526040902060070154156109f757600081815260046020526040812060070154600280549192909161099a90849061191f565b9091555050600081815260046020819052604080832060078101805490859055920154905191926001600160a01b039091169183156108fc0291849190818181858888f193505050501580156109f4573d6000803e3d6000fd5b50505b604051819033907fa715d65b6e7107257e3f1469a8b36f0003c039bf6cc6279c26d814b77efb658090600090a3600081815260046020526040812080546001600160a01b031916815590610a4e600183018261116d565b610a5c60028301600061116d565b6000600383018190556004830180546001600160a01b0319169055610a8590600584019061116d565b610a9360068301600061116d565b6007820160009055505050565b600354341015610ac25760405162461bcd60e51b815260040161025a9061167b565b81818051825114610ae55760405162461bcd60e51b815260040161025a9061175f565b6001806000828254610af79190611907565b90915550610b0990503330868661106f565b60018054600090815260046020908152604090912080546001600160a01b0319163317815586519092610b4392908401919088019061118e565b508351610b5990600283019060208701906111f3565b50600354341115610b9057600354610b71903461191f565b6003820181905560028054600090610b8a908490611907565b90915550505b6004810180546001600160a01b0319166001600160a01b038816908117909155600154600383015460405191929133917f47fb096797b2d0e6396ebd22643fca01f293468213c2fe2cb0c72256d21197e491610bf0918b918b9190611516565b60405180910390a4505050505050565b610c086110fe565b6001600160a01b0316610c19610d08565b6001600160a01b031614610c3f5760405162461bcd60e51b815260040161025a906116e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610c916110fe565b6001600160a01b0316610ca2610d08565b6001600160a01b031614610cc85760405162461bcd60e51b815260040161025a906116e4565b60038190556040517fe854185167cff7d85f6ce2ae7d2940249c4a78ae54e270a5f7dddf8e5d7cc45890610cfd9083906118a9565b60405180910390a150565b6000546001600160a01b031690565b610d1f6110fe565b6001600160a01b0316610d30610d08565b6001600160a01b031614610d565760405162461bcd60e51b815260040161025a906116e4565b6001600160a01b038116610d7c5760405162461bcd60e51b815260040161025a9061180e565b806001600160a01b03166108fc60025447610d97919061191f565b6040518115909202916000818181858888f19350505050158015610dbf573d6000803e3d6000fd5b5050565b600354341015610de55760405162461bcd60e51b815260040161025a9061167b565b81818051825114610e085760405162461bcd60e51b815260040161025a9061175f565b600085815260046020819052604090912001546001600160a01b03163314610e425760405162461bcd60e51b815260040161025a906115b7565b600085815260046020526040902060070154158015610e8a5750600085815260046020526040902060050154158015610e8a5750600085815260046020526040902060060154155b610ea65760405162461bcd60e51b815260040161025a90611600565b610eb23330868661106f565b60008581526004602090815260409091208551610ed79260059092019187019061118e565b5060008581526004602090815260409091208451610efd926006909201918601906111f3565b50600354341115610f4157600354610f15903461191f565b600086815260046020526040812060070182905560028054909190610f3b908490611907565b90915550505b600085815260046020526040908190208054600790910154915187926001600160a01b039092169133917f7b416b828b9210d412f535f753f5738b98aa13118616c9a6dc38b268a7b1fd0191610f9a918a918a91611516565b60405180910390a45050505050565b60035481565b610fb76110fe565b6001600160a01b0316610fc8610d08565b6001600160a01b031614610fee5760405162461bcd60e51b815260040161025a906116e4565b6001600160a01b0381166110145760405162461bcd60e51b815260040161025a90611635565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60005b81518110156110f7576110e585858584815181106110a057634e487b7160e01b600052603260045260246000fd5b60200260200101518585815181106110c857634e487b7160e01b600052603260045260246000fd5b602002602001015160405180602001604052806000815250611102565b806110ef81611936565b915050611072565b5050505050565b3390565b604051635c46a7ef60e11b81526001600160a01b0384169063b88d4fde906111349088908890879087906004016114a0565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b505050505050505050565b508054600082559060005260206000209081019061118b919061122e565b50565b8280548282559060005260206000209081019282156111e3579160200282015b828111156111e357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906111ae565b506111ef92915061122e565b5090565b8280548282559060005260206000209081019282156111e3579160200282015b828111156111e3578251825591602001919060010190611213565b5b808211156111ef576000815560010161122f565b600082601f830112611253578081fd5b81356020611268611263836118e3565b6118b2565b8281528181019085830183850287018401881015611284578586fd5b855b858110156112ab5781356112998161197d565b84529284019290840190600101611286565b5090979650505050505050565b600082601f8301126112c8578081fd5b813560206112d8611263836118e3565b82815281810190858301838502870184018810156112f4578586fd5b855b858110156112ab578135845292840192908401906001016112f6565b600060208284031215611323578081fd5b813561132e8161197d565b9392505050565b60008060008060006080868803121561134c578081fd5b85356113578161197d565b945060208601356113678161197d565b935060408601359250606086013567ffffffffffffffff8082111561138a578283fd5b818801915088601f83011261139d578283fd5b8135818111156113ab578384fd5b8960208285010111156113bc578384fd5b9699959850939650602001949392505050565b6000806000606084860312156113e3578283fd5b83356113ee8161197d565b9250602084013567ffffffffffffffff8082111561140a578384fd5b61141687838801611243565b9350604086013591508082111561142b578283fd5b50611438868287016112b8565b9150509250925092565b600060208284031215611453578081fd5b5035919050565b60008060006060848603121561146e578283fd5b83359250602084013567ffffffffffffffff8082111561140a578384fd5b6001600160a01b0391909116815260200190565b600060018060a01b0380871683526020818716818501528560408501526080606085015284519150816080850152825b828110156114ec5785810182015185820160a0015281016114d0565b828111156114fd578360a084870101525b5050601f01601f19169190910160a00195945050505050565b606080825284519082018190526000906020906080840190828801845b828110156115585781516001600160a01b031684529284019290840190600101611533565b50505083810382850152855180825286830191830190845b8181101561158c57835183529284019291840191600101611570565b5050809350505050826040830152949350505050565b6001600160e01b031991909116815260200190565b60208082526029908201527f537761704b6977693a2063616c6c6572206973206e6f742073776170207061726040820152683a34b1b4b830ba37b960b91b606082015260800190565b6020808252818101527f537761704b6977693a207377617020616c726561647920696e69746961746564604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526043908201527f537761704b6977693a2053656e742045544820616d6f756e74206e656564732060408201527f746f206265206d6f7265206f7220657175616c206170706c69636174696f6e2060608201526266656560e81b608082015260a00190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f537761704b6977693a2063616c6c6572206973206e6f74207377617020696e696040820152653a34b0ba37b960d11b606082015260800190565b60208082526032908201527f537761704b6977693a204e465420616e64204944206172726179732068617665604082015271040e8de40c4ca40e6c2daca40d8cadccee8d60731b606082015260800190565b6020808252603e908201527f537761704b6977693a2043616e27742061636365707420737761702c20626f7460408201527f68207061727469636970616e7473206469646e277420616464204e4654730000606082015260800190565b60208082526026908201527f537761704b6977693a207472616e7366657220746f20746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526035908201527f537761704b6977693a2043616e27742063616e63656c20737761702c206d75736040820152741d081899481cddd85c081c185c9d1a58da5c185b9d605a1b606082015260800190565b90815260200190565b604051601f8201601f1916810167ffffffffffffffff811182821017156118db576118db611967565b604052919050565b600067ffffffffffffffff8211156118fd576118fd611967565b5060209081020190565b6000821982111561191a5761191a611951565b500190565b60008282101561193157611931611951565b500390565b600060001982141561194a5761194a611951565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461118b57600080fdfea2646970667358221220daf9cef6a21944c8ad6dd8e62d7701b10e9c6a46cd3256ba799ee59c2973b89c64736f6c63430008010033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000008e1bc9bf04000000000000000000000000000f37dcdef718eb72b542933b27427f39a3af09ad7
-----Decoded View---------------
Arg [0] : initalAppFee (uint256): 2500000000000000
Arg [1] : contractOwnerAddress (address): 0xF37DcdeF718eB72b542933b27427F39a3Af09AD7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000008e1bc9bf04000
Arg [1] : 000000000000000000000000f37dcdef718eb72b542933b27427f39a3af09ad7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,404.52 | 1.22 | $2,933.52 |
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.