Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15401949 | 773 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Minimal Proxy Contract for 0x76de14f5e6c592505d1889fe68ed4b37fbf4419e
Contract Name:
WOWSCryptofolio
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
/* * Copyright (C) 2020-2021 The Wolfpack * This file is part of wolves.finance - https://github.com/wolvesofwallstreet/wolves.finance * * SPDX-License-Identifier: Apache-2.0 * See the file LICENSES/README.md for more information. */ pragma solidity >=0.7.0 <0.8.0; import '../../0xerc1155/tokens/ERC1155/ERC1155Holder.sol'; import './interfaces/IWOWSCryptofolio.sol'; contract WOWSCryptofolio is IWOWSCryptofolio, ERC1155Holder { ////////////////////////////////////////////////////////////////////////////// // State ////////////////////////////////////////////////////////////////////////////// // The sftHolder contract address private immutable _sftContract; // The cfolioItemHandler address public override handler; ////////////////////////////////////////////////////////////////////////////// // Modifier ////////////////////////////////////////////////////////////////////////////// modifier onlyFromSftContract() { require(msg.sender == address(_sftContract), 'CF: Only sftContract'); _; } ////////////////////////////////////////////////////////////////////////////// // Initialization ////////////////////////////////////////////////////////////////////////////// constructor(address sftContract) { _sftContract = sftContract; } ////////////////////////////////////////////////////////////////////////////// // Implementation of {IWOWSCryptofolio} ////////////////////////////////////////////////////////////////////////////// /** * @dev See {IWOWSCryptofolio-setHandler}. */ function setHandler(address newHandler) external override onlyFromSftContract { handler = newHandler; } ////////////////////////////////////////////////////////////////////////////// // Implementation of {IERC1155TokenReceiver} via {ERC1155Holder} ////////////////////////////////////////////////////////////////////////////// /** * @dev See {IERC1155TokenReceiver-onERC1155Received} */ function onERC1155Received( address operator, address from, uint256 tokenId, uint256 amount, bytes calldata data ) public override onlyFromSftContract returns (bytes4) { // Call ancestor return super.onERC1155Received(operator, from, tokenId, amount, data); } /** * @dev See {IERC1155TokenReceiver-onERC1155BatchReceived} */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata tokenIds, uint256[] calldata amounts, bytes calldata data ) public override onlyFromSftContract returns (bytes4) { // Call ancestor return super.onERC1155BatchReceived(operator, from, tokenIds, amounts, data); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.7.6; /** * @dev ERC-1155 interface for accepting safe transfers. */ interface IERC1155TokenReceiver { /** * @notice Handle the receipt of a single ERC1155 token type * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value MUST result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeTransferFrom` function * @param _from The address which previously owned the token * @param _id The id of the token being transferred * @param _amount The amount of tokens being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` */ function onERC1155Received( address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data ) external returns (bytes4); /** * @notice Handle the receipt of multiple ERC1155 token types * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value WILL result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeBatchTransferFrom` function * @param _from The address which previously owned the token * @param _ids An array containing ids of each token being transferred * @param _amounts An array containing amounts of each token being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` */ function onERC1155BatchReceived( address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; import '../../interfaces/IERC1155TokenReceiver.sol'; import '../../utils/ERC165.sol'; /** * @dev _Available since v3.1._ */ contract ERC1155Holder is ERC165, IERC1155TokenReceiver { function onERC1155Received( address, address, uint256, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] memory, uint256[] memory, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155BatchReceived.selector; } function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { if (_interfaceID == type(IERC1155TokenReceiver).interfaceId) { return true; } return super.supportsInterface(_interfaceID); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.7.6; abstract contract ERC165 { /** * @notice Query if a contract implements an interface * @param _interfaceID The interface identifier, as specified in ERC-165 * @return `true` if the contract implements `_interfaceID` */ function supportsInterface(bytes4 _interfaceID) public pure virtual returns (bool) { return _interfaceID == this.supportsInterface.selector; } }
/* * Copyright (C) 2021 The Wolfpack * This file is part of wolves.finance - https://github.com/wolvesofwallstreet/wolves.finance * * SPDX-License-Identifier: Apache-2.0 * See the file LICENSES/README.md for more information. */ pragma solidity >=0.7.0 <0.8.0; /** * @notice Cryptofolio interface */ interface IWOWSCryptofolio { ////////////////////////////////////////////////////////////////////////////// // Getter ////////////////////////////////////////////////////////////////////////////// /** * @dev Return the handler (CFIH) of the underlying NFT */ function handler() external view returns (address); ////////////////////////////////////////////////////////////////////////////// // State modifiers ////////////////////////////////////////////////////////////////////////////// /** * @dev Set the handler of the underlying NFT * * This function is called during I-NFT setup * * @param newHandler The new handler of the underlying NFT, */ function setHandler(address newHandler) external; }
{ "evmVersion": "berlin", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1000 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
[{"inputs":[{"internalType":"address","name":"sftContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"handler","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newHandler","type":"address"}],"name":"setHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}]
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.