NiftyKit: Our Stance On Creator Royalties

NiftyKit

Nov 9, 2022

NiftyKit

Nov 9, 2022

NiftyKit

Nov 9, 2022

Creator Royalties

With the recent controversy surrounding royalties, there’s been an increasing need for self-custody in NFTs to uphold the promises a smart contract has to offer.

Currently, marketplaces have grown too big and have too much leverage over creators. Most creators don’t have a say in where their NFTs are sold and cannot do anything if and when a marketplace adjusts their royalty agreements.

This space attracted so many creators because it re-imagined and developed a space where the transactions become on-chain with revenue in perpetuity. This is especially true for creators wanting permanent financial recognition and a promise of a new economic structure for their work. When royalties get tampered with or eliminated, so does the appeal for creators – especially those from industries that have established this behavior before.

Our Stance

At NiftyKit, we aim to provide features for creators to manage their smart contracts. We want to give the creators the power to choose which operators can interact with their NFTs. We want to incentivize creators to continue to deliver value and prevent certain operators from taking advantage of their work.

We want creators to thrive in both the short term AND the long term.

Now Live: Operator Registry

How The Operator Registry Works

Operator Registry is an optional extension that allows NFT Smart Contracts to identify Marketplace Operators (Proxy Smart Contracts that execute the trade) using bytes32 identifiers, which can be used to gate smart contract operations (i.e., marketplace sales) by their classification.

The following override can be set for any standard ERC-721 under isAllowedForAll, to prevent allowing all authorizations:

if (_operatorRegistry != address(0)) { bytes32 identifier = IOperatorRegistry(_operatorRegistry) .getIdentifier(operator); if (_allowedOperators[identifier]) return true; if (_blockedOperators[identifier]) return false; }

Note: _allowedOperators is called before _blockedOperators; in case we want to block all operators and have an allow list of operators, we can set a default value for getIdentifier, which can be classified as “ALL,” set to block all operators. By setting _allowedOperators first, we can have a private marketplace environment where only the allowed operators can be called (without spending extra gas for approvals).

_allowedOperators and _blockedOperators exist locally. Each creator can decide which operators to work with that can be set at the smart contract level. _operatorRegistry is also an optional field. Even if it’s not set, it will not trigger any errors. Creators should be able to decide whether to have a registry or potentially leverage an existing one.

Registries could produce inaccurate or insufficient data, but we believe there will be eventual consistency and hope to be correct most of the time. The registry will be corrected frequently, and updates will be made “over the air” for existing NFT Smart Contracts deployed with the registry.

The following modifier can be used to revert when called by the blocked operator:

modifier preventBlockedOperator(address operator) { if (_operatorRegistry != address(0)) { bytes32 identifier = IOperatorRegistry(_operatorRegistry) .getIdentifier(operator); require( !_blockedOperators[identifier], "Operator has been blocked by the contract owner." ); } _; }

Operators will try to seek approval using these 2 functions, which should leverage the modifier:

function approve(address to, uint256 tokenId) public virtual override(ERC721AUpgradeable, IERC721AUpgradeable) preventBlockedOperator(to) { ERC721AUpgradeable.approve(to, tokenId); } function setApprovalForAll(address operator, bool approved) public virtual override(ERC721AUpgradeable, IERC721AUpgradeable) preventBlockedOperator(operator) { ERC721AUpgradeable.setApprovalForAll(operator, approved); }

The block can also retroactively block sales if the Operator Registry becomes outdated. It will prevent all future sales once the Operator Registry successfully identifies the operator.

How to Contribute to the Operator Registry

The Marketplace Sales Control feature we released last week is currently live with NiftyKit’s Operator Registry, deployed here:

Our goal is to maintain NiftyKit’s Operator Registry to the best of our abilities for the future; we’ve partnered with Revoke.Cash, who has already acquired many Operator Addresses, which can be found here:

