Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
FairXYZWallets
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // @ Fair.xyz dev pragma solidity 0.8.7; import "Ownable.sol"; contract FairXYZWallets is Ownable{ address internal signerAddress; address internal withdrawAddress; mapping(address => bool) internal preApprovedAddresses; mapping(string => string) internal URIReveal; mapping(string => bool) internal lockedURIReveal; event NewSignerWallet(address indexed newSignerAddress); event NewWithdrawWallet(address indexed newWithdrawAddress); constructor(address addressForSigner, address addressForWithdraw, address[] memory preApprovedList){ require(preApprovedList.length <= 5, "Cannot set too many pre-approved addresses!"); require(addressForSigner != address(0), "Cannot be zero address"); require(addressForWithdraw != address(0), "Cannot be zero address"); signerAddress = addressForSigner; withdrawAddress = addressForWithdraw; for(uint i = 0; i < preApprovedList.length; ) { addPreapproved(preApprovedList[i]); ++i; } } function viewPathURI(string memory pathURI) view external returns(string memory) { return URIReveal[pathURI]; } function viewSigner() view external returns(address) { return(signerAddress); } function viewWithdraw() view external returns(address) { return(withdrawAddress); } function revealPathURI(string memory pathURI, string memory revealURI) external onlyOwner returns(string memory) { require(!lockedURIReveal[pathURI], "Path URI has been locked!"); URIReveal[pathURI] = revealURI; return(revealURI); } function lockURIReveal(string memory pathURI) external onlyOwner { require(!lockedURIReveal[pathURI], "Path URI has been locked!"); lockedURIReveal[pathURI] = true; } function changeSigner(address newAddress) external onlyOwner returns(address) { signerAddress = newAddress; emit NewSignerWallet(signerAddress); return signerAddress; } function changeWithdraw(address newAddress) external onlyOwner returns(address) { withdrawAddress = newAddress; emit NewWithdrawWallet(signerAddress); return withdrawAddress; } function viewPreapproved(address address_) external view returns(bool) { return preApprovedAddresses[address_]; } // Gas-free listings on OpenSea and LooksRare. Can only be called from constructor function addPreapproved(address preapprovedAddress) private onlyOwner returns(address) { require(preapprovedAddress != address(0), "Cannot be zero address"); preApprovedAddresses[preapprovedAddress] = true; return preapprovedAddress; } function removePreapproved(address preapprovedAddress) external onlyOwner returns(address) { require(preApprovedAddresses[preapprovedAddress]); preApprovedAddresses[preapprovedAddress] = false; return(preapprovedAddress); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "FairXYZWallets.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"addressForSigner","type":"address"},{"internalType":"address","name":"addressForWithdraw","type":"address"},{"internalType":"address[]","name":"preApprovedList","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newSignerAddress","type":"address"}],"name":"NewSignerWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWithdrawAddress","type":"address"}],"name":"NewWithdrawWallet","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"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changeSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changeWithdraw","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"pathURI","type":"string"}],"name":"lockURIReveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"preapprovedAddress","type":"address"}],"name":"removePreapproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"pathURI","type":"string"},{"internalType":"string","name":"revealURI","type":"string"}],"name":"revealPathURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"pathURI","type":"string"}],"name":"viewPathURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"viewPreapproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewWithdraw","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000e8838038062000e888339810160408190526200003491620002f8565b6200003f33620001c1565b600581511115620000ab5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f742073657420746f6f206d616e79207072652d617070726f76656460448201526a206164647265737365732160a81b60648201526084015b60405180910390fd5b6001600160a01b038316620000f25760405162461bcd60e51b8152602060048201526016602482015260008051602062000e688339815191526044820152606401620000a2565b6001600160a01b038216620001395760405162461bcd60e51b8152602060048201526016602482015260008051602062000e688339815191526044820152606401620000a2565b600180546001600160a01b038086166001600160a01b031992831617909255600280549285169290911691909117905560005b8151811015620001b757620001a38282815181106200018f576200018f62000423565b60200260200101516200021160201b60201c565b50620001af81620003f9565b90506200016c565b505050506200044f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080546001600160a01b031633146200026e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000a2565b6001600160a01b038216620002b55760405162461bcd60e51b8152602060048201526016602482015260008051602062000e688339815191526044820152606401620000a2565b506001600160a01b0381166000908152600360205260409020805460ff19166001179055805b919050565b80516001600160a01b0381168114620002db57600080fd5b6000806000606084860312156200030e57600080fd5b6200031984620002e0565b925060206200032a818601620002e0565b60408601519093506001600160401b03808211156200034857600080fd5b818701915087601f8301126200035d57600080fd5b81518181111562000372576200037262000439565b8060051b604051601f19603f830116810181811085821117156200039a576200039a62000439565b604052828152858101935084860182860187018c1015620003ba57600080fd5b600095505b83861015620003e857620003d381620002e0565b855260019590950194938601938601620003bf565b508096505050505050509250925092565b60006000198214156200041c57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b610a09806200045f6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063aad2b72311610071578063aad2b72314610144578063b1ff4adf14610157578063b8c6aa5314610168578063dcf6d0d21461017b578063e6df3d471461018e578063f2fde38b146101ca57600080fd5b806304b8adb4146100b9578063511113e5146100e357806355b24faf14610103578063599b628614610116578063715018a6146101295780638da5cb5b14610133575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100f66100f136600461082d565b6101dd565b6040516100da91906108ea565b6100f661011136600461086a565b61028d565b6100c66101243660046107fd565b610369565b6101316103dd565b005b6000546001600160a01b03166100c6565b6100c66101523660046107fd565b610413565b6001546001600160a01b03166100c6565b61013161017636600461082d565b610496565b6100c66101893660046107fd565b610561565b6101ba61019c3660046107fd565b6001600160a01b031660009081526003602052604090205460ff1690565b60405190151581526020016100da565b6101316101d83660046107fd565b6105ec565b60606004826040516101ef91906108ce565b9081526020016040518091039020805461020890610982565b80601f016020809104026020016040519081016040528092919081815260200182805461023490610982565b80156102815780601f1061025657610100808354040283529160200191610281565b820191906000526020600020905b81548152906001019060200180831161026457829003601f168201915b50505050509050919050565b6000546060906001600160a01b031633146102c35760405162461bcd60e51b81526004016102ba9061091d565b60405180910390fd5b6005836040516102d391906108ce565b9081526040519081900360200190205460ff161561032f5760405162461bcd60e51b8152602060048201526019602482015278506174682055524920686173206265656e206c6f636b65642160381b60448201526064016102ba565b8160048460405161034091906108ce565b908152602001604051809103902090805190602001906103619291906106d7565b509092915050565b600080546001600160a01b031633146103945760405162461bcd60e51b81526004016102ba9061091d565b6001600160a01b03821660009081526003602052604090205460ff166103b957600080fd5b506001600160a01b0381166000908152600360205260409020805460ff1916905590565b6000546001600160a01b031633146104075760405162461bcd60e51b81526004016102ba9061091d565b6104116000610687565b565b600080546001600160a01b0316331461043e5760405162461bcd60e51b81526004016102ba9061091d565b600180546001600160a01b0319166001600160a01b0384169081179091556040517f2ff4d6b3dc1e961e0bb3272270a0a00d325c04b6893617e4d5eeb13a357b5bac90600090a250506001546001600160a01b031690565b6000546001600160a01b031633146104c05760405162461bcd60e51b81526004016102ba9061091d565b6005816040516104d091906108ce565b9081526040519081900360200190205460ff161561052c5760405162461bcd60e51b8152602060048201526019602482015278506174682055524920686173206265656e206c6f636b65642160381b60448201526064016102ba565b600160058260405161053e91906108ce565b908152604051908190036020019020805491151560ff1990921691909117905550565b600080546001600160a01b0316331461058c5760405162461bcd60e51b81526004016102ba9061091d565b600280546001600160a01b0319166001600160a01b03848116919091179091556001546040519116907f11df0896d3b103c06d45a4ba1fe214bc04e65fd13f531dadeeda010dd5aa4d6d90600090a250506002546001600160a01b031690565b6000546001600160a01b031633146106165760405162461bcd60e51b81526004016102ba9061091d565b6001600160a01b03811661067b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b61068481610687565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546106e390610982565b90600052602060002090601f016020900481019282610705576000855561074b565b82601f1061071e57805160ff191683800117855561074b565b8280016001018555821561074b579182015b8281111561074b578251825591602001919060010190610730565b5061075792915061075b565b5090565b5b80821115610757576000815560010161075c565b600082601f83011261078157600080fd5b813567ffffffffffffffff8082111561079c5761079c6109bd565b604051601f8301601f19908116603f011681019082821181831017156107c4576107c46109bd565b816040528381528660208588010111156107dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561080f57600080fd5b81356001600160a01b038116811461082657600080fd5b9392505050565b60006020828403121561083f57600080fd5b813567ffffffffffffffff81111561085657600080fd5b61086284828501610770565b949350505050565b6000806040838503121561087d57600080fd5b823567ffffffffffffffff8082111561089557600080fd5b6108a186838701610770565b935060208501359150808211156108b757600080fd5b506108c485828601610770565b9150509250929050565b600082516108e0818460208701610952565b9190910192915050565b6020815260008251806020840152610909816040850160208701610952565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60005b8381101561096d578181015183820152602001610955565b8381111561097c576000848401525b50505050565b600181811c9082168061099657607f821691505b602082108114156109b757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220469699c33ed5b4214e189ebd2a30909feda815c2347c9e5be608c85335cd822864736f6c6343000807003343616e6e6f74206265207a65726f206164647265737300000000000000000000000000000000000000000000b403d77946b4ac4fc7ca2ee1059e73f1b72d6e93000000000000000000000000c5a2f45ff2d4ca27e167600b5225c7e6e187d8c000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063aad2b72311610071578063aad2b72314610144578063b1ff4adf14610157578063b8c6aa5314610168578063dcf6d0d21461017b578063e6df3d471461018e578063f2fde38b146101ca57600080fd5b806304b8adb4146100b9578063511113e5146100e357806355b24faf14610103578063599b628614610116578063715018a6146101295780638da5cb5b14610133575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100f66100f136600461082d565b6101dd565b6040516100da91906108ea565b6100f661011136600461086a565b61028d565b6100c66101243660046107fd565b610369565b6101316103dd565b005b6000546001600160a01b03166100c6565b6100c66101523660046107fd565b610413565b6001546001600160a01b03166100c6565b61013161017636600461082d565b610496565b6100c66101893660046107fd565b610561565b6101ba61019c3660046107fd565b6001600160a01b031660009081526003602052604090205460ff1690565b60405190151581526020016100da565b6101316101d83660046107fd565b6105ec565b60606004826040516101ef91906108ce565b9081526020016040518091039020805461020890610982565b80601f016020809104026020016040519081016040528092919081815260200182805461023490610982565b80156102815780601f1061025657610100808354040283529160200191610281565b820191906000526020600020905b81548152906001019060200180831161026457829003601f168201915b50505050509050919050565b6000546060906001600160a01b031633146102c35760405162461bcd60e51b81526004016102ba9061091d565b60405180910390fd5b6005836040516102d391906108ce565b9081526040519081900360200190205460ff161561032f5760405162461bcd60e51b8152602060048201526019602482015278506174682055524920686173206265656e206c6f636b65642160381b60448201526064016102ba565b8160048460405161034091906108ce565b908152602001604051809103902090805190602001906103619291906106d7565b509092915050565b600080546001600160a01b031633146103945760405162461bcd60e51b81526004016102ba9061091d565b6001600160a01b03821660009081526003602052604090205460ff166103b957600080fd5b506001600160a01b0381166000908152600360205260409020805460ff1916905590565b6000546001600160a01b031633146104075760405162461bcd60e51b81526004016102ba9061091d565b6104116000610687565b565b600080546001600160a01b0316331461043e5760405162461bcd60e51b81526004016102ba9061091d565b600180546001600160a01b0319166001600160a01b0384169081179091556040517f2ff4d6b3dc1e961e0bb3272270a0a00d325c04b6893617e4d5eeb13a357b5bac90600090a250506001546001600160a01b031690565b6000546001600160a01b031633146104c05760405162461bcd60e51b81526004016102ba9061091d565b6005816040516104d091906108ce565b9081526040519081900360200190205460ff161561052c5760405162461bcd60e51b8152602060048201526019602482015278506174682055524920686173206265656e206c6f636b65642160381b60448201526064016102ba565b600160058260405161053e91906108ce565b908152604051908190036020019020805491151560ff1990921691909117905550565b600080546001600160a01b0316331461058c5760405162461bcd60e51b81526004016102ba9061091d565b600280546001600160a01b0319166001600160a01b03848116919091179091556001546040519116907f11df0896d3b103c06d45a4ba1fe214bc04e65fd13f531dadeeda010dd5aa4d6d90600090a250506002546001600160a01b031690565b6000546001600160a01b031633146106165760405162461bcd60e51b81526004016102ba9061091d565b6001600160a01b03811661067b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b61068481610687565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546106e390610982565b90600052602060002090601f016020900481019282610705576000855561074b565b82601f1061071e57805160ff191683800117855561074b565b8280016001018555821561074b579182015b8281111561074b578251825591602001919060010190610730565b5061075792915061075b565b5090565b5b80821115610757576000815560010161075c565b600082601f83011261078157600080fd5b813567ffffffffffffffff8082111561079c5761079c6109bd565b604051601f8301601f19908116603f011681019082821181831017156107c4576107c46109bd565b816040528381528660208588010111156107dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561080f57600080fd5b81356001600160a01b038116811461082657600080fd5b9392505050565b60006020828403121561083f57600080fd5b813567ffffffffffffffff81111561085657600080fd5b61086284828501610770565b949350505050565b6000806040838503121561087d57600080fd5b823567ffffffffffffffff8082111561089557600080fd5b6108a186838701610770565b935060208501359150808211156108b757600080fd5b506108c485828601610770565b9150509250929050565b600082516108e0818460208701610952565b9190910192915050565b6020815260008251806020840152610909816040850160208701610952565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60005b8381101561096d578181015183820152602001610955565b8381111561097c576000848401525b50505050565b600181811c9082168061099657607f821691505b602082108114156109b757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220469699c33ed5b4214e189ebd2a30909feda815c2347c9e5be608c85335cd822864736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b403d77946b4ac4fc7ca2ee1059e73f1b72d6e93000000000000000000000000c5a2f45ff2d4ca27e167600b5225c7e6e187d8c000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : addressForSigner (address): 0xb403d77946B4Ac4FC7CA2EE1059e73f1b72D6e93
Arg [1] : addressForWithdraw (address): 0xC5A2f45fF2d4CA27e167600b5225C7E6E187d8C0
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000b403d77946b4ac4fc7ca2ee1059e73f1b72d6e93
Arg [1] : 000000000000000000000000c5a2f45ff2d4ca27e167600b5225c7e6e187d8c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.