Skip to content

Commit 1481646

Browse files
committed
Update schema
1 parent 0c209cf commit 1481646

24 files changed

Lines changed: 75 additions & 1703 deletions

README.md

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ The RuleEngine is an external contract used to apply transfer restrictions to an
88

99
[TOC]
1010

11-
12-
1311
## Contract Variants
1412

1513
Three deployable contracts are available:
@@ -324,6 +322,8 @@ Here is the UML of the main contracts:
324322

325323
#### RuleEngineOwnable
326324

325+
![RuleEngineOwnableUML](./doc/schema/vscode-uml/RuleEngineOwnableUML.png)
326+
327327
`RuleEngineOwnable` shares the same base functionality as `RuleEngine` but uses ERC-173 ownership instead of RBAC.
328328

329329
```
@@ -343,6 +343,30 @@ RuleEngineOwnable
343343
- Supports `transferOwnership()` and `renounceOwnership()`
344344
- Implements ERC-173 interface (`supportsInterface(0x7f5828d0)` returns `true`)
345345

346+
#### RuleEngineOwnable2Step
347+
348+
![RuleEngineOwnable2StepUML](./doc/schema/vscode-uml/RuleEngineOwnable2StepUML.png)
349+
350+
`RuleEngineOwnable2Step` shares the same base functionality as `RuleEngineOwnable` but uses OpenZeppelin's `Ownable2Step` for safer ownership handover.
351+
352+
```
353+
RuleEngineOwnable2Step
354+
├── ERC2771ModuleStandalone (gasless support)
355+
├── RuleEngineOwnableShared (shared ownable deployment logic)
356+
│ └── RuleEngineBase
357+
│ ├── VersionModule
358+
│ ├── RulesManagementModule
359+
│ ├── ERC3643ComplianceModule
360+
│ └── IRuleEngineERC1404
361+
└── Ownable2Step (ERC-173 access control with pending owner)
362+
```
363+
364+
**Key differences from RuleEngineOwnable:**
365+
- Uses a two-step ownership transfer flow: `transferOwnership()` then `acceptOwnership()`
366+
- The current owner retains privileges until the pending owner accepts ownership
367+
- Reuses `RuleEngineOwnableShared` for constructor, ERC-165, and ERC-2771 behavior
368+
- Implements ERC-173 interface (`supportsInterface(0x7f5828d0)` returns `true`)
369+
346370

347371

348372

@@ -405,7 +429,7 @@ Here is a summary tab of available rules, see [github.com/CMTA/Rules](https://gi
405429

406430
### Gasless support (ERC-2771)
407431

408-
![ERC2771ModuleUML](./doc/schema/vscode-uml/ERC2771ModuleUML.png)
432+
![surya_inheritance_ERC2771ModuleStandalone.sol](./doc/schema/surya/surya_inheritance/surya_inheritance_ERC2771ModuleStandalone.sol.png)
409433

410434
The RuleEngine supports client-side gasless transactions using the standard [ERC-2771](https://eips.ethereum.org/EIPS/eip-2771).
411435

@@ -1255,12 +1279,12 @@ Checks whether a specific rule is currently configured.
12551279

12561280
Please see [SECURITY.md](https://github.com/CMTA/CMTAT/blob/master/SECURITY.md) (CMTAT main repository).
12571281

1258-
The contracts have been audited by [ABDKConsulting](https://www.abdk.consulting/), a globally recognized firm specialized in smart contracts' security.
1259-
12601282
### Audit
12611283

12621284
#### First Audit - March 2022
12631285

1286+
> The contracts (v.1.0.2) have been audited by [ABDK Consulting](https://www.abdk.consulting/), a globally recognized firm specialized in smart contracts' security.
1287+
12641288
Fixed version : [v1.0.2](https://github.com/CMTA/RuleEngine/releases/tag/v1.0.2)
12651289

12661290
The first audit was performed by ABDK on the version [1.0.1](https://github.com/CMTA/RuleEngine/releases/tag/1.0.1).

0 commit comments

Comments
 (0)