I don’t know if there is already a similar work in progress, if so please let me know.
The current erc721 is static. I think erc721 can be dynamic. This can be done by supporting script.
- the creator writes the script, so the creator can control how NFT behaves.
- once the NFT is minted, the script can’t be modified.
- some parameters in the script can be modified by the NFT owner.
- multiple script type support, such as p5js, raphael, etc.
Below is an example of how to extend the ERC721:
interface ERC721Scriptable {
event ParamsUpdated(uint256 indexed tokenId, string oldParamsURI, string newParamsURI);
function scriptType() external view returns (string);
function scriptURI(uint256 tokenId) external view returns (string);
// hash result of params, protect params from being modified
function paramsHash(uint256 tokenId) external view returns (bytes32);
function paramsURI(uint256 tokenId) external view returns (string);
function updateParamsURI(uint256 tokenId, string paramsURI) external;
}
A p5js script example
function setup() {
createCanvas(400, 400);
background(200/*{bgcolor}*/);
ellipse(200, 200, 80/*{ellipse1}*/, 80/*{ellipse2}*/);
text('world'/*{title}*/, 10, 30);
}
The params example of the above script
{
"bgcolor": 100,
"ellipse1": 60,
"ellipse2": 60,
"title": "hello world"
}