Address Details
contract
0x4311ba6e4584F1b5Ce5237F23E80a0360Ba9763E
- Contract Name
- PlastikRoyaltyCal
- Creator
- 0x4c45c6–9e9f2c at 0x91e1aa–844ee8
- Balance
- 0 CELO ( )
- Locked CELO Balance
- 0.00 CELO
- Voting CELO Balance
- 0.00 CELO
- Pending Unlocked Gold
- 0.00 CELO
- Tokens
-
Fetching tokens...
- Transactions
- 0 Transactions
- Transfers
- 0 Transfers
- Gas Used
- Fetching gas used...
- Last Balance Update
- 21040851
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- PlastikRoyaltyCal
- Optimization enabled
- false
- Compiler version
- v0.8.9+commit.e5eed63a
- EVM Version
- london
- Verified at
- 2022-11-03T12:06:29.366972Z
contracts/PlastikRoyaltyCal.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/common/ERC2981.sol"; interface IPlastikRoyaltyCal is IERC2981 { function setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) external; function resetTokenRoyalty(uint256 _tokenId) external; } contract PlastikRoyaltyCal is ERC2981, IPlastikRoyaltyCal { event TokenRoyaltySet(uint256 tokenId, address receiver, uint96 fee); event TokenRoyaltyReset(uint256 tokenId); function setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) public { super._setTokenRoyalty(tokenId, receiver, feeNumerator); emit TokenRoyaltySet(tokenId, receiver, feeNumerator); } function resetTokenRoyalty(uint256 tokenId) public { super._resetTokenRoyalty(tokenId); emit TokenRoyaltyReset(tokenId); } }
/_openzeppelin/contracts/interfaces/IERC165.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165.sol";
/_openzeppelin/contracts/interfaces/IERC2981.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/IERC2981.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Interface for the NFT Royalty Standard. * * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal * support for royalty payments across all NFT marketplaces and ecosystem participants. * * _Available since v4.5._ */ interface IERC2981 is IERC165 { /** * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be payed in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount); }
/_openzeppelin/contracts/token/common/ERC2981.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0-rc.0) (token/common/ERC2981.sol) pragma solidity ^0.8.0; import "../../interfaces/IERC2981.sol"; import "../../utils/introspection/ERC165.sol"; /** * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the * fee is specified in basis points by default. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC2981 is IERC2981, ERC165 { struct RoyaltyInfo { address receiver; uint96 royaltyFraction; } RoyaltyInfo private _defaultRoyaltyInfo; mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) { return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId); } /** * @inheritdoc IERC2981 */ function royaltyInfo(uint256 _tokenId, uint256 _salePrice) external view override returns (address, uint256) { RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId]; if (royalty.receiver == address(0)) { royalty = _defaultRoyaltyInfo; } uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator(); return (royalty.receiver, royaltyAmount); } /** * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an * override. */ function _feeDenominator() internal pure virtual returns (uint96) { return 10000; } /** * @dev Sets the royalty information that all ids in this contract will default to. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: invalid receiver"); _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Removes default royalty information. */ function _deleteDefaultRoyalty() internal virtual { delete _defaultRoyaltyInfo; } /** * @dev Sets the royalty information for a specific token id, overriding the global default. * * Requirements: * * - `tokenId` must be already minted. * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: Invalid parameters"); _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Resets royalty information for the token id back to the global default. */ function _resetTokenRoyalty(uint256 tokenId) internal virtual { delete _tokenRoyaltyInfo[tokenId]; } }
/_openzeppelin/contracts/utils/introspection/ERC165.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
/_openzeppelin/contracts/utils/introspection/IERC165.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) 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); }
Contract ABI
[{"type":"event","name":"TokenRoyaltyReset","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TokenRoyaltySet","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":false},{"type":"address","name":"receiver","internalType":"address","indexed":false},{"type":"uint96","name":"fee","internalType":"uint96","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"resetTokenRoyalty","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"},{"type":"uint256","name":"","internalType":"uint256"}],"name":"royaltyInfo","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"uint256","name":"_salePrice","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTokenRoyalty","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"},{"type":"address","name":"receiver","internalType":"address"},{"type":"uint96","name":"feeNumerator","internalType":"uint96"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"supportsInterface","inputs":[{"type":"bytes4","name":"interfaceId","internalType":"bytes4"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b50610b86806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100515780632a55205a146100815780635944c753146100b25780638a616bc0146100ce575b600080fd5b61006b600480360381019061006691906106b5565b6100ea565b60405161007891906106fd565b60405180910390f35b61009b6004803603810190610096919061074e565b610164565b6040516100a99291906107de565b60405180910390f35b6100cc60048036038101906100c79190610877565b61034f565b005b6100e860048036038101906100e391906108ca565b61039a565b005b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061015d575061015c826103dd565b5b9050919050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156102fa5760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610304610447565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866103309190610926565b61033a91906109af565b90508160000151819350935050509250929050565b61035a838383610451565b7f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c83838360405161038d939291906109ef565b60405180910390a1505050565b6103a3816105f9565b7f0e6dc85545aec6da2e4702814198336dc5e52c107d879f264e71c3c2abeee92d816040516103d29190610a26565b60405180910390a150565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000612710905090565b610459610447565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ae90610ac4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90610b30565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506001600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b60016000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6106928161065d565b811461069d57600080fd5b50565b6000813590506106af81610689565b92915050565b6000602082840312156106cb576106ca610658565b5b60006106d9848285016106a0565b91505092915050565b60008115159050919050565b6106f7816106e2565b82525050565b600060208201905061071260008301846106ee565b92915050565b6000819050919050565b61072b81610718565b811461073657600080fd5b50565b60008135905061074881610722565b92915050565b6000806040838503121561076557610764610658565b5b600061077385828601610739565b925050602061078485828601610739565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107b98261078e565b9050919050565b6107c9816107ae565b82525050565b6107d881610718565b82525050565b60006040820190506107f360008301856107c0565b61080060208301846107cf565b9392505050565b610810816107ae565b811461081b57600080fd5b50565b60008135905061082d81610807565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61085481610833565b811461085f57600080fd5b50565b6000813590506108718161084b565b92915050565b6000806000606084860312156108905761088f610658565b5b600061089e86828701610739565b93505060206108af8682870161081e565b92505060406108c086828701610862565b9150509250925092565b6000602082840312156108e0576108df610658565b5b60006108ee84828501610739565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061093182610718565b915061093c83610718565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610975576109746108f7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006109ba82610718565b91506109c583610718565b9250826109d5576109d4610980565b5b828204905092915050565b6109e981610833565b82525050565b6000606082019050610a0460008301866107cf565b610a1160208301856107c0565b610a1e60408301846109e0565b949350505050565b6000602082019050610a3b60008301846107cf565b92915050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000610aae602a83610a41565b9150610ab982610a52565b604082019050919050565b60006020820190508181036000830152610add81610aa1565b9050919050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b6000610b1a601b83610a41565b9150610b2582610ae4565b602082019050919050565b60006020820190508181036000830152610b4981610b0d565b905091905056fea26469706673582212200360e01fc38f4a2e6ec4d7432602dfdc4b37271582c8a9e2755d50734003073264736f6c63430008090033
Deployed ByteCode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100515780632a55205a146100815780635944c753146100b25780638a616bc0146100ce575b600080fd5b61006b600480360381019061006691906106b5565b6100ea565b60405161007891906106fd565b60405180910390f35b61009b6004803603810190610096919061074e565b610164565b6040516100a99291906107de565b60405180910390f35b6100cc60048036038101906100c79190610877565b61034f565b005b6100e860048036038101906100e391906108ca565b61039a565b005b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061015d575061015c826103dd565b5b9050919050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156102fa5760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610304610447565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866103309190610926565b61033a91906109af565b90508160000151819350935050509250929050565b61035a838383610451565b7f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c83838360405161038d939291906109ef565b60405180910390a1505050565b6103a3816105f9565b7f0e6dc85545aec6da2e4702814198336dc5e52c107d879f264e71c3c2abeee92d816040516103d29190610a26565b60405180910390a150565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000612710905090565b610459610447565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ae90610ac4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90610b30565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506001600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b60016000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6106928161065d565b811461069d57600080fd5b50565b6000813590506106af81610689565b92915050565b6000602082840312156106cb576106ca610658565b5b60006106d9848285016106a0565b91505092915050565b60008115159050919050565b6106f7816106e2565b82525050565b600060208201905061071260008301846106ee565b92915050565b6000819050919050565b61072b81610718565b811461073657600080fd5b50565b60008135905061074881610722565b92915050565b6000806040838503121561076557610764610658565b5b600061077385828601610739565b925050602061078485828601610739565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107b98261078e565b9050919050565b6107c9816107ae565b82525050565b6107d881610718565b82525050565b60006040820190506107f360008301856107c0565b61080060208301846107cf565b9392505050565b610810816107ae565b811461081b57600080fd5b50565b60008135905061082d81610807565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61085481610833565b811461085f57600080fd5b50565b6000813590506108718161084b565b92915050565b6000806000606084860312156108905761088f610658565b5b600061089e86828701610739565b93505060206108af8682870161081e565b92505060406108c086828701610862565b9150509250925092565b6000602082840312156108e0576108df610658565b5b60006108ee84828501610739565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061093182610718565b915061093c83610718565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610975576109746108f7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006109ba82610718565b91506109c583610718565b9250826109d5576109d4610980565b5b828204905092915050565b6109e981610833565b82525050565b6000606082019050610a0460008301866107cf565b610a1160208301856107c0565b610a1e60408301846109e0565b949350505050565b6000602082019050610a3b60008301846107cf565b92915050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000610aae602a83610a41565b9150610ab982610a52565b604082019050919050565b60006020820190508181036000830152610add81610aa1565b9050919050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b6000610b1a601b83610a41565b9150610b2582610ae4565b602082019050919050565b60006020820190508181036000830152610b4981610b0d565b905091905056fea26469706673582212200360e01fc38f4a2e6ec4d7432602dfdc4b37271582c8a9e2755d50734003073264736f6c63430008090033