The platform checks three separate sets of roles. Organisation and platform roles decide which organisation and platform actions a signed-in person can take. They are Owner or Member in the organisation, and Administrator on the platform. On-chain roles decide which address can make a privileged contract call, or for a few roles which Platform API and Console actions a holder can take. Trading venue roles decide who can configure and settle a venue. Holding a role in one set grants nothing in the other two. The custody gateway add-on keeps its own roles in its own access manager, granted by the Gateway permission manager role.
To change who holds an on-chain role, use Roles and permissions.
Each set is checked in a different place, so a grant in one set gives no authority in another.
Organisation and platform roles
An organisation member holds one of two organisation roles, Owner or Member. The Administrator platform role is set on a person's account, not in one organisation, and the Console shows it as the “Platform role”. The role decides which resource actions the platform allows the person to perform. A person who needs to sign a contract call also needs the matching on-chain role.
The platform switches organisation deletion off, so no role deletes an organisation. The members, invitations, users and sessions rows come from the authentication library that the platform uses for sign-in. The platform defines the other rows itself. A platform administrator can impersonate a user and sign in as them. A platform administrator who is also an Owner of the organisation has the Owner column as well. Renaming the organisation, changing a member's role, removing a member and sending an invitation need the Owner role in that organisation, even for a platform administrator. Removing a member also needs the Identity manager on-chain role.
Owner and platform administrator are the two roles that count as eligible approvers for a partial redemption and for reporting sign-off. See Maker-checker for the rules.
On-chain roles
The platform defines 33 on-chain roles. Ten are held by contracts and never by people.
The other 23 are human roles, and the Console groups them under Platform, Compliance, Assets, and Oversight. The system-wide table lists 17 of them, and the Console and the Platform API grant 15 of those. The system grants Organisation identity manager to the account that bootstraps it, and no platform route grants Add-on manager. The tables name each role by its Console label, with the API field name where the two differ. Two scopes apply. A system-wide role is checked in the organisation's system access manager. An asset role is checked in the access manager of one token, so holding it on one token gives no authority on another. The Permission manager role, admin in the API, exists in both managers. Once the organisation switches to smart wallets, the organisation's own wallet holds system roles too. The Console lists that wallet under the organisation's name and does not count it as a person, for example when it warns that only one person holds Permission manager.
Granting or revoking a role needs the target role's administrator. In the system access manager, Permission manager can grant and revoke every role. In a token's access manager, Permission manager administers all of that token's roles. The Role Grant page explains the model.
The Console marks each human role with a risk level. Permission manager and System manager are critical. Gas manager, Gateway permission manager, Escrow manager, Compliance manager, Identity manager, Bank rail manager, Venue manager, Governance, Supply management, Custodian, Emergency and Funds manager are elevated. Identity manager is elevated because one holder can replace any user's wallet and move that user's tokens with an identity recovery. The other roles carry no risk mark.
System-wide roles
Asset roles
Asset roles are checked in the access manager of one token. On the “People” tab, Governance counts in the Compliance group, Permission manager in Platform, and the other asset roles in Assets. The asset's own role editor groups them as Administration, Compliance, Operations and Other.
Contract roles
Contract roles belong to platform contracts and are granted during bootstrap or registration. Do not assign them to a person. They matter to an auditor because they show which contract may write to which registry.
Trading venue roles
Each trading venue has its own access manager with three roles. The venue contract checks them, not the system access manager. The account that creates the venue holds the default administrator role, which administers the venue admin role. The venue admin role administers the operator and submitter roles.
Provisioning a venue in the Console grants the submitter role to the organisation's operations signer. See Venue operations for the workflow.
What the platform enforces
For each control in this table, the platform rejects a decision made by the same person who proposed it. Maker-checker describes the full rules, including the cases where an organisation can waive a control.
An owner or a platform administrator can also require a second person for ten families of change in the organisation's Approvals settings. The Administration family covers privileged changes such as role management, compliance configuration, freezes, pauses, forced transfers and recovery. Every family is off by default, except the “Recovery” group of Administration, which starts on.
The platform always enforces one segregation rule for system roles through its routes: one address cannot hold auditor together with any of the other 14 system roles the platform grants. A grant made directly on chain is not checked, and the conflict report does not list it. A grant of either side to an address that holds the other is refused, and a request cannot grant both together. The refusal is PLATFORM_, and data.conflicts names each pair with scope platform and mode block. The administrator role appears there as DEFAULT_ADMIN_ROLE. A request that revokes the conflicting role at the same time is evaluated after that revoke and goes ahead when no other conflict remains.
Each organisation can also keep its own segregation-of-duties rules, stored in the ROLE_SEGREGATION organisation setting. A rule names two on-chain roles, such as GOVERNANCE_ROLE and CUSTODIAN_ROLE, and a scope: contract when the two roles conflict only on the same token, token sale or venue, platform when they conflict anywhere in the organisation's system. Each rule also has a mode, which decides what happens to a grant that breaks it:
Both modes stop a grant that has no reason. warn lets it through once someone records why.
The setting's enabled switch turns the check on. While it is off, grants go ahead and the rules still feed the conflict report. An organisation owner or a platform administrator saves the setting with POST /api/. In the Console, an owner sets the switch and the rules in the Segregation of duties section of General.
The check runs on every role grant route, for system, token, token-sale and venue roles, before any chain write. It also covers the initial permissions of a new token and the roles an invitation grants. It counts the roles the address already holds anywhere in the system, after the same request's revokes, and the other roles named in the same grant. It compares addresses, not people, so one person can hold both roles of a pair on two wallets, or use the second by working as a party whose wallet holds it. An address that holds a system module role is a platform contract and is not checked. The frozen v1 grant routes and the token create routes cannot send a reason, so they refuse a grant that breaks a warn rule. While the setting is enabled, the platform refuses a grant it cannot check, because the system's access manager or the target access manager is not in its record of the chain yet.
In the Console, a refused role change names each conflicting pair and its scope, for example “Custodian cannot be held with Governance on the same contract.” The Console's role sheets send no reason, so they also refuse a grant that breaks a warn rule. Send that grant through the Platform API with a reason instead.
No organisation pair is enforced until the organisation saves and enables the setting. Until then its rules are the default pairs marked in the next table, each set to block, as a starting list.
GET /api/ lists every address that holds a pair the organisation's rules name, for a Permission manager or Auditor. It reads the platform's record of role holdings, so it also shows roles granted directly on chain outside the platform. It does not apply the always-on Auditor rule, so an address that holds Auditor and another system role does not show there. Narrow it with filter[mode], filter[scope] or a filter[q] search, and sort it by account, mode or scope.
A system role grant may carry an expiresAt at least one minute in the future. A settled response repeats the expiry, and a durable workflow revokes the granted roles after it.
Role pairs to keep apart
The table lists pairs where one holder would remove an independent check.
“A default organisation rule, once enabled” means the platform refuses the pair only after the organisation saves and enables the ROLE_SEGREGATION setting. A role change made through the platform is recorded in the Audit trail with the person who made it, their platform and organisation role at the time, and the roles before and after. Review the conflict report at each access review. Review the pairs no rule covers, such as Permission manager or System manager with another role, on the “People” tab of Roles and permissions.
Frequently asked questions
Does the platform warn when one account holds two conflicting roles?
It refuses a system role grant that would leave one address holding auditor and any other system role, in every organisation. For the organisation's own rules it refuses or asks for a reason according to each rule's mode once the ROLE_SEGREGATION setting is enabled. GET /api/ lists the addresses that already hold a pair the organisation's rules name, including roles granted on chain outside the platform.
Which controls need a second person without any role setup?
The controls in the enforcement table. They compare the people involved, not their roles, so they apply even when one person holds every role. A wallet checker is the exception in one respect: it applies only to a wallet that has a checker configured.
Is an on-chain role the same as a platform administrator?
No. The Administrator platform role is set on a person's account and checked by the Console and Platform API. The on-chain Permission manager role, admin in the API, is held by an address and checked by the contracts. A platform administrator or an organisation owner has no contract authority until an address the organisation can act on for them holds the matching on-chain role.
How many roles does DALP have?
The role vocabulary has 33 on-chain roles, 23 of them human and ten held by contracts. Organisation and platform roles add three more, Owner, Member and Administrator, and trading venues add three more. The sets are separate.