Transient Labs BlockList

BlockList is a smart contract utility that can be utilized to block approvals of marketplaces that creators don't want their work trading on.

1. Problem Statement

It's a race to zero in terms of marketplace fees, but in an effort to keep cash flow, some marketplaces have decided forego creator feeds. This hurts creators an incredible amount and we believe that creators should have the option to block having their art listed on these platforms.

2. Our Solution

This is why we created BlockList. The BlockList.sol contract can be inherited by nft contracts and the modifier notBlocked(address) can be used on setApprovalForAll and approve functions in ERC-721 and/or ERC-1155 contracts. We have included a sample implementation of both in this repo.

Theoretically, this modifier could be applied to other functions, but we HIGHLY advise against this. Applying this logic to transfer functions introduces slight vulnerabilties that should be avoided.

To implement BlockList, simply inherit BlockList.sol.

3. Why Not An Allowlist Method Instead?

To keep composability with new standards and reduced interaction needed in the future, BlockList is implemented as a blocker rather than an allower. We welcome feedback on this.


See for the latest deployments


When cloning this repo, the proper way to install or update the submodules installed with foundry is to run make remove && make install or make update.

Other methods of installing, such as forge install or forge update are not guaranteed to install the proper modules and you run a risk of installing modules with breaking changes.


We have verified with OpenSea engineers that BlockList is fully compatible with their royalties enforcement system, as of 11/7/2022.

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.


This code is copyright Transient Labs, Inc 2023 and is licensed under the MIT license.