We believe that the On-Chain Operator Registry will come in handy for anyone. We hope there will be multiple Operator Registries from which the creators can choose, potentially paying a small fee for higher-quality ones or ones with breakthrough chain crawling technologies. It would be great if it could identify fraudulent smart contracts as well.

We’re looking for additional contributors and experts in this area who can help.

Coming Soon: DIY Marketplace

At NiftyKit, we believe creators should have full control over their digital assets in the form of NFTs. We believe in a decentralized future where creators can deploy their own secondary marketplace for their projects.

This feature will be built for creators of all experience to be able to launch their own marketplace through a simple, user-friendly interface. This will allow creators to set their own parameters to have full control over their user experience. Creators should be able to easily build custom-tailored experiences for their collectors, on both primary and secondary sales, similar to CryptoPunks by Larvalabs.

About NiftyKit

NiftyKit was founded in late 2020, at the height of the pandemic. We were determined to create a tool that allowed creators to reach their highest potential and to have people understand and fully embrace the growing decentralized world around us. NiftyKit empowers creators to create their first NFT Smart Contracts and helps them more easily transition to web3.

We are incredibly proud that NiftyKit has raised $0 in venture funding. We've been graciously funded and continue to run directly through the support from our community of creators. NiftyKit will always strive to be the best platform for creators that it can be, and we treasure our community's continued support.

NiftyKit: Our Stance On Creator Royalties

NiftyKit

Nov 9, 2022

NiftyKit

Nov 9, 2022

NiftyKit

Nov 9, 2022

Creator Royalties

With the recent controversy surrounding royalties, there’s been an increasing need for self-custody in NFTs to uphold the promises a smart contract has to offer.

Currently, marketplaces have grown too big and have too much leverage over creators. Most creators don’t have a say in where their NFTs are sold and cannot do anything if and when a marketplace adjusts their royalty agreements.

This space attracted so many creators because it re-imagined and developed a space where the transactions become on-chain with revenue in perpetuity. This is especially true for creators wanting permanent financial recognition and a promise of a new economic structure for their work. When royalties get tampered with or eliminated, so does the appeal for creators – especially those from industries that have established this behavior before.

Our Stance

At NiftyKit, we aim to provide features for creators to manage their smart contracts. We want to give the creators the power to choose which operators can interact with their NFTs. We want to incentivize creators to continue to deliver value and prevent certain operators from taking advantage of their work.

We want creators to thrive in both the short term AND the long term.

Now Live: Operator Registry

How The Operator Registry Works

Operator Registry is an optional extension that allows NFT Smart Contracts to identify Marketplace Operators (Proxy Smart Contracts that execute the trade) using bytes32 identifiers, which can be used to gate smart contract operations (i.e., marketplace sales) by their classification.

The following override can be set for any standard ERC-721 under isAllowedForAll, to prevent allowing all authorizations:

if (_operatorRegistry != address(0)) { bytes32 identifier = IOperatorRegistry(_operatorRegistry) .getIdentifier(operator); if (_allowedOperators[identifier]) return true; if (_blockedOperators[identifier]) return false; }

Note: _allowedOperators is called before _blockedOperators; in case we want to block all operators and have an allow list of operators, we can set a default value for getIdentifier, which can be classified as “ALL,” set to block all operators. By setting _allowedOperators first, we can have a private marketplace environment where only the allowed operators can be called (without spending extra gas for approvals).

_allowedOperators and _blockedOperators exist locally. Each creator can decide which operators to work with that can be set at the smart contract level. _operatorRegistry is also an optional field. Even if it’s not set, it will not trigger any errors. Creators should be able to decide whether to have a registry or potentially leverage an existing one.

Registries could produce inaccurate or insufficient data, but we believe there will be eventual consistency and hope to be correct most of the time. The registry will be corrected frequently, and updates will be made “over the air” for existing NFT Smart Contracts deployed with the registry.

The following modifier can be used to revert when called by the blocked operator:

modifier preventBlockedOperator(address operator) { if (_operatorRegistry != address(0)) { bytes32 identifier = IOperatorRegistry(_operatorRegistry) .getIdentifier(operator); require( !_blockedOperators[identifier], "Operator has been blocked by the contract owner." ); } _; }

Operators will try to seek approval using these 2 functions, which should leverage the modifier:

function approve(address to, uint256 tokenId) public virtual override(ERC721AUpgradeable, IERC721AUpgradeable) preventBlockedOperator(to) { ERC721AUpgradeable.approve(to, tokenId); } function setApprovalForAll(address operator, bool approved) public virtual override(ERC721AUpgradeable, IERC721AUpgradeable) preventBlockedOperator(operator) { ERC721AUpgradeable.setApprovalForAll(operator, approved); }

The block can also retroactively block sales if the Operator Registry becomes outdated. It will prevent all future sales once the Operator Registry successfully identifies the operator.

How to Contribute to the Operator Registry

The Marketplace Sales Control feature we released last week is currently live with NiftyKit’s Operator Registry, deployed here:

Our goal is to maintain NiftyKit’s Operator Registry to the best of our abilities for the future; we’ve partnered with Revoke.Cash, who has already acquired many Operator Addresses, which can be found here:

We believe that the On-Chain Operator Registry will come in handy for anyone. We hope there will be multiple Operator Registries from which the creators can choose, potentially paying a small fee for higher-quality ones or ones with breakthrough chain crawling technologies. It would be great if it could identify fraudulent smart contracts as well.

We’re looking for additional contributors and experts in this area who can help.

Coming Soon: DIY Marketplace

At NiftyKit, we believe creators should have full control over their digital assets in the form of NFTs. We believe in a decentralized future where creators can deploy their own secondary marketplace for their projects.

This feature will be built for creators of all experience to be able to launch their own marketplace through a simple, user-friendly interface. This will allow creators to set their own parameters to have full control over their user experience. Creators should be able to easily build custom-tailored experiences for their collectors, on both primary and secondary sales, similar to CryptoPunks by Larvalabs.

About NiftyKit

NiftyKit was founded in late 2020, at the height of the pandemic. We were determined to create a tool that allowed creators to reach their highest potential and to have people understand and fully embrace the growing decentralized world around us. NiftyKit empowers creators to create their first NFT Smart Contracts and helps them more easily transition to web3.

We are incredibly proud that NiftyKit has raised $0 in venture funding. We've been graciously funded and continue to run directly through the support from our community of creators. NiftyKit will always strive to be the best platform for creators that it can be, and we treasure our community's continued support.

NiftyKit: Our Stance On Creator Royalties

NiftyKit

Nov 9, 2022

NiftyKit

Nov 9, 2022

NiftyKit

Nov 9, 2022

Creator Royalties

With the recent controversy surrounding royalties, there’s been an increasing need for self-custody in NFTs to uphold the promises a smart contract has to offer.

Currently, marketplaces have grown too big and have too much leverage over creators. Most creators don’t have a say in where their NFTs are sold and cannot do anything if and when a marketplace adjusts their royalty agreements.

This space attracted so many creators because it re-imagined and developed a space where the transactions become on-chain with revenue in perpetuity. This is especially true for creators wanting permanent financial recognition and a promise of a new economic structure for their work. When royalties get tampered with or eliminated, so does the appeal for creators – especially those from industries that have established this behavior before.

Our Stance

At NiftyKit, we aim to provide features for creators to manage their smart contracts. We want to give the creators the power to choose which operators can interact with their NFTs. We want to incentivize creators to continue to deliver value and prevent certain operators from taking advantage of their work.

We want creators to thrive in both the short term AND the long term.

Now Live: Operator Registry

How The Operator Registry Works

Operator Registry is an optional extension that allows NFT Smart Contracts to identify Marketplace Operators (Proxy Smart Contracts that execute the trade) using bytes32 identifiers, which can be used to gate smart contract operations (i.e., marketplace sales) by their classification.

