# Makerspace2 Audit Notes **Auditor:** Jake Bunce **Client:** Makerspace https://makersplace.com/ https://github.com/yashh/collection **Commit:** `22adc58e89e79a294c061e0d1ca54ffeebd9b0c6` # Files in Scope `contracts/CollectionCore.sol` ## Whitepaper & specification about the project Whitepaper: None ## Review of the protocol/implementation **[1] Total supply can be higher than tokens minted** **Files Affected:** `contracts/CollectionCore.sol` **Severity: Low** There is a [check](https://github.com/yashh/collection/blob/master/contracts/CollectionCore.sol#L50) for the `_totalSupply` to be greater than 0, however the deployer could pass a non-zero value here which would not represent the true number of tokens minted. **Recommendations:** As zero tokens will have been minted at deploy time, this check can be `require(_totalSupply = 0, "supply != 0");` **[2] Royalty fees cannot be changed** **Files Affected:** `contracts/CollectionCore.sol` **Severity: Low** The variable `royaltyPercentage` is set at deploy time but can subsequently never be changed. **Recommendations:** Either allow the modification of this parameter or make it clear in user documentation that the royalty fee is fixed and cannot be changed. **[3] No event emitted on deployment** **Files Affected:** `contracts/CollectionCore.sol` **Severity: Low** The constructor does not emit an event when it has been called. This is useful for monitoring post-deployment which arguments were passed and validation of correct parameters. **Recommendations:** Emit an event with the constructor arguments at deploy time. **[4] Implementation of OBO Operator List** **Files Affected:** `contracts/CollectionCore.sol` **Severity: Medium** [`isApprovedForAll`](https://github.com/yashh/collection/blob/master/contracts/CollectionCore.sol#L130) is a check for an oboApproval list for the event of an OBO operator being compromised. A better implementation of this is to use a multisig account where there are defined patterns for user management for this specific event. **Recommendations:** Use a multisig wallet where users can be added and removed and avoid defining this yourselves.