Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@ercref/contracts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
ERCRef Contracts
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
- @fulldecent's https://github.com/fulldecent/solidity-template
- @mattstam's https://github.com/mattstam/solidity-template
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.