Conversation
…ERC2771Snapshot variants, doc updates
…ive and ERC7943CannotTransact with directional errors
…rn behavior documentation
…t tests, remove stale snapshot hooks from non-snapshot deployments (ERC7551/ERC1363/debt), and fix snapshot npm script paths.
… and remove invalid snapshot coverage from UUPS tests
…yment imports/docs accordingly
… update ERC1363 imports/docs accordingly
… update ERC7551 deployment imports/docs accordingly
…ng tests and documentation updates
…eployment variant, harden zero-address freeze paths, and align docs/changelog/review notes for v3.3.0
…, expand edge-case tests
…nBurn, add cross-chain compliance regression tests, and align technical docs
…n coverage (including exact-balance batch burn edge case) and document it in v3.3.0
…eview/report references, and align changelog + feedback report summaries/statuses.
… zero-address mint safety, post-mint recovery) and add burnFrom RuleEngine authorized-spender regression.
…aded burn call, explicit role grants, active-balance typing) and align zero-address frozen-token mint expectation to ERC7943 revert behavior.
…e, align ERC-1643 bytes32 API, and update docs/tests/spec refs
…ndexed event, ERC-165 id) and document post-deactivation privileged operations
…semantics, add regression tests, sync ERC docs/changelog, and exclude mocks from strict size gate
…ed CMTAT document-engine mock/tests, and clarify docs that no deployment variant currently includes DocumentEngineModule
…h updated snapshot/document engine initializer behavior and level/surya references
…dundant level-5 overrides and renaming sender-aware helper to _burnFromOperator
…abilize ERC1363 meta-tx msgData deployment path
…n guides and align README cross-references
…d document Slither dead-code false positive
…underflow and add regression tests for frozenTokens>=balance
…rarchy docs, and harden ERC1404 frozen-balance restriction handling with regression tests
…/crosschain interfaces, mocks, tests
…C-3643/ERC-7551 directional freeze events
…idating trusted-forwarder calldata path without oversized standalone deployment
…e and refactor meta-tx msgData mocks/tests to avoid oversized deployment failures
… modules (zero-engine and re-initialization revert paths)
…tialization and double-initialize revert
…ight/core, standard, permit, ERC1363, snapshot, document, and ERC721 generic paths)
…llowlist canSend/canReceive matrix including zero-value transfers
refactor(rc1): renumber base-module hierarchy, introduce document bas…
…o DOCUMENT_ENGINE_ROLE
Update doc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CMTAT v3.3.0 — Release Summary
What Changed and Why
v3.3.0 delivers two focused batches of work across two release candidates.
Implement
#375, #376, #372
rc0 — New Deployment Variants, ERC-7943 Alignment, Operator Propagation
Permit and Multicall support
A new base contract
CMTATBaseERC2612combines ERC-2612 Permit (gasless approvals via signature) with ERC-6357 Multicall (batched calls in one transaction). Two new deployment variants are introduced:CMTATStandalonePermitandCMTATUpgradeablePermit.Permit is gated by CMTAT's existing pause and freeze checks through a new
ValidationModuleAllowancecontract, so compliance rules continue to apply to allowances set via signature.Snapshot deployment variants
A new
CMTATBaseSnapshotmixin and two deployment variants —CMTATStandaloneSnapshotandCMTATUpgradeableSnapshot— provide historical balance queries via an external SnapshotEngine. This is now a distinct deployment variant rather than being including in the Standard deployment.ERC-7551 enforcement split
ERC-7551 specific enforcement functions (
forcedTransfer,freezePartialTokens,unfreezePartialTokenswithbytes data) andgetActiveBalanceOfhave been moved fromERC20EnforcementModuleinto a newERC20EnforcementERC7551Module. This keeps the base enforcement module lean (IERC3643ERC20Enforcementonly) while allowing ERC-7551 deployments to opt into the extended interface.Standard, Allowlist, ERC-7551, and ERC-1363 deployment variants all expose these functions through a new
CMTATBaseERC7551Enforcementmixin.ERC-7943 breaking changes:
canSend/canReceiveThe
canTransact(address)function has been removed. It is replaced by two directional checks:canSend(address)— blocks senders, spenders, and burn sources.canReceive(address)— blocks recipients and mint targets.The corresponding error
ERC7943CannotTransactis replaced byERC7943CannotSendandERC7943CannotReceive. The ERC-165 interface ID for ERC-7943 changes from0x29388973to0x3edbb4c4. Internal helpers (_canTransact,_canMintBurnByModuleAndRevert) are split accordingly.RuleEngine operator propagation
burn,burnFrom, andcrosschainBurnnow propagate_msgSender()through the transfer-compliance hook so that spender-aware RuleEngine checks apply to operator-initiated and allowance-based burn flows.mintandcrosschainMintfollow the same model.Zero-address hardening
_addAddressToTheList(enforcement freeze list) and the partial-freeze paths (_freezePartialTokens,_unfreezePartialTokens) now rejectaddress(0)with dedicated custom errors.OpenZeppelin upgraded to v5.6.1
rc1 — Base Hierarchy Refactor, Document Module Isolation, ERC-1643 API Change
New
CMTATBaseDocumentcontractDocument-management authorization has been extracted from
CMTATBaseAccessControlinto a dedicatedCMTATBaseDocumentcontract at level 1 in the inheritance hierarchy. This cleanly separates document role checks (_authorizeDocumentManagement,DOCUMENT_ROLE) from access-control logic.ERC-1643 document identifiers changed to
bytes32— Breaking changeDocument names throughout the ERC-1643 interface now use
bytes32instead ofstring:getDocumentgetDocument(string)getDocument(bytes32)getAllDocumentsreturns (string[])returns (bytes32[])setDocumentsetDocument(string,string,bytes32)setDocument(bytes32,string,bytes32)removeDocumentremoveDocument(string)removeDocument(bytes32)CMTAT tokenization terms are not affected.
IERC1643CMTAT.DocumentInfostill usesstring namefor thesetTermspath.Base module numbering aligned to strict dependency order
All base contracts are now numbered to reflect their level in the inheritance graph:
CMTATBaseCore,CMTATBaseSnapshot,CMTATBaseGenericCMTATBaseDocumentCMTATBaseAccessControlCMTATBaseAllowlist,CMTATBaseRuleEngineCMTATBaseDebt,CMTATBaseERC1404CMTATBaseERC20CrossChainCMTATBaseERC2612,CMTATBaseERC2771,CMTATBaseDebtEngineCMTATBaseERC2771Snapshot,CMTATBaseERC7551EnforcementCMTATBaseERC1363,CMTATBaseERC7551ERC-20 CrossChain burn-path cleanup
The redundant
crosschainBurnoverride inCMTATBaseERC20CrossChainhas been removed; level-5 now delegates directly toERC20CrossChainModule. The internal helper_burnWithSenderis renamed_burnFromOperatorfor clarity. No external API change.Test Count