GithubHelp home page GithubHelp logo

alteregogi / closedsea Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vectorized/closedsea

0.0 0.0 1.0 249 KB

Optimized and flexible version of OpenSea's operator filterer

License: MIT License

Solidity 100.00%

closedsea's Introduction

ClosedSea ๐Ÿšช

NPM CI MIT License

๐Ÿ“ข The OpenSea deadline for newly published contracts to include operator filtering has been extended to 2nd Jan 2023.

However, there is a new requirement that all contracts published from then onwards MUST include the ERC2981 royalty standard.

Please refer to the examples, updated for your convenience.

About the Project

Gas optimized and flexible version of OpenSea's Mandatory Operator Filterer for royalties.

Features

  • Modifiers can be toggled on / off efficiently.

  • Gas optimized. Saves 300+ gas on transfers.

  • Keeps your clients and some marketplaces happy.

Installation

To install with Foundry:

forge install vectorized/closedsea

To install with Hardhat or Truffle:

npm install closedsea

Contracts

src
โ”œโ”€ OperatorFilterer.sol โ€” "Operator Filterer for regular and upgradeable contracts"
โ””โ”€ example
   โ”œโ”€ ExampleERC721A.sol โ€” "ERC721A example"
   โ”œโ”€ ExampleERC721.sol โ€” "ERC721 example"
   โ”œโ”€ ExampleERC1155.sol โ€” "ERC1155 example"
   โ””โ”€ upgradeable
      โ”œโ”€ ExampleERC721AUpgradeable.sol โ€” "ERC721A upgradeable example"
      โ”œโ”€ ExampleERC721Upgradeable.sol โ€” "ERC721 upgradeable example"
      โ””โ”€ ExampleERC1155Upgradeable.sol โ€” "ERC1155 upgradeable example"

Examples

Type Contract
ERC721A src/example/ExampleERC721A.sol
ERC721 src/example/ExampleERC721.sol
ERC1155 src/example/ExampleERC1155.sol
ERC721AUpgradeable src/example/upgradeable/ExampleERC721AUpgradeable.sol
ERC721Upgradeable src/example/upgradeable/ExampleERC721Upgradeable.sol
ERC1155Upgradeable src/example/upgradeable/ExampleERC1155Upgradeable.sol

API

_registerForOperatorFiltering

function _registerForOperatorFiltering(
    address subscriptionOrRegistrantToCopy, 
    bool subscribe
) internal virtual

Registration function that can be called in an initializer, anywhere.

Can be called repeatedly without issues.

To subscribe to the default OpenSea curated block list, simply use _registerForOperatorFiltering(), without arguments.

onlyAllowedOperator

modifier onlyAllowedOperator(address from) virtual

Modifier to guard a function and revert if from is a blocked operator.

onlyAllowedOperatorApproval

modifier onlyAllowedOperatorApproval(address operator) virtual

Modifier to guard a function from approving a blocked operator.

_operatorFilteringEnabled

function _operatorFilteringEnabled() internal view virtual returns (bool)

For deriving contracts to override, so that operator filtering can be turned on / off.

Returns true by default.

_isPriorityOperator

function _isPriorityOperator(address operator) internal view virtual returns (bool)

For deriving contracts to override, so that preferred marketplaces can skip operator filtering, helping users save gas.

Returns false for all inputs by default.

Safety

We have verified with OpenSea engineers that ClosedSea is fully compatible with their royalties enforcement system, as of Nov 18th 2022.

Nevertheless, this codebase is provided on an "as is" and "as available" basis.

We do not give any warranties and will not be liable for any loss incurred through any use of this codebase.

Acknowledgements

This repository is inspired by and directly modified from:

closedsea's People

Contributors

1kresh avatar 2pmflow avatar cygaar avatar vectorized avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.