erc721psi
v0.7.0
Published
[](https://github.com/estarriolvetch/ERC721Psi/actions/workflows/node.js.yml) [
ERC721Psi ("Adventurer", "ADVENTURER"){
}
function mint(uint256 quantity) external payable {
// _safeMint's second argument now takes in a quantity, not a tokenId. (same as ERC721A)
_safeMint(msg.sender, quantity);
}
}Random Seed Extension
The random seed extensions provide an easy way for NFT projects to create on-chain randomized metata at the individual token level. The random seed extensions uses Chainlink's VRF V2 as its source of randomness. Each token comes with its own unique seed that can be used to derived its attributes.
interface IERC721RandomSeed {
function seed(uint256 tokenId) external view returns (uint256);
}There are two types of random seed extensions with different schemes of requesting randomness.
ERC721PsiRandomSeed: The randomness is requested during minting. There is no extra actions required for the project owner to reveal the token. The random seeds of the tokens will be revealed when the randomness request is fulfilled by the Chainlink nodes.ERC721PsiRandomSeedReveal: The randomness is requested when the_reveal()function is called. This function is usually called by the project owner to reveal the tokens. Everytime_reveal()is called, it will reveal the random seeds of all the tokens minted since the last reveal.
Considerations
It is important to realize that balanceOf, totalSupply, tokenByIndex, and tokenOfOwnerByIndex in ERC721Psi are not designed to be gas efficient since they are mostly used by front end only. By doing so, we are able to reduce the storage usage and thus minimize the gas consumption for the rest of the functions.
If tracking balanceOf on-chain is important for your application, please use the ERC721PsiAddressData extension.
Road Map
- Implement more extensions.
- Add more test cases.
- Build an contract wizard (like this) for generating the contract skelton.
Contributors
PRs on documentations, test cases, and any contract improvemetns are welcomed!!
Projects using ERC721Psi
If your projects use ERC721Psi, we'd like know more about it! Feel free to DM 0xEstarriol to share your project.
