BRC-721: NFTs

The BRC-721 token standard on Bitcoin is similar to ERC-721 on Ethereum. It can represent virtually anything in Bitcoin:

  • collectible items

  • memberships

  • lottery tickets

  • in-game items

  • and more

Write a BRC-721 smart contract

Extending the OpenZeppelin ERC-721 contract, we can create a hypothetical PFP NFT collection (CryptoWizards) on Bitcoin.

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

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

contract CryptoWizards is ERC721URIStorage {
 
    constructor() ERC721("CryptoWizards", "WIZ") {}

    function safeMint(address to, uint256 tokenId, string memory uri) public {
        _safeMint(to, tokenId);
        _setTokenURI(tokenId, uri);
    }
}

Compile the contracts

To compile your contracts, use the built-in hardhat compile task.

Deploy the contracts

Review config file hardhat.config.ts. The network configs should look like this.

Run the deploy scripts using hardhat-deploy.

Interact with the contracts

Once the contracts are deployed, you can interact with them. We've prepared a few hardhat tasks to make it easy for you to interact with the contracts.

Last updated