# SMART Protocol integration

Source: https://docs.settlemint.com/docs/architects/components/asset-contracts/smart-protocol-integration
How DALP uses SMART Protocol (ERC-3643) for identity-aware asset tokens, per-asset compliance checks, and regulated transfer enforcement.



SMART Protocol is the regulated token layer underneath DALP asset contracts. Each asset uses an ERC-3643 transfer model. The identity registry checks the recipient wallet. The compliance engine evaluates configured modules. Feature hooks run when attached. The token updates state only after all those checks pass.

The [ERC-3643 compliance standard](/docs/architects/components/asset-contracts/erc-3643-compliance-standard) page maps each protocol concept to its DALP equivalent. Identity, claim topics, and trusted issuers are defined in the [claims and identity model](/docs/architecture/concepts/claims-and-identity).

## What is SMART protocol? [#what-is-smart-protocol]

**SMART** (SettleMint Adaptable Regulated Token) Protocol implements ERC-3643, which DALP uses as its on-chain compliance layer. ERC-3643 specifies security tokens where transfers are permitted only when a compliance engine, consisting of one or more modular rules, approves them. SMART provides three layers that DALP builds on. Each layer is extended with access control, proxy architecture, infrastructure integration, runtime token features, and system-seeded compliance templates when you deploy an asset.

| Layer      | What it provides                                                                 |
| ---------- | -------------------------------------------------------------------------------- |
| Token      | ERC-20 compatible contracts with compliance hooks and modular extensions         |
| Compliance | Orchestration engine that evaluates configurable rule sets before each transfer  |
| Identity   | On-chain identity management via OnchainID (ERC-734/735), storing KYC/AML claims |

***

## Enforcement context [#enforcement-context]

The diagram below shows how the asset token connects to each enforcement layer. Each arrow represents a call the token makes during a transfer or mint.

