Please follow https://changelog.md/ conventions.
Before a new release, perform the following tasks
- Code: Update the version name, variable VERSION
- Run linter
npm run-script lint:all:prettier
- Documentation
- Perform a code coverage and update the files in the corresponding directory ./doc/coverage
- Perform an audit with several audit tools (Mythril and Slither), update the report in the corresponding directory ./doc/security/audits/tools
- Update surya doc by running the 3 scripts in ./doc/script
- Update changelog
- Fix a bug present in the Conditional Transfer rule and the corresponding test.
- Config file:
- Set Solidity version to 0.8.27 in config file
- Set EVM version to
Cancun
- Add events for the following rules : whitelist/blacklist and sanctionList rules
- Some improvements in testing
- Integration test with CMTAT: set the CMTAT version to v2.5.1
- Access control: The default admin has by default all the roles for the RuleEngine and the different rules
- Small optimization in WhitelistWrapper; add a break in a loop
- Set Solidity version to 0.8.26 in config file
- Create abstract contract ruleWhitelistCommon to contain code shared between ruleWhitelist & ruleWhitelistWrapper
- Split ADDRESS_LIST_ROLE in two distinct roles : ADDRESS_LIST_ADD_ROLE && ADDRESS_LIST_REMOVE_ROLE
- Add a new rule WhitelistWrapper
This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators.
- Implement the new architecture for the RuleEngine, with ValidationRule and OperationRule
- Add the rule ConditionalTransfer as an Operation rule
- Add the rule Blacklist as a Validation rule
- Whitelist and blacklist rules share a part of their code.
- Upgrade the library CMTAT to the version v2.4.0
- Fix a minor bug when rules are deleted with clearRules
- Upgrade the library CMTAT to the version v2.3.1
- Use custom errors instead of revert message (gas optimization)
- Add the rule
SanctionList
- Upgrade OpenZeppelin to the version v5.0.0
- Upgrade the library CMTAT to the vesion v2.3.0
- Set the number of runs for the optimizer to 200 for Hardhat and Foundry, see https://docs.soliditylang.org/en/v0.8.17/using-the-compiler.html#optimizer-options
The release 1.0.2 contains mainly the different fixes and improvements related to the audit performed on the version 1.0.1.
Documentation
- Update the documentation for the release
- Add slither report
- Install hardhat in order to generic docgen documentation
General modifications
- Upgrade the library CMTAT to the latest version 2.3.0-rc.0 (pull/28)
- In RuleEngine,
ruleLength
is changed torulesCount()
- In RuleEngine,
- Add the gasless suport / MetaTx module (pull/27)
- RuleWhitelist: update RuleWhitelist to use code from IEIP1404Wrapper (pull/29)
Audit report
This version also includes improvements suggested by the audit report, addressing the following findings:
General
- CVF-10: use a floating pragma for the version (pull/25)
- CVF2, CVF-6: remove the function kill for the contracts RuleEngine and Whitelist (pull/17)
RuleEngine
- CVF-1 / removeRule: add an additional argument with the rule index hint (pull/23)
- CVF-7, CVF-8, CVF-9: check for duplicate rule (pull/20)
Whitelist
- CVF-3: use a local variable for iterate inside a loop (pull/18/)
- CVF-4, CVF-5: remove useless conditional statement (pull/19/)
- CVF-15, CVF-16, CVF-17: improve readibility (pull/24)
- Update the library CMTAT to the version 2.2
- Update the library OpenZeppelin to the version 4.8.1
- Improve integration test with CMTAT
- 🎉 first release!