The following override can be set for any standard ERC-721 under isAllowedForAll, to prevent allowing all authorizations:

if (_operatorRegistry != address(0)) { bytes32 identifier = IOperatorRegistry(_operatorRegistry) .getIdentifier(operator); if (_allowedOperators[identifier]) return true; if (_blockedOperators[identifier]) return false; }

Note: _allowedOperators is called before _blockedOperators; in case we want to block all operators and have an allow list of operators, we can set a default value for getIdentifier, which can be classified as “ALL,” set to block all operators. By setting _allowedOperators first, we can have a private marketplace environment where only the allowed operators can be called (without spending extra gas for approvals).

_allowedOperators and _blockedOperators exist locally. Each creator can decide which operators to work with that can be set at the smart contract level. _operatorRegistry is also an optional field. Even if it’s not set, it will not trigger any errors. Creators should be able to decide whether to have a registry or potentially leverage an existing one.

Registries could produce inaccurate or insufficient data, but we believe there will be eventual consistency and hope to be correct most of the time. The registry will be corrected frequently, and updates will be made “over the air” for existing NFT Smart Contracts deployed with the registry.

The following modifier can be used to revert when called by the blocked operator:

modifier preventBlockedOperator(address operator) { if (_operatorRegistry != address(0)) { bytes32 identifier = IOperatorRegistry(_operatorRegistry) .getIdentifier(operator); require( !_blockedOperators[identifier], "Operator has been blocked by the contract owner." ); } _; }

Operators will try to seek approval using these 2 functions, which should leverage the modifier:

function approve(address to, uint256 tokenId) public virtual override(ERC721AUpgradeable, IERC721AUpgradeable) preventBlockedOperator(to) { ERC721AUpgradeable.approve(to, tokenId); } function setApprovalForAll(address operator, bool approved) public virtual override(ERC721AUpgradeable, IERC721AUpgradeable) preventBlockedOperator(operator) { ERC721AUpgradeable.setApprovalForAll(operator, approved); }

The block can also retroactively block sales if the Operator Registry becomes outdated. It will prevent all future sales once the Operator Registry successfully identifies the operator.

How to Contribute to the Operator Registry

The Marketplace Sales Control feature we released last week is currently live with NiftyKit’s Operator Registry, deployed here:

Our goal is to maintain NiftyKit’s Operator Registry to the best of our abilities for the future; we’ve partnered with Revoke.Cash, who has already acquired many Operator Addresses, which can be found here:

We believe that the On-Chain Operator Registry will come in handy for anyone. We hope there will be multiple Operator Registries from which the creators can choose, potentially paying a small fee for higher-quality ones or ones with breakthrough chain crawling technologies. It would be great if it could identify fraudulent smart contracts as well.

We’re looking for additional contributors and experts in this area who can help.

Coming Soon: DIY Marketplace

At NiftyKit, we believe creators should have full control over their digital assets in the form of NFTs. We believe in a decentralized future where creators can deploy their own secondary marketplace for their projects.

This feature will be built for creators of all experience to be able to launch their own marketplace through a simple, user-friendly interface. This will allow creators to set their own parameters to have full control over their user experience. Creators should be able to easily build custom-tailored experiences for their collectors, on both primary and secondary sales, similar to CryptoPunks by Larvalabs.

About NiftyKit

NiftyKit was founded in late 2020, at the height of the pandemic. We were determined to create a tool that allowed creators to reach their highest potential and to have people understand and fully embrace the growing decentralized world around us. NiftyKit empowers creators to create their first NFT Smart Contracts and helps them more easily transition to web3.

We are incredibly proud that NiftyKit has raised $0 in venture funding. We've been graciously funded and continue to run directly through the support from our community of creators. NiftyKit will always strive to be the best platform for creators that it can be, and we treasure our community's continued support.