Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Observability
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.10; import "./IObservability.sol"; /** * @title Observability * @author highlight.xyz * @notice Highlight Observability * @dev Singleton to coalesce select Highlight protocol events */ contract Observability is IObservability { /** * @notice See {IObservability-emitMinterRegistrationChanged} */ function emitMinterRegistrationChanged(address minter, bool registered) external { emit MinterRegistrationChanged(msg.sender, minter, registered); } /** * @notice See {IObservability-emitGranularTokenManagersSet} */ function emitGranularTokenManagersSet(uint256[] calldata _ids, address[] calldata _tokenManagers) external { emit GranularTokenManagersSet(msg.sender, _ids, _tokenManagers); } /** * @notice See {IObservability-emitGranularTokenManagersRemoved} */ function emitGranularTokenManagersRemoved(uint256[] calldata _ids) external { emit GranularTokenManagersRemoved(msg.sender, _ids); } /** * @notice See {IObservability-emitDefaultTokenManagerChanged} */ function emitDefaultTokenManagerChanged(address newDefaultTokenManager) external { emit DefaultTokenManagerChanged(msg.sender, newDefaultTokenManager); } /** * @notice See {IObservability-emitDefaultRoyaltySet} */ function emitDefaultRoyaltySet(address recipientAddress, uint16 royaltyPercentageBPS) external { emit DefaultRoyaltySet(msg.sender, recipientAddress, royaltyPercentageBPS); } /** * @notice See {IObservability-emitGranularRoyaltiesSet} */ function emitGranularRoyaltiesSet( uint256[] calldata ids, IRoyaltyManager.Royalty[] calldata _newRoyalties ) external { emit GranularRoyaltiesSet(msg.sender, ids, _newRoyalties); } /** * @notice See {IObservability-emitRoyaltyManagerChanged} */ function emitRoyaltyManagerChanged(address newRoyaltyManager) external { emit RoyaltyManagerChanged(msg.sender, newRoyaltyManager); } /** * @notice See {IObservability-emitMintsFrozen} */ function emitMintsFrozen() external { emit MintsFrozen(msg.sender); } /** * @notice See {IObservability-emitContractMetadataSet} */ function emitContractMetadataSet( string calldata name, string calldata symbol, string calldata contractURI ) external { emit ContractMetadataSet(msg.sender, name, symbol, contractURI); } /** * @notice See {IObservability-emitHashedMetadataConfigSet} */ function emitHashedMetadataConfigSet( bytes calldata hashedURIData, bytes calldata hashedRotationData, uint256 _supply ) external { emit HashedMetadataConfigSet(msg.sender, hashedURIData, hashedRotationData, _supply); } /** * @notice See {IObservability-emitRevealed} */ function emitRevealed(bytes calldata key, uint256 newRotationKey) external { emit Revealed(msg.sender, key, newRotationKey); } /** * @notice See {IObservability-emitTokenURIsSet} * @dev If sent by an EditionsDFS based contract, * ids and uris will be of length 1 and contain edition id / new edition uri */ function emitTokenURIsSet(uint256[] calldata ids, string[] calldata uris) external { emit TokenURIsSet(msg.sender, ids, uris); } /** * @notice See {IObservability-emitLimitSupplySet} */ function emitLimitSupplySet(uint256 newLimitSupply) external { emit LimitSupplySet(msg.sender, newLimitSupply); } /** * @notice See {IObservability-emitBaseUriSet} */ function emitBaseUriSet(string calldata newBaseUri) external { emit BaseUriSet(msg.sender, newBaseUri); } /** * @notice See {IObservability-emitGenerativeSeriesDeployed} */ function emitGenerativeSeriesDeployed(address contractAddress) external { emit GenerativeSeriesDeployed(msg.sender, contractAddress); } /** * @notice See {IObservability-emitSeriesDeployed} */ function emitSeriesDeployed(address contractAddress) external { emit SeriesDeployed(msg.sender, contractAddress); } /** * @notice See {IObservability-emitMultipleEditionsDeployed} */ function emitMultipleEditionsDeployed(address contractAddress) external { emit MultipleEditionsDeployed(msg.sender, contractAddress); } /** * @notice See {IObservability-emitSingleEditionDeployed} */ function emitSingleEditionDeployed(address contractAddress) external { emit SingleEditionDeployed(msg.sender, contractAddress); } /** * @notice See {IObservability-emitTransfer} */ function emitTransfer(address from, address to, uint256 tokenId) external { emit Transfer(msg.sender, from, to, tokenId); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.10; import "../royaltyManager/interfaces/IRoyaltyManager.sol"; /** * @title IObservability * @author highlight.xyz * @notice Interface to interact with the Highlight observability singleton * @dev Singleton to coalesce select Highlight protocol events */ interface IObservability { /************************** ERC721Base / ERC721MinimizedBase events **************************/ /** * @notice Emitted when minter is registered or unregistered * @param contractAddress Initial contract that emitted event * @param minter Minter that was changed * @param registered True if the minter was registered, false if unregistered */ event MinterRegistrationChanged(address indexed contractAddress, address indexed minter, bool indexed registered); /** * @notice Emitted when token managers are set for token/edition ids * @param contractAddress Initial contract that emitted event * @param _ids Edition / token ids * @param _tokenManagers Token managers to set for tokens / editions */ event GranularTokenManagersSet(address indexed contractAddress, uint256[] _ids, address[] _tokenManagers); /** * @notice Emitted when token managers are removed for token/edition ids * @param contractAddress Initial contract that emitted event * @param _ids Edition / token ids to remove token managers for */ event GranularTokenManagersRemoved(address indexed contractAddress, uint256[] _ids); /** * @notice Emitted when default token manager changed * @param contractAddress Initial contract that emitted event * @param newDefaultTokenManager New default token manager. Zero address if old one was removed */ event DefaultTokenManagerChanged(address indexed contractAddress, address indexed newDefaultTokenManager); /** * @notice Emitted when default royalty is set * @param contractAddress Initial contract that emitted event * @param recipientAddress Royalty recipient * @param royaltyPercentageBPS Percentage of sale (in basis points) owed to royalty recipient */ event DefaultRoyaltySet( address indexed contractAddress, address indexed recipientAddress, uint16 indexed royaltyPercentageBPS ); /** * @notice Emitted when royalties are set for edition / token ids * @param contractAddress Initial contract that emitted event * @param ids Token / edition ids * @param _newRoyalties New royalties for each token / edition */ event GranularRoyaltiesSet(address indexed contractAddress, uint256[] ids, IRoyaltyManager.Royalty[] _newRoyalties); /** * @notice Emitted when royalty manager is updated * @param contractAddress Initial contract that emitted event * @param newRoyaltyManager New royalty manager. Zero address if old one was removed */ event RoyaltyManagerChanged(address indexed contractAddress, address indexed newRoyaltyManager); /** * @notice Emitted when mints are frozen permanently * @param contractAddress Initial contract that emitted event */ event MintsFrozen(address indexed contractAddress); /** * @notice Emitted when contract metadata is set * @param contractAddress Initial contract that emitted event * @param name New name * @param symbol New symbol * @param contractURI New contract uri */ event ContractMetadataSet(address indexed contractAddress, string name, string symbol, string contractURI); /************************** ERC721General events **************************/ /** * @notice Emitted when hashed metadata config is set * @param contractAddress Initial contract that emitted event * @param hashedURIData Hashed uri data * @param hashedRotationData Hashed rotation key * @param _supply Supply of tokens to mint w/ reveal */ event HashedMetadataConfigSet( address indexed contractAddress, bytes hashedURIData, bytes hashedRotationData, uint256 indexed _supply ); /** * @notice Emitted when metadata is revealed * @param contractAddress Initial contract that emitted event * @param key Key used to decode hashed data * @param newRotationKey Actual rotation key to be used */ event Revealed(address indexed contractAddress, bytes key, uint256 newRotationKey); /************************** ERC721GeneralBase events **************************/ /** * @notice Emitted when uris are set for tokens * @param contractAddress Initial contract that emitted event * @param ids IDs of tokens to set uris for * @param uris Uris to set on tokens */ event TokenURIsSet(address indexed contractAddress, uint256[] ids, string[] uris); /** * @notice Emitted when limit supply is set * @param contractAddress Initial contract that emitted event * @param newLimitSupply Limit supply to set */ event LimitSupplySet(address indexed contractAddress, uint256 indexed newLimitSupply); /************************** ERC721StorageUri events **************************/ /** * @notice Emits when a series collection has its base uri set * @param contractAddress Contract with updated base uri * @param newBaseUri New base uri */ event BaseUriSet(address indexed contractAddress, string newBaseUri); /************************** ERC721Editions / ERC721SingleEdition events **************************/ // Not adding EditionCreated, EditionMintedToOneRecipient, EditionMintedToRecipients // EditionCreated - handled by MetadataInitialized // EditionMintedToOneRecipient / EditionMintedToRecipients - handled via mint module events /************************** Deployment events **************************/ /** * @notice Emitted when Generative Series contract is deployed * @param deployer Contract deployer * @param contractAddress Address of contract that was deployed */ event GenerativeSeriesDeployed(address indexed deployer, address indexed contractAddress); /** * @notice Emitted when Series contract is deployed * @param deployer Contract deployer * @param contractAddress Address of contract that was deployed */ event SeriesDeployed(address indexed deployer, address indexed contractAddress); /** * @notice Emitted when MultipleEditions contract is deployed * @param deployer Contract deployer * @param contractAddress Address of contract that was deployed */ event MultipleEditionsDeployed(address indexed deployer, address indexed contractAddress); /** * @notice Emitted when SingleEdition contract is deployed * @param deployer Contract deployer * @param contractAddress Address of contract that was deployed */ event SingleEditionDeployed(address indexed deployer, address indexed contractAddress); /************************** ERC721 events **************************/ /** * @notice Emitted when `tokenId` token is transferred from `from` to `to` on contractAddress * @param contractAddress NFT contract token resides on * @param from Token sender * @param to Token receiver * @param tokenId Token being sent */ event Transfer(address indexed contractAddress, address indexed from, address to, uint256 indexed tokenId); /** * @notice Emit MinterRegistrationChanged */ function emitMinterRegistrationChanged(address minter, bool registered) external; /** * @notice Emit GranularTokenManagersSet */ function emitGranularTokenManagersSet(uint256[] calldata _ids, address[] calldata _tokenManagers) external; /** * @notice Emit GranularTokenManagersRemoved */ function emitGranularTokenManagersRemoved(uint256[] calldata _ids) external; /** * @notice Emit DefaultTokenManagerChanged */ function emitDefaultTokenManagerChanged(address newDefaultTokenManager) external; /** * @notice Emit DefaultRoyaltySet */ function emitDefaultRoyaltySet(address recipientAddress, uint16 royaltyPercentageBPS) external; /** * @notice Emit GranularRoyaltiesSet */ function emitGranularRoyaltiesSet( uint256[] calldata ids, IRoyaltyManager.Royalty[] calldata _newRoyalties ) external; /** * @notice Emit RoyaltyManagerChanged */ function emitRoyaltyManagerChanged(address newRoyaltyManager) external; /** * @notice Emit MintsFrozen */ function emitMintsFrozen() external; /** * @notice Emit ContractMetadataSet */ function emitContractMetadataSet( string calldata name, string calldata symbol, string calldata contractURI ) external; /** * @notice Emit HashedMetadataConfigSet */ function emitHashedMetadataConfigSet( bytes calldata hashedURIData, bytes calldata hashedRotationData, uint256 _supply ) external; /** * @notice Emit Revealed */ function emitRevealed(bytes calldata key, uint256 newRotationKey) external; /** * @notice Emit TokenURIsSet */ function emitTokenURIsSet(uint256[] calldata ids, string[] calldata uris) external; /** * @notice Emit LimitSupplySet */ function emitLimitSupplySet(uint256 newLimitSupply) external; /** * @notice Emit BaseUriSet */ function emitBaseUriSet(string calldata newBaseUri) external; /** * @notice Emit GenerativeSeriesDeployed */ function emitGenerativeSeriesDeployed(address contractAddress) external; /** * @notice Emit SeriesDeployed */ function emitSeriesDeployed(address contractAddress) external; /** * @notice Emit MultipleEditionsDeployed */ function emitMultipleEditionsDeployed(address contractAddress) external; /** * @notice Emit SingleEditionDeployed */ function emitSingleEditionDeployed(address contractAddress) external; /** * @notice Emit Transfer */ function emitTransfer(address from, address to, uint256 tokenId) external; }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.10; /** * @title IRoyaltyManager * @author highlight.xyz * @notice Enables interfacing with custom royalty managers that define conditions on setting royalties for * NFT contracts */ interface IRoyaltyManager { /** * @notice Struct containing values required to adhere to ERC-2981 * @param recipientAddress Royalty recipient - can be EOA, royalty splitter contract, etc. * @param royaltyPercentageBPS Royalty cut, in basis points */ struct Royalty { address recipientAddress; uint16 royaltyPercentageBPS; } /** * @notice Defines conditions around being able to swap royalty manager for another one * @param newRoyaltyManager New royalty manager being swapped in * @param sender msg sender */ function canSwap(address newRoyaltyManager, address sender) external view returns (bool); /** * @notice Defines conditions around being able to remove current royalty manager * @param sender msg sender */ function canRemoveItself(address sender) external view returns (bool); /** * @notice Defines conditions around being able to set granular royalty (per token or per edition) * @param id Edition / token ID whose royalty is being set * @param royalty Royalty being set * @param sender msg sender */ function canSetGranularRoyalty(uint256 id, Royalty calldata royalty, address sender) external view returns (bool); /** * @notice Defines conditions around being able to set default royalty * @param royalty Royalty being set * @param sender msg sender */ function canSetDefaultRoyalty(Royalty calldata royalty, address sender) external view returns (bool); }
{ "metadata": { "bytecodeHash": "none" }, "optimizer": { "enabled": true, "runs": 1 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"newBaseUri","type":"string"}],"name":"BaseUriSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"string","name":"contractURI","type":"string"}],"name":"ContractMetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"recipientAddress","type":"address"},{"indexed":true,"internalType":"uint16","name":"royaltyPercentageBPS","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newDefaultTokenManager","type":"address"}],"name":"DefaultTokenManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"GenerativeSeriesDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"components":[{"internalType":"address","name":"recipientAddress","type":"address"},{"internalType":"uint16","name":"royaltyPercentageBPS","type":"uint16"}],"indexed":false,"internalType":"struct IRoyaltyManager.Royalty[]","name":"_newRoyalties","type":"tuple[]"}],"name":"GranularRoyaltiesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"GranularTokenManagersRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"_tokenManagers","type":"address[]"}],"name":"GranularTokenManagersSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"hashedURIData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"hashedRotationData","type":"bytes"},{"indexed":true,"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"HashedMetadataConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"newLimitSupply","type":"uint256"}],"name":"LimitSupplySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"bool","name":"registered","type":"bool"}],"name":"MinterRegistrationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"MintsFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"MultipleEditionsDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"key","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"newRotationKey","type":"uint256"}],"name":"Revealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newRoyaltyManager","type":"address"}],"name":"RoyaltyManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"SeriesDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"SingleEditionDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"uris","type":"string[]"}],"name":"TokenURIsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"string","name":"newBaseUri","type":"string"}],"name":"emitBaseUriSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"}],"name":"emitContractMetadataSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipientAddress","type":"address"},{"internalType":"uint16","name":"royaltyPercentageBPS","type":"uint16"}],"name":"emitDefaultRoyaltySet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDefaultTokenManager","type":"address"}],"name":"emitDefaultTokenManagerChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"emitGenerativeSeriesDeployed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"components":[{"internalType":"address","name":"recipientAddress","type":"address"},{"internalType":"uint16","name":"royaltyPercentageBPS","type":"uint16"}],"internalType":"struct IRoyaltyManager.Royalty[]","name":"_newRoyalties","type":"tuple[]"}],"name":"emitGranularRoyaltiesSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"emitGranularTokenManagersRemoved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"address[]","name":"_tokenManagers","type":"address[]"}],"name":"emitGranularTokenManagersSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"hashedURIData","type":"bytes"},{"internalType":"bytes","name":"hashedRotationData","type":"bytes"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"emitHashedMetadataConfigSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimitSupply","type":"uint256"}],"name":"emitLimitSupplySet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"registered","type":"bool"}],"name":"emitMinterRegistrationChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitMintsFrozen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"emitMultipleEditionsDeployed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"uint256","name":"newRotationKey","type":"uint256"}],"name":"emitRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRoyaltyManager","type":"address"}],"name":"emitRoyaltyManagerChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"emitSeriesDeployed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"emitSingleEditionDeployed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"string[]","name":"uris","type":"string[]"}],"name":"emitTokenURIsSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"emitTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610e40806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f15760003560e01c806315bd85bf146100f657806316365cdd1461010b5780631ed497ef1461011e57806323de6651146101315780632445a9b6146101445780632504956c14610157578063332a79b11461016a57806357c31fde1461017d57806359faca96146101905780635bf57bc3146101a35780636f9c6580146101b657806374c1ace1146101c957806380d93734146101dc578063a9292a6f146101ef578063d10072c014610202578063df56308214610215578063eabab42214610228578063f872381d1461023b578063fd120bd21461024e575b600080fd5b610109610104366004610755565b610256565b005b6101096101193660046107dc565b6102a3565b61010961012c36600461083f565b6102dc565b61010961013f3660046108b2565b61032b565b6101096101523660046107dc565b610375565b6101096101653660046108ee565b6103ae565b6101096101783660046107dc565b6103de565b61010961018b366004610907565b610417565b61010961019e3660046109a0565b610456565b6101096101b13660046109e1565b61049d565b6101096101c43660046107dc565b6104f0565b6101096101d7366004610755565b610529565b6101096101ea366004610a7a565b610568565b6101096101fd366004610aaf565b6105a3565b610109610210366004610afd565b6105e1565b610109610223366004610b30565b610621565b6101096102363660046107dc565b61066b565b6101096102493660046107dc565b6106a4565b6101096106dd565b336001600160a01b03167f68f20a92f952f05576f01c5c309e0cbcb488e19d7be7584c43fdc8ee7acd866e858585856040516102959493929190610bb1565b60405180910390a250505050565b6040516001600160a01b0382169033907f54459a1c729fc7fd5e2c64d09651617285e33d211c989754260b81d82dd016d390600090a350565b80336001600160a01b03167f23c0a4961aacef41af9af4e63194f892d7d6f593ae65be05fdd2e453b64da41b8787878760405161031c9493929190610c3d565b60405180910390a35050505050565b6040516001600160a01b03838116825282919085169033907fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f9060200160405180910390a4505050565b6040516001600160a01b0382169033907f8bf1b57412ec0f67a9661bc28c5cc6c4c337f85d9ad48ddee9b3f9e5770aef7b90600090a350565b604051819033907f067806a42f80bcdadd73d7a9b2eca2312f5ad861a0fd8cd7c9e78c81d670319f90600090a350565b6040516001600160a01b0382169033907f315017f18deeaa9ad60efd0ae64aca323068cccffeec24c8a932e9b1ca0cb01190600090a350565b336001600160a01b03167f9c9e7d012e63912043c723f41d7af64b60090160db01a7f43a1991442b16990b858585856040516102959493929190610c6f565b336001600160a01b03167fc81ec139eae286c446f3673767819bc692a0a9fde7ae5c1d2eeb445d782ebaa18383604051610491929190610ce6565b60405180910390a25050565b336001600160a01b03167f8019bccd366de831b0d51e7e5aa9caf96b43b99dd80bbef2a924a362e404567c8787878787876040516104e096959493929190610d02565b60405180910390a2505050505050565b6040516001600160a01b0382169033907f202f22e99cf37885e0708d1d2b9fa637b14388f863c2aa3f779e92f3b3ba741e90600090a350565b336001600160a01b03167fa52c3c9ffc0a6e5210b59581587d6573fb6004408a5451c0564fd3942d4601a8858585856040516102959493929190610d4b565b336001600160a01b03167f930d904b5b7194b29bdfd1f517998e62d761fe32887d571ee2f96d0add9d9b748383604051610491929190610dfb565b604051811515906001600160a01b0384169033907f4f2ce864f7c04ee8dc61427346b66aa4a947314c6b561cbacf612fceb42f05a090600090a45050565b60405161ffff8216906001600160a01b0384169033907f7c3c5656834cb40e3a90962cddc3a70d3189499588e318fe7f498ed7e5487e4590600090a45050565b336001600160a01b03167f6e2db344754dbaea5e2a6c67450f4062d42bd7674316db8a854c42d370e26d2b84848460405161065e93929190610e0f565b60405180910390a2505050565b6040516001600160a01b0382169033907f170216281573e5756f59b000a325dd09961e8c3bba278254c41540bafbce2e3c90600090a350565b6040516001600160a01b0382169033907ff447e8b1081b7b0f8f13f9b7c5dde3be23bf8c5829cd2ffdfcfc896fb00b18ea90600090a350565b60405133907f0caf37441edbf9c2cfae8019a4e893ba1ae16d480d3206d47a10b770e92463e690600090a2565b60008083601f84011261071c57600080fd5b5081356001600160401b0381111561073357600080fd5b6020830191508360208260051b850101111561074e57600080fd5b9250929050565b6000806000806040858703121561076b57600080fd5b84356001600160401b038082111561078257600080fd5b61078e8883890161070a565b909650945060208701359150808211156107a757600080fd5b506107b48782880161070a565b95989497509550505050565b80356001600160a01b03811681146107d757600080fd5b919050565b6000602082840312156107ee57600080fd5b6107f7826107c0565b9392505050565b60008083601f84011261081057600080fd5b5081356001600160401b0381111561082757600080fd5b60208301915083602082850101111561074e57600080fd5b60008060008060006060868803121561085757600080fd5b85356001600160401b038082111561086e57600080fd5b61087a89838a016107fe565b9097509550602088013591508082111561089357600080fd5b506108a0888289016107fe565b96999598509660400135949350505050565b6000806000606084860312156108c757600080fd5b6108d0846107c0565b92506108de602085016107c0565b9150604084013590509250925092565b60006020828403121561090057600080fd5b5035919050565b6000806000806040858703121561091d57600080fd5b84356001600160401b038082111561093457600080fd5b6109408883890161070a565b9096509450602087013591508082111561095957600080fd5b818701915087601f83011261096d57600080fd5b81358181111561097c57600080fd5b8860208260061b850101111561099157600080fd5b95989497505060200194505050565b600080602083850312156109b357600080fd5b82356001600160401b038111156109c957600080fd5b6109d5858286016107fe565b90969095509350505050565b600080600080600080606087890312156109fa57600080fd5b86356001600160401b0380821115610a1157600080fd5b610a1d8a838b016107fe565b90985096506020890135915080821115610a3657600080fd5b610a428a838b016107fe565b90965094506040890135915080821115610a5b57600080fd5b50610a6889828a016107fe565b979a9699509497509295939492505050565b60008060208385031215610a8d57600080fd5b82356001600160401b03811115610aa357600080fd5b6109d58582860161070a565b60008060408385031215610ac257600080fd5b610acb836107c0565b915060208301358015158114610ae057600080fd5b809150509250929050565b803561ffff811681146107d757600080fd5b60008060408385031215610b1057600080fd5b610b19836107c0565b9150610b2760208401610aeb565b90509250929050565b600080600060408486031215610b4557600080fd5b83356001600160401b03811115610b5b57600080fd5b610b67868287016107fe565b909790965060209590950135949350505050565b81835260006001600160fb1b03831115610b9457600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000610bc5604083018688610b7b565b8281036020848101919091528482528591810160005b86811015610c07576001600160a01b03610bf4856107c0565b1682529282019290820190600101610bdb565b5098975050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000610c51604083018688610c14565b8281036020840152610c64818587610c14565b979650505050505050565b60006040808352610c838184018789610b7b565b8381036020858101919091528582528691810160005b87811015610cd8576001600160a01b03610cb2856107c0565b16825261ffff610cc3848601610aeb565b16828401529284019290840190600101610c99565b509998505050505050505050565b602081526000610cfa602083018486610c14565b949350505050565b606081526000610d1660608301888a610c14565b8281036020840152610d29818789610c14565b90508281036040840152610d3e818587610c14565b9998505050505050505050565b604081526000610d5f604083018688610b7b565b602083820381850152818583528183019050818660051b8401018760005b88811015610deb57858303601f190184528135368b9003601e19018112610da357600080fd5b8a0180356001600160401b03811115610dbb57600080fd5b8036038c1315610dca57600080fd5b610dd78582898501610c14565b958701959450505090840190600101610d7d565b50909a9950505050505050505050565b602081526000610cfa602083018486610b7b565b604081526000610e23604083018587610c14565b905082602083015294935050505056fea164736f6c634300080a000a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f15760003560e01c806315bd85bf146100f657806316365cdd1461010b5780631ed497ef1461011e57806323de6651146101315780632445a9b6146101445780632504956c14610157578063332a79b11461016a57806357c31fde1461017d57806359faca96146101905780635bf57bc3146101a35780636f9c6580146101b657806374c1ace1146101c957806380d93734146101dc578063a9292a6f146101ef578063d10072c014610202578063df56308214610215578063eabab42214610228578063f872381d1461023b578063fd120bd21461024e575b600080fd5b610109610104366004610755565b610256565b005b6101096101193660046107dc565b6102a3565b61010961012c36600461083f565b6102dc565b61010961013f3660046108b2565b61032b565b6101096101523660046107dc565b610375565b6101096101653660046108ee565b6103ae565b6101096101783660046107dc565b6103de565b61010961018b366004610907565b610417565b61010961019e3660046109a0565b610456565b6101096101b13660046109e1565b61049d565b6101096101c43660046107dc565b6104f0565b6101096101d7366004610755565b610529565b6101096101ea366004610a7a565b610568565b6101096101fd366004610aaf565b6105a3565b610109610210366004610afd565b6105e1565b610109610223366004610b30565b610621565b6101096102363660046107dc565b61066b565b6101096102493660046107dc565b6106a4565b6101096106dd565b336001600160a01b03167f68f20a92f952f05576f01c5c309e0cbcb488e19d7be7584c43fdc8ee7acd866e858585856040516102959493929190610bb1565b60405180910390a250505050565b6040516001600160a01b0382169033907f54459a1c729fc7fd5e2c64d09651617285e33d211c989754260b81d82dd016d390600090a350565b80336001600160a01b03167f23c0a4961aacef41af9af4e63194f892d7d6f593ae65be05fdd2e453b64da41b8787878760405161031c9493929190610c3d565b60405180910390a35050505050565b6040516001600160a01b03838116825282919085169033907fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f9060200160405180910390a4505050565b6040516001600160a01b0382169033907f8bf1b57412ec0f67a9661bc28c5cc6c4c337f85d9ad48ddee9b3f9e5770aef7b90600090a350565b604051819033907f067806a42f80bcdadd73d7a9b2eca2312f5ad861a0fd8cd7c9e78c81d670319f90600090a350565b6040516001600160a01b0382169033907f315017f18deeaa9ad60efd0ae64aca323068cccffeec24c8a932e9b1ca0cb01190600090a350565b336001600160a01b03167f9c9e7d012e63912043c723f41d7af64b60090160db01a7f43a1991442b16990b858585856040516102959493929190610c6f565b336001600160a01b03167fc81ec139eae286c446f3673767819bc692a0a9fde7ae5c1d2eeb445d782ebaa18383604051610491929190610ce6565b60405180910390a25050565b336001600160a01b03167f8019bccd366de831b0d51e7e5aa9caf96b43b99dd80bbef2a924a362e404567c8787878787876040516104e096959493929190610d02565b60405180910390a2505050505050565b6040516001600160a01b0382169033907f202f22e99cf37885e0708d1d2b9fa637b14388f863c2aa3f779e92f3b3ba741e90600090a350565b336001600160a01b03167fa52c3c9ffc0a6e5210b59581587d6573fb6004408a5451c0564fd3942d4601a8858585856040516102959493929190610d4b565b336001600160a01b03167f930d904b5b7194b29bdfd1f517998e62d761fe32887d571ee2f96d0add9d9b748383604051610491929190610dfb565b604051811515906001600160a01b0384169033907f4f2ce864f7c04ee8dc61427346b66aa4a947314c6b561cbacf612fceb42f05a090600090a45050565b60405161ffff8216906001600160a01b0384169033907f7c3c5656834cb40e3a90962cddc3a70d3189499588e318fe7f498ed7e5487e4590600090a45050565b336001600160a01b03167f6e2db344754dbaea5e2a6c67450f4062d42bd7674316db8a854c42d370e26d2b84848460405161065e93929190610e0f565b60405180910390a2505050565b6040516001600160a01b0382169033907f170216281573e5756f59b000a325dd09961e8c3bba278254c41540bafbce2e3c90600090a350565b6040516001600160a01b0382169033907ff447e8b1081b7b0f8f13f9b7c5dde3be23bf8c5829cd2ffdfcfc896fb00b18ea90600090a350565b60405133907f0caf37441edbf9c2cfae8019a4e893ba1ae16d480d3206d47a10b770e92463e690600090a2565b60008083601f84011261071c57600080fd5b5081356001600160401b0381111561073357600080fd5b6020830191508360208260051b850101111561074e57600080fd5b9250929050565b6000806000806040858703121561076b57600080fd5b84356001600160401b038082111561078257600080fd5b61078e8883890161070a565b909650945060208701359150808211156107a757600080fd5b506107b48782880161070a565b95989497509550505050565b80356001600160a01b03811681146107d757600080fd5b919050565b6000602082840312156107ee57600080fd5b6107f7826107c0565b9392505050565b60008083601f84011261081057600080fd5b5081356001600160401b0381111561082757600080fd5b60208301915083602082850101111561074e57600080fd5b60008060008060006060868803121561085757600080fd5b85356001600160401b038082111561086e57600080fd5b61087a89838a016107fe565b9097509550602088013591508082111561089357600080fd5b506108a0888289016107fe565b96999598509660400135949350505050565b6000806000606084860312156108c757600080fd5b6108d0846107c0565b92506108de602085016107c0565b9150604084013590509250925092565b60006020828403121561090057600080fd5b5035919050565b6000806000806040858703121561091d57600080fd5b84356001600160401b038082111561093457600080fd5b6109408883890161070a565b9096509450602087013591508082111561095957600080fd5b818701915087601f83011261096d57600080fd5b81358181111561097c57600080fd5b8860208260061b850101111561099157600080fd5b95989497505060200194505050565b600080602083850312156109b357600080fd5b82356001600160401b038111156109c957600080fd5b6109d5858286016107fe565b90969095509350505050565b600080600080600080606087890312156109fa57600080fd5b86356001600160401b0380821115610a1157600080fd5b610a1d8a838b016107fe565b90985096506020890135915080821115610a3657600080fd5b610a428a838b016107fe565b90965094506040890135915080821115610a5b57600080fd5b50610a6889828a016107fe565b979a9699509497509295939492505050565b60008060208385031215610a8d57600080fd5b82356001600160401b03811115610aa357600080fd5b6109d58582860161070a565b60008060408385031215610ac257600080fd5b610acb836107c0565b915060208301358015158114610ae057600080fd5b809150509250929050565b803561ffff811681146107d757600080fd5b60008060408385031215610b1057600080fd5b610b19836107c0565b9150610b2760208401610aeb565b90509250929050565b600080600060408486031215610b4557600080fd5b83356001600160401b03811115610b5b57600080fd5b610b67868287016107fe565b909790965060209590950135949350505050565b81835260006001600160fb1b03831115610b9457600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000610bc5604083018688610b7b565b8281036020848101919091528482528591810160005b86811015610c07576001600160a01b03610bf4856107c0565b1682529282019290820190600101610bdb565b5098975050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000610c51604083018688610c14565b8281036020840152610c64818587610c14565b979650505050505050565b60006040808352610c838184018789610b7b565b8381036020858101919091528582528691810160005b87811015610cd8576001600160a01b03610cb2856107c0565b16825261ffff610cc3848601610aeb565b16828401529284019290840190600101610c99565b509998505050505050505050565b602081526000610cfa602083018486610c14565b949350505050565b606081526000610d1660608301888a610c14565b8281036020840152610d29818789610c14565b90508281036040840152610d3e818587610c14565b9998505050505050505050565b604081526000610d5f604083018688610b7b565b602083820381850152818583528183019050818660051b8401018760005b88811015610deb57858303601f190184528135368b9003601e19018112610da357600080fd5b8a0180356001600160401b03811115610dbb57600080fd5b8036038c1315610dca57600080fd5b610dd78582898501610c14565b958701959450505090840190600101610d7d565b50909a9950505050505050505050565b602081526000610cfa602083018486610b7b565b604081526000610e23604083018587610c14565b905082602083015294935050505056fea164736f6c634300080a000a
Loading...
Loading
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.