Skip to main content

ERC721Revealable

Encrypt the metadata of your NFTs until you reveal them by implementing ERC721A, LazyMint, and DelayedReveal.

Base Contracts Implementing This Feature

Unlocked Features

By implementing ERC721Claimable, you unlock the following features in the SDK and dashboard:

SDK UsageDescription
Delayed RevealsPass in an array of NFT metadata to encrypt it and reveal it at a later time.

Implementing It Yourself

This section is meant for advanced users who want to write the functionality from scratch.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@thirdweb-dev/contracts/eip/ERC721A.sol";
import "@thirdweb-dev/contracts/extension/LazyMint.sol";
import "@thirdweb-dev/contracts/extension/DelayedReveal.sol";

contract Contract is ERC721A, LazyMint, DelayedReveal {
constructor(
string memory _name,
string memory _symbol
)
ERC721A(
_name,
_symbol
)
{}

function _canLazyMint() internal view override returns (bool) {
// Your custom implementation here
}

function mintDelayedRevealNFT(
address to,
string memory beforeRevealURI,
bytes memory encryptedPostRevealURI
) public {
// Your custom implementation here
}

function reveal(uint256 tokenId, bytes calldata key)
external
override
returns (string memory revealedURI)
{
// Your custom implementation here
}

function tokenURI(uint256 tokenId)
public
view
virtual
override
returns (string memory)
{
// Your custom implementation here
}
}