<Mermaid
  chart="`flowchart LR
  HOLDER[&#x22;Holder or operator&#x22;] --> TOKEN[&#x22;DALP asset token&#x22;]
  TOKEN --> IDENTITY[&#x22;Identity registry and OnchainID&#x22;]
  IDENTITY --> CLAIMS[&#x22;Claim topics and trusted issuers&#x22;]
  TOKEN --> COMPLIANCE[&#x22;Compliance engine&#x22;]
  COMPLIANCE --> MODULES[&#x22;Configured compliance modules&#x22;]
  TOKEN --> FEATURES[&#x22;Runtime token features&#x22;]
  FEATURES --> HOOKS[&#x22;Lifecycle hooks&#x22;]
  TOKEN --> STATE[&#x22;Balances and token state&#x22;]

  MODULES --> TOKEN
  HOOKS --> TOKEN
  CLAIMS --> IDENTITY

  style HOLDER fill:#5fc9bf,stroke:#3a9d96,stroke-width:2px,color:#fff
  style TOKEN fill:#6bd48a,stroke:#4aa866,stroke-width:2px,color:#fff
  style IDENTITY fill:#6ba4d4,stroke:#4a7ba8,stroke-width:2px,color:#fff
  style CLAIMS fill:#d4a84f,stroke:#a87d2f,stroke-width:2px,color:#fff
  style COMPLIANCE fill:#8571d9,stroke:#654bad,stroke-width:2px,color:#fff
  style MODULES fill:#d4a84f,stroke:#a87d2f,stroke-width:2px,color:#fff
  style FEATURES fill:#d47f6b,stroke:#a85d4a,stroke-width:2px,color:#fff
  style HOOKS fill:#d47f6b,stroke:#a85d4a,stroke-width:2px,color:#fff
  style STATE fill:#6bd48a,stroke:#4aa866,stroke-width:2px,color:#fff`"
/>

The asset token is the enforcement point. For each supported lifecycle operation, the token resolves identity context, calls the compliance engine, runs configured feature hooks, and then updates token state. Any gate in that chain can revert before token state changes.

***

## DALP implementation model [#dalp-implementation-model]

DALP uses ERC-3643 as the enforcement model for regulated asset movement. The token contract owns balances and executes transfers. The identity registry, compliance engine, and token-feature hooks all decide whether standard mints and transfers may proceed before token state changes. Any of those gates can revert with its own error instead of creating a partial lifecycle state.

The model has five parts you work with as an operator:

1. Token contract: one asset contract represents one instrument or asset class, with its own supply, holders, roles, and lifecycle settings.
2. Identity registry: the asset resolves recipient wallet addresses to OnchainID identities before regulated transfer-path operations.
3. Trusted issuers and claim topics: approved claim issuers define which identity attestations count for the asset's compliance policy.
4. Compliance engine: the asset calls the compliance engine during the transfer path, and the engine evaluates the configured rule set.
5. Compliance modules and feature hooks: reusable rule contracts, such as identity, country, supply, investor-count, time-lock, and approval rules, are configured per asset; runtime token features may add their own validation hooks.

Standard transfers and mints follow three gates: recipient-side identity resolution, compliance engine evaluation, and feature `canUpdate` hooks. The identity gate includes an OnchainID lookup for the `to` address.

The default identity check is recipient-side only. Sender-side constraints on the `from` address apply only when you add a compliance module that explicitly enforces them.

Burns and redemptions use lifecycle-specific hooks. Burns destroy token balances and notify the compliance engine after the supply change. Bond redemption checks maturity, amount, and denomination-asset funding before burning the redeemed balance and paying the holder.

Forced transfers are separate custodian operations. The platform executes them as explicit administrative steps, not through the normal investor transfer path.

***

## What DALP adds to SMART protocol [#what-dalp-adds-to-smart-protocol]

| Concern                  | DALP adds                                                  | SMART provides                                             | Where to read next                                                                             |
| ------------------------ | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Token lifecycle          | Factory deployment, proxy upgrades, role assignment        | ERC-20 token logic and compliance hook calls               | [Deployment Architecture](/docs/architects/components/asset-contracts/deployment-architecture) |
| Compliance rules         | System-seeded templates and module configuration per asset | Rule evaluation engine and module interface                | [Compliance Modules](/docs/compliance-security/compliance)                                     |
| Identity verification    | Claim issuance workflow and trusted issuer management      | Identity registry and OnchainID claim storage              | [Identity & Compliance](/docs/compliance-security/security/identity-compliance)                |
| Token features           | Runtime-pluggable features such as fees, yield, governance | Extension hook points through `SMARTConfigurable`          | [Token Features](/docs/architects/components/token-features)                                   |
| Access control           | Asset roles and multi-tenant authority model               | Role-checking hooks                                        | [RBAC](/docs/architects/components/asset-contracts/rbac)                                       |
| Transfer enforcement     | Policy design: which modules run with which parameters     | On-chain enforcement that reverts non-compliant operations | [Compliance Transfer Flow](/docs/architects/flows/compliance-transfer)                         |
| Multi-asset organization | Instrument profiles and shared identity infrastructure     | Separate contract per instrument                           | [Legacy Types](/docs/architects/components/asset-contracts/legacy-types)                       |

***

## Organizing multiple assets [#organizing-multiple-assets]

ERC-3643 uses a separate-contract-per-instrument model. Each financial instrument, such as a bond tranche, equity share class, or fund unit, is deployed as its own token contract with independent compliance settings and lifecycle.

This provides:

* Lifecycle isolation: one bond can mature while related equity continues trading.
* Compliance independence: each instrument has its own module configuration and investor restrictions.
* Upgrade independence: one instrument can be upgraded without changing another.
* Clear accounting: each token has its own `totalSupply`, holder list, and transaction history.

Related assets are linked through on-chain references, when behavior depends on another asset, or through identity claims, when assets share an issuer or program for reporting.

DALP uses ERC-3643 rather than ERC-1400 because ERC-3643 gives each token you deploy a modular compliance engine, built-in OnchainID integration, and a maintained pattern for permissioned asset movement.

***

## DALP's recommended approach [#dalps-recommended-approach]

**DALPAsset** is the recommended contract type for all new deployments. It extends SMART Protocol with `SMARTConfigurable`. When you hold the right asset roles, you can attach supported [token features](/docs/architects/components/token-features) at runtime after deployment.

* [DALPAsset](/docs/architects/components/asset-contracts/dalp-asset): full architecture and configuration model
* [Legacy Types](/docs/architects/components/asset-contracts/legacy-types): compile-time types and when they still apply
* [Legacy-Equivalent Presets](/docs/architects/components/asset-contracts/instrument-profiles): pre-built configurations per instrument type

***

## Where to read next [#where-to-read-next]

* [ERC-3643 compliance standard](/docs/architects/components/asset-contracts/erc-3643-compliance-standard): how ERC-3643 concepts map to DALP
* [Identity & Compliance](/docs/compliance-security/security/identity-compliance): how identity enforcement works
* [Compliance Modules](/docs/compliance-security/compliance): what each compliance rule does
* [Compliance Transfer Flow](/docs/architects/flows/compliance-transfer): transfer enforcement step by step
* [SMART Protocol architecture moved](/docs/architects/overview/smart-protocol): keeps bookmarked overview links connected to this canonical page
