@ercref/contracts

0.1.0 • Public • Published

ERCRef Contracts

Discord

A repository for Ethereum builders to build ERC reference implementations.

Getting Started

Here is how you can start using this repo.

Use npm package

npm i -D @ercref/contracts

Useful Templates

Import dependencies

Import the contracts like you would from OpenZeppelin's contract. e.g.

import "@ercref/contracts/drafts/IERC5732.sol";
import "@ercref/contracts/drafts/BlocknumGapCommit.sol";

Here is a full example:

pragma solidity ^0.8.17;

import "@ercref/contracts/drafts/IERC5732.sol";
import "@ercref/contracts/drafts/BlocknumGapCommit.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract CommitableERC721 is ERC721, BlocknumGapCommit {
    constructor(uint256 _version) ERC721("CommitToMintImpl", "CTMI") {
    }

    function safeMint(
        address _to,
        uint256 _tokenId,
        bytes calldata _extraData
    )   onlyCommited(
            abi.encodePacked(_to, _tokenId),
            bytes32(_extraData[0:32]),
            6 // number of blocks required to reveal
        )
        external {
        _safeMint(_to, _tokenId); // ignoring _extraData in this simple reference implementation.
    }

    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC721, BlocknumGapCommit)
        returns (bool)
    {
        return super.supportsInterface(interfaceId);
    }
}

Contributors of ERCRef

Publish npm

yarn publish --access public

Disclaimer and Warnings

WARNING: This repository is meant to be cutting (bleeding) edge and pioneer. Please make sure to conduct security audit before using in production.

Package Sidebar

Install

npm i @ercref/contracts

Weekly Downloads

17

Version

0.1.0

License

Apache-2.0

Unpacked Size

146 kB

Total Files

91

Last publish

Collaborators

  • mattstam
  • xinbenlv