NFT Royalties Setup Guide: EIP-2981 and 0xSplits Integration
NFT royalties are no longer guaranteed after Blur's aggressive policy offering zero fees for traders. OpenSea responded by making creator royalties optional at the platform level. Result: most secondary sales occur without deductions if the collection does not use on-chain enforcement mechanisms. As blockchain engineers with 5+ years of Web3 experience and 50+ NFT collections launched, we help configure royalties so they actually work.
Two Approaches to Royalties and Their Reality
Off-chain Royalties (Marketplace Standard)
EIP-2981 is the on-chain standard for declaring royalties. The contract implements royaltyInfo(tokenId, salePrice), returning (receiver, royaltyAmount). OpenSea, Blur, and Rarible read this information and display it in the UI. But execution is at the marketplace's discretion. Technically, any trading smart contract can ignore EIP-2981 and not pay royalties, which most aggregators do.
On-chain Enforcement via Transfer Restrictions
The only way to guarantee royalties is to restrict token transfers: allow them only through whitelisted contracts (marketplaces) that pay royalties. This is the Operator Filter Registry, which Yuga Labs introduced for BAYC. Problem: transfer restrictions conflict with the ERC-721 standard. Aggregators not on the whitelist cannot trade the tokens. Some users perceive this as a restriction on their own asset rights. Consequently, Yuga Labs and OpenSea abandoned Operator Filter as a mechanism. In practice, most new collections implement EIP-2981 for correct display on marketplaces but do not restrict transfers. Royalties become a gentleman's agreement with the marketplace.
How We Configure Royalties: A Step-by-Step Process
- Analyze the existing contract: check for EIP-2981 support, Solidity version, and used libraries.
- Add EIP-2981: if the standard is missing, integrate OpenZeppelin ERC2981 or implement manually. If the contract is not upgradeable, deploy a new one with metadata migration.
- Configure royalties in the contract: set a base percentage (usually 500 bps = 5%) via
_setDefaultRoyaltyor_setTokenRoyaltyfor specific tokens. - Split among participants: if royalties need to be divided, deploy a split contract via 0xSplits and set it as the receiver.
- Verify on OpenSea: sign a transaction confirming contract ownership, configure Collection Settings.
- Test: purchase a test token on the secondary market and verify royalty receipt.
Why EIP-2981 Is Not Enough
Marketplaces can ignore on-chain data. OpenSea still respects EIP-2981, but Blur and aggregators often set zero royalties. Alternatives include using operator filters or ecosystem solutions like the Royalty Registry. However, these are trade-offs: every additional restriction reduces liquidity. In one of our projects, a collection using Operator Filter saw a 40% drop in trading volume due to exclusion of popular aggregators. Using 0xSplits instead of a custom split contract is 3x more gas-efficient for each royalty payout. Gas savings reach 40%, which at an average gas price of 30 gwei saves approximately $5 per 1000 transactions (based on ETH at $2000). Deploying a split contract costs around $20 in gas, and each distribution call costs $2.
How to Split Royalties Among Participants
If royalties need to be distributed among the team, do not write the split logic into the NFT contract. Use 0xSplits or Splits Protocol: deploy a split contract with shares, set its address as the receiver in EIP-2981. When ETH arrives at the split address, anyone can call distribute() — funds are automatically split according to the configured shares. Writing a custom split in the contract increases gas by 30–50% on each sale, whereas 0xSplits requires only one external transaction for distribution. Comparison: 0xSplits is 3x more gas-efficient than a custom split contract, reducing costs by 40%.
EIP-2981 combined with 0xSplits allows flexible royalty management without complicating the main contract.
Scope of Work
- Audit of the existing contract for EIP-2981 compatibility.
- Deployment or upgrade of the contract with royalty support (if necessary).
- Configuration of splits through proven protocols.
- Verification on OpenSea and test sales.
- Documentation on contract interaction.
- Support for one month after deployment.
We offer a turnkey solution: audit, deployment, and verification in 2 hours. Includes everything: smart contract modifications, split configuration, and one month support. Contact us for a free estimate — we will evaluate your project and provide a fixed price. Our team has 5+ years of Web3 experience, 50+ NFT projects launched, and verified over 100 collections on OpenSea. Get a consultation with an engineer to discuss details.
Comparison of Royalty Approaches
| Approach | Guarantee of Payment | Liquidity | Implementation Complexity | Extra Gas per Transfer |
|---|---|---|---|---|
| Off-chain (EIP-2981) | No | High | Low | ~5000 gas (read) |
| Operator Filter Registry | High | Low | Medium | ~20000 gas (check) |
| Ecosystem solutions | Medium | Medium | High | ~10000 gas (callback) |
Estimated Timeline
| Step | Time |
|---|---|
| Audit and planning | 1–2 hours |
| Deployment/upgrade | 2–4 hours |
| Split configuration | 1 hour |
| Verification and tests | 2–3 hours |
Contact us — we will discuss your project and choose the optimal solution. Write to us for a free estimate.







