Roadmap
Signed writes, pool/loan/tranche operations, IPFS — what's coming and what it needs
account.transfer — Designed, Blocked on Signing
A native transfer operation (balances.transfer_keep_alive) is already implemented at the Services
layer (CentrifugeAccountService.TransferAsync) — it validates the recipient address, network match,
and amount, then deliberately returns CHAIN_SIGNING_NOT_AVAILABLE rather than half-implementing an
untested signing path on an operation that moves funds.
Reserved for Pool / Loan / Tranche Operations
CentrifugeErrorCodes already reserves CFG_MISSING_POOL_ID,
CFG_MISSING_LOAN_ID, and CFG_MISSING_TRANCHE_ID — the config-validation codes a future
pool/loan/tranche resource would need — but no operation DTO or executor route exists for any of them yet. These
would expose Centrifuge's core RWA-pool functionality: pool NAV, tranche token prices, loan status, and
origination.
Reserved for IPFS Document Operations
Centrifuge RWA pools reference legal and asset documents via IPFS content hashes. CFG_MISSING_IPFS_HASH,
IPFS_UPLOAD_FAILED, IPFS_FETCH_FAILED, and IPFS_CID_NOT_FOUND are reserved
error codes for this, but no IPFS-facing operation is implemented today.
Reserved for Wallet-Credential Signing
CFG_WALLET_CREDENTIAL_NOT_FOUND, AUTH_WALLET_CANNOT_SIGN, and
AUTH_UNSUPPORTED_KEYPAIR_TYPE are reserved for the eventual signing story — the same
CRYPTO_WALLET vault-credential pattern used elsewhere in this platform, resolving a payer's private
key through the executor's credentials layer rather than accepting one directly as workflow input.
Other Known Gaps
| Gap | Detail |
|---|---|
| Atlas Forms | ProcessStudio configuration-UI forms (numbered 20400–20405) for this node's six current operations have not been built yet. |
| ExecutionNode-level tests | 48 unit tests exist for the Domain and Services layers (SS58 codec, unit conversion, interest-rate conversion, SCALE parsing); executor-level tests haven't been written. |
| Config-driven networks | Networks are compiled-in constants today (see Networks); adding a network currently requires a code change rather than an appsettings entry. |
| Currency-aware conversion | utility.convertUnits/convertRate take decimals directly rather than a currency symbol — see Currencies & Units. |