Skip to content

Factory Deploys All Vaults with Factory's Own Admin — No Per-Vault Admin Override #101

@Jayy4rl

Description

@Jayy4rl

Description

In _create_single_rwa_vault, the vault's admin field in InitParams is always set to get_admin(e) — the factory's admin. There is no way for the factory caller to specify a different admin for a newly deployed vault. This means:

  1. Every vault is controlled by the same admin address
  2. The factory admin has unilateral power over all deployed vaults
  3. If different teams/operators need independent vaults with separate governance, they cannot use this factory
  4. A compromised factory admin compromises every vault simultaneously

Why This Matters

In a multi-tenant RWA platform, different asset managers should have independent admin control over their vaults. Centralizing all vault admin under the factory admin creates a single point of failure and limits the protocol's utility.

Requirements

  • Add an optional vault_admin: Address field to CreateVaultParams and BatchVaultParams
  • In _create_single_rwa_vault: use vault_admin if provided, otherwise fall back to get_admin(e)
  • For create_single_rwa_vault (simple variant), add an admin parameter or default to factory admin
  • Similarly allow per-vault zkme_verifier and cooperator overrides (currently hardcoded to factory defaults)
  • The factory admin should still be able to set vault status in the registry (this is factory-level, not vault-level)
  • Emit the actual vault admin in the VaultCreated event

Key Files

Definition of Done

  • Vault admin is configurable per vault deployment
  • Default falls back to factory admin when not specified
  • Per-vault zkme_verifier and cooperator overrides supported
  • Tests verify independent admin control on separately deployed vaults
  • Existing simple creation function maintains backward compatibility

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave program

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions