Skip to content
 
 

Latest commit

 

History

187 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Private CMTAT security token

A private version of the CMTAT security token, written in Noir / Aztec.nr for the Aztec privacy Layer 2 on Ethereum.

Balances and transfers are private: a holder's balance is a set of encrypted notes in their own client, and a transfer publishes neither the parties nor the amount. Compliance state stays public: total supply, the pause and deactivation flags, the role table, the freeze flags and the transfer-restriction lists. The issuer receives a copy of every note and a constrained Transfer event, so it can reconstruct every balance and audit activity without any user's cooperation.

Repository. Since v0.3.0 the project is maintained and released by the Capital Market and Technology Association at github.com/CMTA/private-CMTAT-aztec. Releases 0.1.0 to 0.2.0 were published by Taurus SA at github.com/taurushq-io/private-CMTAT-aztec, whose history this repository carries.

Disclaimer. This is a prototype. It has not been audited, it is not upgradeable, it has no gasless-transaction support, and it may not be fully compliant with Swiss law. Aztec itself is under heavy development; expect breaking changes between toolchain versions.

Table of contents

Deployment variants

Noir has no inheritance and allows one contract per package, so the variants are separate contract packages composing modules from one shared library (lib/), built together as a Nargo workspace.

Variant Contents
CMTATAztecLight Private token, pause, deactivation, freeze, access control, terms, version — no transfer-restriction lists
CMTATAztec The above plus the validation module (blacklist / whitelist)
CMTATAztecDebt The above plus credit events and debt, for bond-like instruments

Features

  • Private mint, transfer and burn, in single and batched form, with authwits in place of ERC-20 allowances.
  • Public pause (immediate) and permanent deactivation, following the CMTAT Solidity semantics: a pause stops transfers only; deactivation stops everything, forever.
  • Freeze of individual accounts and transfer restriction by blacklist or whitelist, screening both parties of a transfer, the recipient of a mint and the account of a burn.
  • Issuer auditability: an audit copy of every note and a constrained, unforgeable Transfer event to the issuer; the issuer address can be rotated with set_issuer.
  • Role-based access control with the CMTAT role set, plus CMTAT terms / token ID, and, on the debt variant, credit events and the ICMTATDebt record.
  • Events for every state change, public where the state is public and private (encrypted to the parties) for transfers.

Not supported, unlike Solidity CMTAT: upgradeability, gasless transactions, and forced transfer (the issuer cannot move a holder's notes; the compliance lever is freezing the account).

Quick start

Install the Aztec toolchain at the version pinned in Nargo.toml and package.json:

bash -i <(curl -s https://install.aztec.network)
aztec-up install 5.2.0

Start a sandbox in one terminal, then build and run every test in another:

aztec start --sandbox
yarn install
yarn compile      # aztec compile --workspace: all three variants
yarn codegen      # TypeScript artifacts for the e2e suite and the scripts
yarn test         # Noir suite (aztec test --workspace) then the Jest e2e suite

yarn test:nr runs the Noir suite alone and needs no sandbox. For the testnet scripts (yarn deploy, yarn interaction, …) copy .env.example to .env first; see Deployment in the technical documentation.

Repository layout

lib/                 cmtat_aztec_lib — every CMTAT module (access control, pause, enforcement,
                     validation, extra information, credit events, debt)
test-helpers/        cmtat_aztec_test_helpers — test scaffolding shared by the Noir suites
contracts/
  cmtat-aztec/       CMTATAztec, with the full Noir test suite
  cmtat-aztec-debt/  CMTATAztecDebt
  cmtat-aztec-light/ CMTATAztecLight
src/                 TypeScript: generated artifacts, e2e tests, PXE / account helpers
scripts/             Testnet scripts (deploy, interact, fees, profiling)
doc/                 Technical documentation, diagrams, standards analyses, assessment, audits

Documentation

Intellectual property

The code is copyright (c) Capital Market and Technology Association, 2026, and is released under the Mozilla Public License 2.0 and the MIT license. You may choose either license.

The history up to and including commit 61f4220d5565840fd4fcdd2b723c9f55eb824c60 (the 0.2.0 release, and so the 0.1.0, 0.1.1 and 0.2.0 releases) is copyright (c) 2025 Taurus SA, under the same two licenses. Later commits are copyright CMTA.

We are not aware of any patent or patent application covering the techniques implemented.

Security policy

Please see SECURITY.md.

About

Private version of CMTAT security token in Noir (Aztec network DSL)

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages