Skip to main content
This page covers the smart contract implementation details. See Glossary.
This guide covers practical role setup for common scenarios. For the conceptual overview of External Access Control (EAC), role types, and scoping mechanics, see Access control and roles.

Persona-based role sets

Platform owner setup

The platform retains strategic control while delegating operations.

Asset manager setup

The AM receives operational roles scoped to the specific Multi-Vehicle they manage.

Keeper/automation setup

Keepers automate routine operations like redemption queue processing.

Fee collector setup

For an operator or bot that handles fee collection and distribution.

Role reference matrix

Common workflows

Onboard a new asset manager

Offboard an asset manager

Check for in-progress queries before offboarding. Pending async operations may require the AM’s roles to complete.

Make STEAM operations public

Allow anyone to deposit and redeem on a Vehicle or Multi-Vehicle. Deposits and redeems can be opened independently:
Making the STEAM roles public is typical for vaults open to all users. These roles only control who can create STEAM queries — they do not affect operational roles. Splitting deposit and redeem lets operators pause one direction (e.g. redemptions during a wind-down, or deposits while under compliance review) without affecting the other.

Rotate DEFAULT_ADMIN_ROLE

Transfer admin control using the time-delayed mechanism:
1

Initiate transfer

2

Wait for the configured delay

The delay (set during EAC deployment) must pass before the transfer can complete.
3

New admin accepts

Decision guidance

Scoped vs global roles

Default recommendation: Always use scoped roles unless you have a specific reason not to.

Public roles

Multisig for admin

Use a multisig wallet for DEFAULT_ADMIN_ROLE in production. A compromised admin key can grant itself any role and drain the vault.

Security checklist

  • Verify scope addresses before granting — wrong scope means the role won’t work as intended
  • Use multisig for DEFAULT_ADMIN_ROLE in production
  • Set non-zero initialDelay on the EAC to protect admin transfers
  • Regularly audit active roles via the subgraph or on-chain queries
  • Plan for offboarding — document which roles each operator holds
  • Never grant DEFAULT_ADMIN_ROLE to an asset manager
  • Keep vehicle authorization with the platform, not the AM

Troubleshooting

The most common cause is an incorrect scope. Each role must be scoped to the correct contract:
  • Most MV operational roles → scope to the Sector Accounting Engine (not the Multi-Vehicle itself)
  • Queue roles → scope to the Queue Strategy Engine
  • Fee roles → scope to the Fee Manager
  • STEAM roles → scope to the Vehicle or Multi-Vehicle
Use hasRoleOrScopedRole to verify the grant:
It depends on the operation:
  • VEHICLE_STEAM_DEPOSIT and VEHICLE_STEAM_REDEEM are scoped to the Vehicle or Multi-Vehicle contract
  • MULTI_VEHICLE_DISPATCH, MULTI_VEHICLE_MOVE_ASSETS, etc. are scoped to the Sector Accounting Engine
  • MULTI_VEHICLE_SET_QUEUES is scoped to the Queue Strategy Engine
Check the Role reference matrix for the correct scope for each role.
Query the EAC contract directly or use the Railnet subgraph: