The current set of contract has been developed and itterated upon rapidly. We now have a contract set of Minter, Metadata and SVGGenerator that are compliant with ERC3525 and ERC721 tokens and are handled by platforms like OpenSea.
Improvements can be made to reduce technical debt, contract deployment cost and tx gas cost. Also, there are some open ends.
Technical debt
Cleanup method and variables, optimising inheritance and local variable usage, among others.
[ ] Remove unused version variables and methods
[ ] Get name, symbol, valueDecimals via underlying ERC3525 contract and init upon Minter deployment
[ ] Only get first impactScope string since the full array is no longer needed for the SVG
[ ] Remove getHash function and migrate parsing to the _parseData method in Minter
[ ] Create and expose basic URI methods (contract, token, slot) in ERC2525 as external and remove from ERC3525SlotEnumerable
[ ] 'isIntrinsic' fiels in metadata is no longer needed because we count to get the ID instead of hashing
Contract deployment cost & tx gas cost
Deployment and gas cost are inversely correlated, but impact can be insignificant when doing small tweaks. See comments below.
Gas cost can be reduced by running more optimisation rounds, which increases the contract deployment size and vice versa. We're close to the 24KiB limit so reducing contract size should have a higher priority than reducing gas cost.
[ ] Reduce contract size by removing redundant function (see technical debt)
[ ] Reduce function sizes by reducing variables (e.g. read instead of cache)
[ ] Reduce function sizes by not returning when not needed
Open ends
For instance not finalized, in designs or further discussed:
[ ] Donation flow, really talk it through including state changes and impacts
[ ] Roles/right adding background & colours. Who has rights? Or anyone? Also impacts SVG generation
The current set of contract has been developed and itterated upon rapidly. We now have a contract set of Minter, Metadata and SVGGenerator that are compliant with ERC3525 and ERC721 tokens and are handled by platforms like OpenSea.
Improvements can be made to reduce technical debt, contract deployment cost and tx gas cost. Also, there are some open ends.
Technical debt
Cleanup method and variables, optimising inheritance and local variable usage, among others.
Contract deployment cost & tx gas cost
Deployment and gas cost are inversely correlated, but impact can be insignificant when doing small tweaks. See comments below.
Gas cost can be reduced by running more optimisation rounds, which increases the contract deployment size and vice versa. We're close to the 24KiB limit so reducing contract size should have a higher priority than reducing gas cost.
Open ends
For instance not finalized, in designs or further discussed: