Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
85 changes: 71 additions & 14 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,83 @@
# CHANGELOG

Please follow <https://changelog.md/> conventions.
Please follow [https://changelog.md conventions and the other conventions below

## Semantic Version 2.0.0

Given a version number MAJOR.MINOR.PATCH, increment the:

1. MAJOR version when the new version makes:
- Incompatible proxy **storage** change internally or through the upgrade of an external library (OpenZeppelin)
- A significant change in external APIs (public/external functions) or in the internal architecture
2. MINOR version when the new version adds functionality in a backward compatible manner
3. PATCH version when the new version makes backward compatible bug fixes

See [https://semver.org](https://semver.org)

## Type of changes

- `Added` for new features.
- `Changed` for changes in existing functionality.
- `Deprecated` for soon-to-be removed features.
- `Removed` for now removed features.
- `Fixed` for any bug fixes.
- `Security` in case of vulnerabilities.

Reference: [keepachangelog.com/en/1.1.0/](https://keepachangelog.com/en/1.1.0/)

## Checklist

> Before a new release, perform the following tasks

- Code: Update the version name in the base core module, variable VERSION
- Code: Update the version name in the `Version` core module, variable VERSION
- Run linter

> npm run-script lint:all:prettier

- Documentation
- Perform a code coverage and update the files in the corresponding directory [./doc/general/test/coverage](./doc/general/test/coverage)
- Perform an audit with several audit tools (Mythril and Slither), update the report in the corresponding directory [./doc/audits/tools](./doc/audits/tools)
- Perform an audit with several audit tools (Aderyn and Slither), update the report in the corresponding directory [./doc/audits/tools](./doc/audits/tools)
- Update surya doc by running the 3 scripts in [./doc/script](./doc/script)

- Update changelog

## 3.0.0
## 3.1.0

This version is not audited

**Added**

- New module `CCIPModule` with two functions `getCCIPAdmin` and `setCCIPAdmin`
- Reason: it allows the CCIP admin to enable the CMTAT token in Chainlink CCIP, without the need of requesting assistance to [Chainlink](https://chain.link).
- Add explicit support of [ERC-5679](https://eips.ethereum.org/EIPS/eip-5679) for minting and burning
- Reason: this ERC was already supported in v3.0.0 but not through a dedicated interface and ERC-165 identifier.
- Details: `IERC7551Burn` and `IERC7551Mint` will inherits from respectively the burn and mint part of ERC-5679.
- In `ERC7551Module`, the function `setTerms` emits the `Terms` event
- Reason: meet the specification of the draft ERC [ERC-7551](https://ethereum-magicians.org/t/erc-7551-crypto-security-token-smart-contract-interface-ewpg-reworked/25477).
- Create specific module `ERC20CrossChain` for cross-chain transfers (ERC-7802 and other burn/mint related function), code previously put in `CMTATBaseCrossChain`.


**Changed**

- Rename `BaseModule` into `VersionModule`

- Reason: This module contains only the CMTAT version. This avoid also the confusion with CMTAT Base modules.

- Access control: in wrapper modules, all access control is made through internal functions. These functions must be now implemented in CMTAT base module

- Reason: this allows to use a different access control (e.g. [ownership](https://docs.openzeppelin.com/contracts/5.x/) or [Access Manager](https://docs.openzeppelin.com/contracts/5.x/api/access#AccessManager)) by implementing a new CMTAT Base module without the need of modifying wrapper modules.
- Move cross-chain functionalities (ERC-7802) from `CMTATBaseCrossChain` to a new module `ERC20CrossChain`.

**Documentation** (README)

- Reference the new draft version of [ERC-7551](https://ethereum-magicians.org/t/erc-7551-crypto-security-token-smart-contract-interface-ewpg-reworked/25477)
- Reference [ERC-5679](https://eips.ethereum.org/EIPS/eip-5679) as supported ERC by CMTAT
- Add section to explain cross-chain bridge support ([Chainlink CCIP](https://docs.chain.link/ccip/concepts/cross-chain-token/evm) and [ERC-7802](https://eips.ethereum.org/EIPS/eip-7802) mainly)


## 3.0.0 - 2025-08-28

- Major release
- Major release audited by [Halborn](https://www.halborn.com)
- Improved comments and documentation

See changelogs of the rc versions for details.
Expand All @@ -43,38 +100,38 @@ Main changes with the last audited release (v2.3.0):
- CMTAT for deployment with UUPS proxy
- CMTAT ERC-7551 for better compatibility with [ERC-7551](https://ethereum-magicians.org/t/erc-7551-crypto-security-token-smart-contract-interface-ewpg/16416)

**Updated**
**Changed**

- Update Solidity (0.8.30) & OpenZeppelin version (v.5.4.0)
- Update several function names to be compatible with [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643)

## 3.0.0-rc.7
## 3.0.0-rc.7 - 2025-08-04

- Add missing compliance check (pause, address freeze and RuleEngine) for `batchTransfer`
- Create a virtual function `_minterTransferOverride` in ERC20MintModule.
- This function is then overridden in `CMTATBaseCommon` to perform the required check
- Add the same check for `batchMint/batchBurn`for CMTAT core (light) version
- Add several tests to check these modification

## 3.0.0-rc.6
## 3.0.0-rc.6 - 2025-07-31

- Perform recommendations from the audit report (Halborn)
- Main change: add a new ERC-1404 code if the contract is deactivated

## 3.0.0-rc.5
## 3.0.0-rc.5 - 2025-06-27

- Add & improve Solidity Natspec comment
- Few improvement as a result (e.g rename return variables)
- Improve & update documentation

## 3.0.0-rc.4
## 3.0.0-rc.4 - 2025-06-24

- Fix typo for IERC3643IComplianceContract
-- IERC3743IComplianceContract -> IERC3643IComplianceContract
- CMTATBaseERC20CrossChain:
Put events before internal functions calls `mintOverride`and `burnOverride`(avoid reentrancy-event)

## 3.0.0-rc.3
## 3.0.0-rc.3 - 2025-06-24

- ERC-7551
- Create specific option module ERC-7551
Expand All @@ -92,7 +149,7 @@ Main changes with the last audited release (v2.3.0):
- Implement function `detectTransferRestrictionFrom`in ValidationModuleERC1404
- Upgrade solidity version in Hardhat config file from 0.8.28 to 0.8.30

## 3.0.0-rc.2
## 3.0.0-rc.2 - 2025-06-04

- Deployment version
- Add CMTAT Allowlist (Whitelist) version
Expand All @@ -104,12 +161,12 @@ Main changes with the last audited release (v2.3.0):
- Add a parameter `burner`and `minter`in the events Mint & Burn (ERC20MintModule / ERC20BurnModule)
- Improve documentation & tests

## 3.0.0-rc.1
## 3.0.0-rc.1 - 2025-05-15

- Move `MetaTx` module to the option folder
- Improve documentation

## 3.0.0-rc.0
## 3.0.0-rc.0 - 2025-05-13

The main goal of this version since the last version 2.3.0 is:

Expand Down
Loading