Skip to content

Commit b62fa49

Browse files
authored
Merge pull request #57 from CMTA/dev
Update CHANGELOG
2 parents db3be81 + c04c7cb commit b62fa49

1 file changed

Lines changed: 83 additions & 14 deletions

File tree

CHANGELOG.md

Lines changed: 83 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
11
# CHANGELOG
22

3-
Please follow [https://changelog.md/](https://changelog.md/) conventions.
3+
Please follow [https://changelog.md](https://changelog.md) conventions and the other conventions below
4+
5+
## Semantic Version 2.0.0
6+
7+
Given a version number MAJOR.MINOR.PATCH, increment the:
8+
9+
1. MAJOR version when the new version makes:
10+
- Incompatible proxy **storage** change internally or through the upgrade of an external library (OpenZeppelin)
11+
- A significant change in external APIs (public/external functions) or in the internal architecture
12+
2. MINOR version when the new version adds functionality in a backward compatible manner
13+
3. PATCH version when the new version makes backward compatible bug fixes
14+
15+
See [https://semver.org](https://semver.org)
16+
17+
## Type of changes
18+
19+
- `Added` for new features.
20+
- `Changed` for changes in existing functionality.
21+
- `Deprecated` for soon-to-be removed features.
22+
- `Removed` for now removed features.
23+
- `Fixed` for any bug fixes.
24+
- `Security` in case of vulnerabilities.
25+
26+
Reference: [keepachangelog.com/en/1.1.0/](https://keepachangelog.com/en/1.1.0/)
27+
28+
Custom changelog tag: `Dependencies`, `Documentation`, `Testing`
429

530
## Checklist
631

@@ -20,7 +45,51 @@ forge lint
2045
- Update surya doc by running the 3 scripts in [./doc/script](./doc/script)
2146
- Update changelog
2247

23-
## v3.0.0-rc0
48+
## v3.0.0-rc1 - 2026-02-16
49+
50+
### Added
51+
52+
- Add `RuleEngineOwnable` contract variant using ERC-173 ownership (`Ownable`) as an alternative to the RBAC-based `RuleEngine`. ERC-3643 compliance specification recommends ERC-173 for ownership.
53+
- Add ERC-165 `supportsInterface` check when adding rules via `addRule` / `setRules`, ensuring that only valid rule contracts (implementing `IRule`) can be registered.
54+
- Use CMTAT library for ERC-165 interface ID constants (`RuleEngineInterfaceId`, `ERC1404ExtendInterfaceId`).
55+
- Add compatibility with CMTAT v3.0.0 and v3.2.0-rc0 (dual-version test support via `CMTATDeploymentV3`).
56+
57+
### Fixed
58+
59+
- Fix deployment script `CMTATWithRuleEngineScript`: deploy CMTAT with the deployer as admin instead of a hardcoded address, which caused `setRuleEngine` to revert with `AccessControlUnauthorizedAccount`.
60+
- Remove dead code in `RuleEngineOwnable` constructor: the custom zero-address owner check was unreachable because `Ownable(owner_)` already reverts with `OwnableInvalidOwner(address(0))`.
61+
- Remove duplicate code across rule contracts.
62+
63+
### Dependencies
64+
65+
- Update CMTAT library to [v3.2.0-rc0](https://github.com/CMTA/CMTAT)
66+
- Update OpenZeppelin Contracts to [v5.4.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.4.0)
67+
- Update Foundry (forge-std) to [v1.10.0](https://github.com/foundry-rs/forge-std/releases/tag/v1.10.0)
68+
- Set Solidity version to [0.8.33](https://docs.soliditylang.org/en/v0.8.33/) and EVM version to Prague (Pectra upgrade)
69+
70+
### Code quality
71+
72+
- Resolve all `forge lint` warnings: convert plain imports to named imports, remove unused imports, rename variables/functions to mixedCase, refactor modifier logic, and add targeted lint suppressions where appropriate.
73+
- Replace Prettier and Ethlint/Solium with Foundry-native `forge fmt` and `forge lint` for formatting and linting.
74+
- Run `forge fmt` on the entire codebase.
75+
76+
### Testing
77+
78+
- Add deployment script tests (`test/script/`) for `CMTATWithRuleEngineScript` and `RuleEngineScript`.
79+
- Add `RuleEngineOwnable` test suite: deployment, access control, ERC-3643 compliance, rules management, and coverage tests.
80+
- Add `IRuleInterfaceId` test for ERC-165 interface ID computation.
81+
- Add integration tests with CMTAT v3.0.0 and v3.2.0-rc0.
82+
- Improve code coverage with additional edge-case tests.
83+
84+
### Documentation
85+
86+
- Expand README with contract variants comparison, constructor API, access control details, and ERC-173 ownership documentation.
87+
- Add formatting & linting section to README and TOOLCHAIN documentation.
88+
- Update surya diagrams, coverage reports, and specification documents.
89+
90+
## v3.0.0-rc0 - 2025-08-15
91+
92+
Commit: f3283c3b8a99089c3c6f674150831003a6bd2927
2493

2594
- Rule contracts, requires to perform compliance check, have now their own dedicated [GitHub repository](https://github.com/CMTA/Rules). It means that these contract will be developed and audited separately from the `RuleEngine`. This provides more flexibility and makes it easier to manage audits.
2695
- There is now only one type of rule (read-write rules). Before that:
@@ -33,7 +102,7 @@ forge lint
33102
- `RuleEngineOperation`-> `RulesManagementModule`
34103
- `MetaTxModuleStandalone` -> `ERC2771ModuleStandalone`
35104

36-
## v2.1.0
105+
## v2.1.0 - 2025-07-04
37106

38107
- Update RuleEngine to CMTAT v3.0.0-rc5
39108

@@ -44,11 +113,11 @@ forge lint
44113

45114
- Add functions `detectTransferRestrictionFrom` and `canTransferFrom`
46115

47-
## v2.0.5
116+
## v2.0.5 - 2024-12-21
48117

49118
- Fix a bug present in the Conditional Transfer rule and improve the corresponding tests.
50119

51-
## v2.0.4
120+
## v2.0.4 - 2024-12-16
52121

53122
- Fix a bug present in the Conditional Transfer rule and the corresponding test.
54123
- Config file:
@@ -59,23 +128,23 @@ forge lint
59128
- Integration test with CMTAT: set the CMTAT version to [v2.5.1](https://github.com/CMTA/CMTAT/releases/tag/v2.5.1)
60129
- Access control: The default admin has by default all the roles for the RuleEngine and the different rules
61130

62-
## v2.0.3 - 20240910
131+
## v2.0.3 - 2024-09-10
63132

64133
- Small optimization in WhitelistWrapper; add a break in a loop
65134
- Set Solidity version to 0.8.26 in config file
66135

67-
## v2.0.2 - 20240617
136+
## v2.0.2 - 2024-06-17
68137

69138
- Create abstract contract ruleWhitelistCommon to contain code shared between ruleWhitelist & ruleWhitelistWrapper
70139
- Split ADDRESS_LIST_ROLE in two distinct roles : ADDRESS_LIST_ADD_ROLE && ADDRESS_LIST_REMOVE_ROLE
71140

72-
## v2.0.1 - 20240611
141+
## v2.0.1 - 2024-06-11
73142

74143
- Add a new rule WhitelistWrapper
75144

76145
This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators.
77146

78-
## v2.0.0 - 20240515
147+
## v2.0.0 - 2024-05-15
79148

80149
- Implement the new architecture for the RuleEngine, with ValidationRule and OperationRule
81150
- Add the rule ConditionalTransfer as an Operation rule
@@ -84,19 +153,19 @@ This rule can be used to restrict transfers from/to only addresses inside a grou
84153
- Upgrade the library CMTAT to the version [v2.4.0](https://github.com/CMTA/CMTAT/releases/tag/v2.4.0)
85154
- Fix a minor bug when rules are deleted with clearRules
86155

87-
## v1.0.3 - 20231122
156+
## v1.0.3 - 2023-11-22
88157

89158
- Upgrade the library CMTAT to the version [v2.3.1](https://github.com/CMTA/CMTAT/releases/tag/v2.3.1)
90159
- Use custom errors instead of revert message (gas optimization)
91160
- Add the rule `SanctionList`
92161
- Upgrade OpenZeppelin to the version [v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0)
93162

94-
## v1.0.2 - 20230609
163+
## v1.0.2 - 2023-06-09
95164

96165
- Upgrade the library CMTAT to the vesion [v2.3.0](https://github.com/CMTA/CMTAT/releases/tag/v2.3.0)
97166
- 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](https://docs.soliditylang.org/en/v0.8.17/using-the-compiler.html#optimizer-options)
98167

99-
## 1.0.2-rc.0 - 20230523
168+
## 1.0.2-rc.0 - 2023-05-23
100169

101170
The release 1.0.2 contains mainly the different fixes and improvements related to the audit performed on the version 1.0.1.
102171

@@ -133,11 +202,11 @@ Whitelist
133202
- CVF-4, CVF-5: remove useless conditional statement ([pull/19/](https://github.com/CMTA/RuleEngine/pull/19/))
134203
- CVF-15, CVF-16, CVF-17: improve readibility ([pull/24](https://github.com/CMTA/RuleEngine/pull/24))
135204

136-
## 1.0.1 - 20230122
205+
## 1.0.1 - 2023-01-22
137206

138207
- Update the library CMTAT to the version [2.2](https://github.com/CMTA/CMTAT/releases/tag/2.2)
139208
- Update the library OpenZeppelin to the version [4.8.1](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v4.8.1)
140209
- Improve integration test with CMTAT
141210

142-
## 1.0.0 - 20221114
211+
## 1.0.0 - 2022-11-14
143212
- 🎉 first release!<

0 commit comments

Comments
 (0)