SettleMint
Security

Authorization

DALP authorizes asset operations through platform RBAC, organisation context, wallet verification for browser-session writes, and on-chain roles for the contract action being requested.

DALP authorization answers two questions before an asset operation can continue:

  1. Can this caller use the protected console or API route for the active organisation?
  2. Does the submitting wallet or service have the on-chain role required for the contract action?

The page helps platform owners, compliance teams, and auditors separate console access from blockchain authority. Organisation-owner access is not enough to mint, burn, pause, recover, or change token policy.

Related security references:

System context

Rendering diagram...

Authorization architecture

DALP separates platform access from blockchain authority.

Platform RBAC is organisation-scoped. It decides whether a signed-in user, API credential, or service can reach a protected console or API route for the active organisation.

On-chain authorization is role-scoped. It decides whether the submitting wallet or contract address can perform the requested token, identity, compliance, or system operation.

How the authority chain works:

  1. The caller authenticates through a platform session or API credential.
  2. DALP resolves the active organisation and resource scope for the request.
  3. The protected route checks the required platform permission before it prepares a write operation.
  4. For browser-session blockchain writes, DALP also requires wallet verification through PIN, secret code, or OTP before signing can proceed.
  5. The contract action still needs the matching on-chain role. DALP indexes role events such as RoleGranted and RoleRevoked so the console can render the current permission state.

Key invariant: platform access does not grant blockchain authority by itself. Organisation owner or admin access can let a user administer the platform, but minting, burning, pausing, recovering wallets, changing token policy, or managing compliance still requires the relevant on-chain role and the applicable signing gate.

Dual-layer permissions

Every blockchain operation requires both off-chain and on-chain authorization. Missing either layer results in denial.

Rendering diagram...

Key invariant: Read operations require a valid session and any route-specific read permission. Write operations require the platform permission for the route and the on-chain role for the contract action.

How platform RBAC maps to system actions

Platform RBAC is organisation-scoped. The platform permission check controls who can use DALP's protected console and API routes before an on-chain transaction is built. Platform RBAC does not grant blockchain authority by itself.

Platform roleDALP permissionsTypical use
adminOrganisation management; settings read, list, upsert, remove, and global theme; system read, list, create, and operate; exchange-rate read/list; webhook management and compliance recallPlatform administration and sensitive system operations
ownerOrganisation-owner permissions; user list/get/update; settings read, list, upsert, and remove; system read, list, and create; exchange-rate read/list; webhook management and compliance recallOrganisation ownership, user administration, and configuration
memberOrganisation-member permissions; settings read/list; system read/list; exchange-rate read/listStandard operator access with narrower permissions

For protected routes, DALP checks the required platform permission against the signed-in account or active organisation. If the platform permission is missing, the request stops before any contract call is prepared. If the platform check passes, the requested blockchain action still needs the matching on-chain role.

Role taxonomy

DALP uses three platform roles and 28 current on-chain access-control roles. The on-chain role map has three operating groups: system operating roles, asset operating roles, and module roles.

LayerScopeCountRoles
1. Platform accessOff-chain organisation access3owner, admin, member
2. System operationsOn-chain system-wide authority11admin, auditor, systemManager, tokenManager, complianceManager, claimPolicyManager, organisationIdentityManager, claimIssuer, identityManager, feedsManager, gasManager
3. Asset operationsOn-chain per-token authority7admin, governance, supplyManagement, custodian, emergency, saleAdmin, fundsManager
4. Module authorityOn-chain contract-module access10systemModule, identityRegistryModule, tokenFactoryRegistryModule, tokenFactoryModule, addonRegistryModule, addonModule, trustedIssuersMetaRegistryModule, complianceEngineModule, tokenComplianceFactoryModule, tokenIdentityRegistryFactoryModule

Default administration exists at both system and asset scope. Grant the admin role only where the person or service needs authority.

Layer 1: Platform access

Platform roles are organisation-scoped and managed by DALP platform access controls.

RoleCapabilities
ownerFull administrative access, role assignment, organisation configuration
adminUser management and platform configuration
memberStandard operations based on assigned permissions

Layer 2: System operations

System operating roles apply across the system. Assign them to people or services that administer shared system capabilities, identity setup, token deployment, compliance policy, feeds, gas, or audit review.

RoleResponsibilities
adminGrant and revoke system-scoped roles
auditorView permissions, identities, audit logs, and system state
systemManagerBootstrap systems, manage upgrades, and register factories or modules
tokenManagerDeploy and configure tokens
complianceManagerRegister compliance modules, configure global settings, manage bypass
claimPolicyManagerManage trusted issuers and claim topics
organisationIdentityManagerManage organisation identity claims and keys
claimIssuerCreate and attach claims to identity contracts
identityManagerRegister and recover identities, manage user onboarding
feedsManagerRegister, replace, and remove feeds in the feeds directory
gasManagerManage paymaster deposits and paymaster configuration

Layer 3: Asset operations

Asset roles are scoped to a specific token contract. A wallet can hold a role on one asset without receiving authority over another asset.

RoleResponsibilities
admin (DEFAULT_ADMIN_ROLE)Grant and revoke all other roles for that asset
governanceConfigure identity registry, compliance modules, features, metadata
supplyManagementMint, burn, batch operations, set supply cap
custodianFreeze/unfreeze, forced transfers, forced wallet recovery
emergencyPause/unpause operations, trigger emergency-only early maturity, recover ERC20 held by the asset
saleAdminManage token sale configuration and lifecycle
fundsManagerWithdraw funds from token sales

Custodian and emergency controls

Custodian and emergency roles both protect an asset after issuance, but they answer different operating problems.

Control familyRequired authorityWhat changes on-chainTypical operator decision
Address freeze or unfreezecustodianMarks a holder address as frozen or active for the assetWhether a holder should be blocked or released under the asset's operating policy
Partial balance freezecustodianFreezes or unfreezes a specific amount of a holder's balanceWhether only part of a holding should be locked while the remaining balance stays usable
Forced transfercustodianMoves tokens from one registered holder address to anotherWhether a legal, recovery, or compliance exception justifies a custodian-only transfer
Forced wallet recoverycustodian; registered replacement-wallet linkReassigns a holder's asset access through a custodian-only recovery pathWhether the holder recovery evidence and replacement-wallet link are complete
Forced conversioncustodianConverts a holder's convertible position through the custodian-only conversion pathWhether the conversion terms justify custodian execution for a specific holder
Standard wallet recoveryAPI route: emergency; contract: registered replacement walletRecovers tokens from a lost wallet to the caller's registered replacement walletWhether the lost-wallet recovery should proceed through the standard recovery path
Asset pause or unpauseemergencyStops or resumes token operations through the asset pause stateWhether the asset should be stopped during an incident or released after the incident ends
Emergency early maturityemergencyMarks a bond-style asset mature before its configured maturity dateWhether an incident or lifecycle override justifies emergency-only early maturity
ERC20 asset-contract recoveryemergencyTransfers ERC20 held by the asset contract to the selected recipientWhether asset-held ERC20 should be released under the asset's recovery policy

Use the Custodian role for holder-specific exceptions such as forced transfers, forced recoveries, and forced conversions. Use the Emergency role for asset-level stop actions, lifecycle overrides, ERC20 recovery from the asset contract, and the standard lost-wallet recovery API route. Standard lost-wallet recovery also depends on the registered replacement wallet at contract execution. Neither role is a substitute for the platform permission, wallet verification, custody-signing policy, or external approval record required by your deployment.

For the operator workflow, see Forced transfer and Pause or unpause an asset. For the custody and compliance policy split, see Compliance and custody split.

Layer 4: Module authority

Module roles are assigned to contract addresses that DALP uses to operate shared registries, factories, and trusted issuer infrastructure. Treat these as system wiring roles, not ordinary human operating roles.

RoleResponsibilities
systemModuleManage system modules
identityRegistryModuleModify identity registry storage
tokenFactoryRegistryModuleAdminister token factory module access
tokenFactoryModuleRegister token contracts in the compliance allowlist
addonRegistryModuleAdminister add-on module access
addonModuleRegister add-on instance contracts
trustedIssuersMetaRegistryModuleAdd trusted issuers to the registry
complianceEngineModuleDeploy compliance module instances for token compliance
tokenComplianceFactoryModuleCreate per-token compliance proxies and assign engine access
tokenIdentityRegistryFactoryModuleDeploy per-token identity registries

Role scopes for common operator personas

