Skip to main content

ERC-721 Base Contract

The ERC721Base smart contract implements the ERC721 NFT standard, along with the ERC721A optimization to the standard.

The ERC721Base smart contract is usable as it is. It is sufficient for the use case of minting NFTs for yourself (or to someone else) and selling those NFTs on a marketplace.

Import

import "@thirdweb-dev/contracts/base/ERC721Base.sol";

Available Functionality

FunctionalityDescription
ERC721AGas-optimized NFT Collection Base Contract.
MintableMint functionality (only callable by the owner, by default) with gas-optimized batch minting enabled by ERC721A functionality.
MulticallCapability for better developer experience for your contract; the ability to batch together multiple contract calls in a single call.
OwnableOwnership of the contract for the contract deployer, and (1) the ability to transfer this ownership, and (2) restrict functions to be callable only by the owner of the contract.
BurnableAbility for the owner of a token to transfer their NFT to a null address (cannot be recovered).
RoyaltyFull royalty support on marketplaces like OpenSea, and EIP 2981 NFT Royalty Standard compliance.
ContractMetadataSet a metadata URI on the contract, to give your collection a name, image, description and symbol.

Implementing the Contract Extension

Import the contract extension and make your contract inherit it.

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

import "@thirdweb-dev/contracts/base/ERC721Base.sol";

contract MyNFT is ERC721Base {

constructor(
string memory _name,
string memory _symbol,
address _royaltyRecipient,
uint128 _royaltyBps
)
ERC721Base(
_name,
_symbol,
_royaltyRecipient,
_royaltyBps
)
{}

}

Unlocked Features

Once deployed, you'll be able to access the following contract extensions' features on the SDK and dashboard: