Building a New Contract

If you are starting a new project, ACE provides audited reference implementations that come pre-integrated with PolicyProtected. You do not need to implement the ACE integration yourself — these contracts are ready to deploy and protect with policies.

If you already have a deployed contract, see Upgrading Existing Contracts instead.

Reference implementations

ACE offers two token implementations, each designed for different regulatory contexts:

  • ComplianceTokenERC20 — A policy-protected ERC-20 token with advanced frozen token handling, force transfers, and mint/burn controls.
  • ComplianceTokenERC3643 — A compliant implementation of the ERC-3643 (T-REX) standard, using ACE Cross-Chain Identity instead of ONCHAINID and ACE Policy Management instead of T-REX ModularCompliance.

Both implementations inherit from PolicyProtectedUpgradeable and must be deployed behind a proxy. During ACE Beta, deployment is managed through the ACE Platform.

Choosing between ERC-20 and ERC-3643

The right choice depends on your regulatory requirements, the asset type you are tokenizing, and how you need frozen tokens to behave.

AspectERC-20 Compliance TokenERC-3643 Compliance Token
StandardERC-20ERC-3643 (T-REX)
Regulatory contextBroad — suitable for any token that needs policy-based complianceSecurities — designed for regulated securities and financial instruments
Identity systemACE Cross-Chain IdentityACE Cross-Chain Identity (replaces ONCHAINID)
Compliance systemACE Policy ManagementACE Policy Management (replaces T-REX ModularCompliance)
Frozen token behaviorStrict preservation — frozen tokens remain frozen during burns and force transfersOperational flexibility — burns and force transfers can automatically unfreeze tokens when needed
Pause supportNo built-in pause (use a PausePolicy instead)Built-in pause/unpause with whenNotPaused modifier
Batch operationsNoYes — batch transfer, mint, burn, freeze/unfreeze
CCIP admingetCCIPAdmin() returns the contract ownerNot included

Frozen token behavior explained

The most significant difference between the two implementations is how frozen tokens are handled during administrative operations:

ERC-20 approach (strict preservation): When an admin performs a burn or force transfer on an account with frozen tokens, the frozen balance is preserved. The operation only succeeds if the account has sufficient unfrozen balance. This means an admin must explicitly unfreeze tokens before they can be burned or force-transferred.

ERC-3643 approach (automatic unfreezing): When an admin performs a burn or force transfer, the contract automatically unfreezes tokens if the unfrozen balance is insufficient. This follows the T-REX philosophy that administrative actions should not be blocked by frozen status — the admin has already decided the operation is necessary.

When to choose each

Choose ERC-20 when:

  • You need a general-purpose compliant token without a specific regulatory framework requirement.
  • You want strict control over frozen tokens — every unfreeze must be an explicit administrative action.
  • You plan to integrate with CCIP for cross-chain transfers.

Choose ERC-3643 when:

  • You are tokenizing regulated securities and need compliance with the ERC-3643 standard.
  • Your regulatory framework requires or benefits from the T-REX interface (existing tooling, auditor familiarity).
  • You need batch operations for managing large numbers of holders efficiently.
  • You prefer operational flexibility for administrative actions on frozen tokens.

Next steps

Get the latest Chainlink content straight to your inbox.