You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Update surya doc by running the 3 scripts in [./doc/script](./doc/script)
21
46
- Update changelog
22
47
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
24
93
25
94
- 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.
26
95
- There is now only one type of rule (read-write rules). Before that:
- Add functions `detectTransferRestrictionFrom` and `canTransferFrom`
46
115
47
-
## v2.0.5
116
+
## v2.0.5 - 2024-12-21
48
117
49
118
- Fix a bug present in the Conditional Transfer rule and improve the corresponding tests.
50
119
51
-
## v2.0.4
120
+
## v2.0.4 - 2024-12-16
52
121
53
122
- Fix a bug present in the Conditional Transfer rule and the corresponding test.
54
123
- Config file:
@@ -59,23 +128,23 @@ forge lint
59
128
- Integration test with CMTAT: set the CMTAT version to [v2.5.1](https://github.com/CMTA/CMTAT/releases/tag/v2.5.1)
60
129
- Access control: The default admin has by default all the roles for the RuleEngine and the different rules
61
130
62
-
## v2.0.3 - 20240910
131
+
## v2.0.3 - 2024-09-10
63
132
64
133
- Small optimization in WhitelistWrapper; add a break in a loop
65
134
- Set Solidity version to 0.8.26 in config file
66
135
67
-
## v2.0.2 - 20240617
136
+
## v2.0.2 - 2024-06-17
68
137
69
138
- Create abstract contract ruleWhitelistCommon to contain code shared between ruleWhitelist & ruleWhitelistWrapper
70
139
- Split ADDRESS_LIST_ROLE in two distinct roles : ADDRESS_LIST_ADD_ROLE && ADDRESS_LIST_REMOVE_ROLE
71
140
72
-
## v2.0.1 - 20240611
141
+
## v2.0.1 - 2024-06-11
73
142
74
143
- Add a new rule WhitelistWrapper
75
144
76
145
This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators.
77
146
78
-
## v2.0.0 - 20240515
147
+
## v2.0.0 - 2024-05-15
79
148
80
149
- Implement the new architecture for the RuleEngine, with ValidationRule and OperationRule
81
150
- 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
84
153
- Upgrade the library CMTAT to the version [v2.4.0](https://github.com/CMTA/CMTAT/releases/tag/v2.4.0)
85
154
- Fix a minor bug when rules are deleted with clearRules
86
155
87
-
## v1.0.3 - 20231122
156
+
## v1.0.3 - 2023-11-22
88
157
89
158
- Upgrade the library CMTAT to the version [v2.3.1](https://github.com/CMTA/CMTAT/releases/tag/v2.3.1)
90
159
- Use custom errors instead of revert message (gas optimization)
91
160
- Add the rule `SanctionList`
92
161
- Upgrade OpenZeppelin to the version [v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0)
93
162
94
-
## v1.0.2 - 20230609
163
+
## v1.0.2 - 2023-06-09
95
164
96
165
- Upgrade the library CMTAT to the vesion [v2.3.0](https://github.com/CMTA/CMTAT/releases/tag/v2.3.0)
97
166
- 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)
98
167
99
-
## 1.0.2-rc.0 - 20230523
168
+
## 1.0.2-rc.0 - 2023-05-23
100
169
101
170
The release 1.0.2 contains mainly the different fixes and improvements related to the audit performed on the version 1.0.1.
0 commit comments