The ERC-3643 token standard is variously known as "permissioned tokens", "real world asset tokens" or "T-REX (Token for Regulated EXchanges)". As the names suggest, ERC-3643 is designed to turn real world assets (RWAs), like company shares, loans, or real estate, into digital tokens that can be traded on the blockchain. Unlike regular tokens, it follow strict rules to make sure they meet legal requirements. With this standard, every token holder’s identity is verified to comply with regulations like Know Your Customer (KYC) and Anti-Money Laundering (AML) laws, making it ideal for assets that need extra security and regulatory approval.
ERC-3643 tokens integrate identity management through ONCHAINID, where verified participant identities are securely stored on-chain. Token transfers follow strict compliance rules, ensuring regulatory requirements are met before execution. While enhancing security and compliance, ERC-3643 remains interoperable with existing ERC-20 platforms, enabling seamless integration into blockchain ecosystems.
{% hint style="info" %}
Note: Hedera’s system contract functions do not natively support ERC-3643
functionalities on HTS tokens. However, standard ERC-3643
functions can still be implemented within a smart contract and deployed on the network, similar to other EVM-compatible chains.
{% endhint %}
setOnchainID
function setOnchainID(address _onchainID) external;
Sets the token's onchain ID. Only the owner of the token contract can call this function.
setIdentityRegistry
function setIdentityRegistry(address _identityRegistry) external;
RWA tokens link to verified identities on-chain managed through a decentralized identity system.
setIdentityRegistry
function setIdentityRegistry(address _identityRegistry) external
setIdentityRegistry
allow contract owners additional administrative functions to manage compliance and identity registry settings.
setComplianceContract
function setComplianceContract(address _compliance) external
setComplianceContract
allow contract owners additional administrative functions to manage compliance and identity registry settings.
forcedTransfer
function forcedTransfer(
address _from,
address _to,
uint256 _amount
) external returns (bool);
Forces a transfer of tokens between two whitelisted addresses. Only an agent of the token can call this function.
To get a deeper understanding of ERC-3643, see the following:
For comprehensive implementations of functions like setIdentityRegistry
and their interactions with compliance modules or identity registries, refer to the Tokens Interface section.
This section provides detailed function definitions and their roles within the ERC-3643 framework.
- Identity Registry:
The Identity Registry Interface section details the contract responsible for managing and verifying investor identities, ensuring compliance with KYC/AML regulations. - Compliance Management:
The Compliance Interface section outlines the contract that enforces compliance rules during token transfers, ensuring adherence to regulatory requirements.
For insights into token operations:
- Refer to the Tokens Interface section for details on the
transfer
function implementation.
This demonstrates how compliance rules are integrated into standard ERC-20-like operations.
For details on the forcedTransfer
function, including permission checks and enforcement of whitelisting, refer to the Tokens Interface section.
Contributor: @sumanair