DALP separates platform membership from on-chain operating authority. A user can sign in to the platform without having every on-chain role, and a wallet can hold one role without inheriting unrelated asset or system powers.

Persona or responsibilityTypical scopeRoles to assign
Platform administratorOrganisation setup and user accessPlatform owner or admin, plus on-chain roles only for the administrator's system or asset responsibilities
System operatorSystem configuration, upgrades, factories, shared modules, and paymaster operationssystemManager, with narrower roles such as tokenManager, complianceManager, identityManager, feedsManager, or gasManager when the operator only owns one domain
Compliance operatorTrusted issuers, claim topics, compliance modules, and user eligibility controlscomplianceManager, claimPolicyManager, organisationIdentityManager, claimIssuer, or identityManager, depending on whether the user configures policy, manages organisation identity claims and keys, issues claims, or manages identities
Asset operations teamDay-to-day actions for one tokenized assetPer-asset roles such as governance, supplyManagement, custodian, emergency, saleAdmin, or fundsManager on that asset
Auditor or regulator viewReview permissions, identities, audit logs, and system state without operating the assetPlatform access plus the system-level auditor role; do not grant write roles unless the same person also performs operations

Use the narrowest role set that matches the person's responsibility. System people roles apply across the system. Per-asset roles apply only to the specific token contract.

Segregation of duties for administration

DALP supports segregation of duties by splitting account access, platform permissions, system roles, and per-asset roles. A policy administrator, contract administrator, compliance operator, and issuance operator can be assigned different role sets so one persona does not automatically inherit the others.

Control areaDALP mechanismPractical separation
Account and session accessSign-in session, active organisation context, optional account 2FA, and fresh-session checks for sensitive account operationsProves who is using the console before authorization starts
Console and API accessOrganisation-scoped platform permissions checked before protected routes continueLets platform owners and admins grant console capabilities without granting every on-chain role
Policy and compliance administrationcomplianceManager, claimPolicyManager, organisationIdentityManager, claimIssuer, and identityManager system rolesSeparates compliance module configuration, claim-topic policy, organisation identity operations, claim issuance, and identity operations
Contract and asset administrationPer-asset governance, supplyManagement, custodian, emergency, saleAdmin, and fundsManager rolesSeparates asset configuration, mint and burn authority, custody actions, emergency controls, sale administration, and fund withdrawal
Audit and reviewauditor role and indexed role eventsGives reviewers visibility without granting write authority

A deployment can enforce independent control by assigning these roles to separate accounts, wallets, custody policies, or approval groups. DALP does not treat organisation owner or admin as automatic permission to mint, burn, recover wallets, or change token policy. Those actions still need the matching on-chain role and, for browser-initiated blockchain writes, wallet verification before signing.

DALP does not impose a universal rule that one human can never hold two roles. If your operating model forbids the same person from changing policy and executing issuance, encode that rule in role assignment, custody approval policy, and operational review. The platform gives the separate permissions and failure gates; the deployment policy decides who may hold them together.

Per-asset permission matrix (summary)

ActionRequired roleAsset-specific notes
Set OnchainID / identity registry / compliancegovernanceAll asset types
Set features / metadatagovernanceDALPAsset only (Configurable extension)
Set yield schedule / mature bondgovernanceBond only
Mint / burn / batch operationssupplyManagementRealEstate and PreciousMetal: no burn
Set supply capsupplyManagementBond and RealEstate only
Freeze / forced transfer / recoverycustodianAll asset types
Pause / unpause / recover ERC20emergencyAll asset types
Configure / manage token salesaleAdminAssets with sale addon
Withdraw sale fundsfundsManagerAssets with sale addon

See Legacy-Equivalent Presets for per-instrument feature and compliance configuration across all seven asset types.

Asset-level role assignment for mint, burn, and transfer permissions

Multi-tenant architecture

The platform supports configurable multi-tenancy through organisation-scoped membership and permissions.

  • Single tenant: all users operate inside one organisation, and organisation creation is blocked after the first organisation exists.
  • Multi tenant: separate organizations have isolated membership, roles, assets, compliance records, and audit trails.

Tenant boundary: every API request resolves organisation context before protected data or actions continue. That organisation context is separate from on-chain role checks, so a user needs both the right tenant-scoped platform permission and the relevant on-chain role for write operations.

On this page