Changelog
The versions of the two codebases these docs describe, and what each one changed. The full history, entry by entry, is in the CHANGELOG.md of each repository.
Both are licensed under GPL-3.0 and built with Foundry, on Solidity 0.8.30.
T-REX 5.0.0
Version 5 keeps the ERC-3643 interfaces and rebuilds the suite around them. What an existing integration has to check is in Coming from ERC-3643 v4.
Structure
Each suite contract is a standard ERC-3643 base extended by a T-REX contract. State is kept in ERC-7201 namespaces
Registry
One TREXRegistry carries the identity registry, the claim topics and the trusted issuers. Required topics can be set per identity type
Identity
An address resolves through a registration of the asset or through the global link of the IdentityFactory. An ONCHAINID can hold tokens itself, and can move the tokens of its wallets with identityTransfer
Compliance
Modules declare a type, RULE, SPENDER or TRACKER, and receive a TransferContext. The compliance keeps a ledger of positions per identity
Spenders
An asset can restrict who may execute transferFrom, with SPENDER modules
Access control
Roles in a TREXAccessManager, per domain, replace the owner and the list of agents
Deployment
Suites are deployed through CREATE3 at addresses derived from a salt. An isolated suite has its own beacons
Upgrades
Versions are published and the shared beacons move forward to them
Cross-chain
Routes and peers per chain, ERC-7786 messaging, validations issued on the reference chain and settled from satellites, bridged positions in the token's ledger
Tools
UtilityChecker for pre-flight reads. Errors as custom errors in ErrorsLib
Country
The registry stores no country: investorCountry returns 0
ONCHAINID 3.0.0
Version 3 is a new architecture, built with OpenZeppelin. It is a new deployment: it is not compatible with the storage or the interfaces of 2.x.
Account
The identity is an ERC-7579 modular smart account, with ERC-4337 user operations and ERC-7913 signers: externally owned accounts, ERC-1271 contracts, passkeys, RSA keys
Modules
Keys and claims live in the shared ERC734Validator. The execute and approve queue lives in the KeyApprovalModule
Keys
Two purposes are added: CLAIM_ADDER and PROPOSER. A key is identified by the hash of its signer bytes
Claims
A claim carries issuedAt and validUntil, is signed as ERC-712 typed data in the domain of the issuer's identity, and is revoked by digest. getClaimStatus gives the reason a claim is not valid
Claim Issuers
A Claim Issuer is an identity of type CLAIM_ISSUER. The ReputationRegistry gates adding claims without a key grant
Factory
IdentityFactory replaces IdFactory. Identities are typed, each type has a policy and a set of modules, and identities are beacon proxies at CREATE3 addresses
Wallets
Wallets are linked as ERC-7930 addresses, on any chain, with a signature or a cross-chain proposal. A link can be revoked, and a revocation is final
Recovery
RecoveryModule: weighted Guardians, a delay, and cancellation before execution
Attestations
EASClaimIssuer reads attestations of the Ethereum Attestation Service as claims
Removed
Gateway, Verifier, the standalone ClaimIssuer, ImplementationAuthority, IdentityProxy
The audit of this version is listed in Audits and verification.
Earlier versions
T-REX 4.x and ONCHAINID 2.x are described in the CHANGELOG.md of each repository. These docs do not cover them.
Last updated