Overview
This issue tracks follow-up items from PR #178 (AUM fee schedule taken from principal). The goal is to migrate AUM fee configurations into a formal Params structure and introduce granular control over fee rates (bips) at both the global and per-vault levels.
- Global Module Parameters (Singleton): Introduce a
Params structure governed by on-chain governance to define the global Tech Fee Address and the Default AUM Fee Bips.
- The
tech_fee_address is the single authorized address for the entire module that receives fees and can manage per-vault bips.
- Per-Vault Bips Configurability: Only the AUM fee rate (bips) is configurable per vault.
- New vaults inherit the
default_aum_fee_bips from the global module parameters at the time of creation.
- The global
tech_fee_address has the unique authority to update the bips for any specific vault.
- Finalize Hardcoded ProvLabs Fee Address: Replace the current placeholder logic and/or the chain-ID-switching logic in
GetProvLabsFeeAddress with the confirmed mainnet (pio-mainnet-1) and testnet (pio-testnet-1) ProvLabs fee collection addresses as the genesis defaults.
- Authorization Model:
- Governance: Updates global
Params (the tech fee address itself and the default bips for new vaults).
- Tech Fee Address: Updates the specific bips amount for an individual vault.
Acceptance Criteria
1. State & Schema Updates
2. Message Implementation
3. Logic & Integration
4. Finalized Defaults
Context
Overview
This issue tracks follow-up items from PR #178 (AUM fee schedule taken from principal). The goal is to migrate AUM fee configurations into a formal
Paramsstructure and introduce granular control over fee rates (bips) at both the global and per-vault levels.Paramsstructure governed by on-chain governance to define the global Tech Fee Address and the Default AUM Fee Bips.tech_fee_addressis the single authorized address for the entire module that receives fees and can manage per-vault bips.default_aum_fee_bipsfrom the global module parameters at the time of creation.tech_fee_addresshas the unique authority to update the bips for any specific vault.GetProvLabsFeeAddresswith the confirmed mainnet (pio-mainnet-1) and testnet (pio-testnet-1) ProvLabs fee collection addresses as the genesis defaults.Params(the tech fee address itself and the default bips for new vaults).Acceptance Criteria
1. State & Schema Updates
Paramsmessage toproto/provlabs/vault/v1/genesis.proto:tech_fee_address: The singleton address where all AUM fees are collected and which holds the authority to update per-vault bips.default_aum_fee_bips: The default fee rate (in basis points) applied to new vaults upon creation.VaultAccountinproto/provlabs/vault/v1/vault.proto:aum_fee_bips(uint32) to store the fee rate for this specific vault.InitGenesisandExportGenesisto handle the newParamsstructure and ensureVaultAccount.aum_fee_bipsis persisted.2. Message Implementation
Params(the singletontech_fee_addressanddefault_aum_fee_bips).authority(governance module account).aum_fee_bipsfor a specific vault.tech_fee_address. The vault admin does NOT have permission to change this.3. Logic & Integration
CreateVaultmust fetch thedefault_aum_fee_bipsfrom the module params and initialize the new vault with that value.aum_fee_bipsstored on theVaultAccountand send collected fees to the globaltech_fee_address.AUMFeeAddressKeyPrefixvalue intoParams.tech_fee_address.aum_fee_bipsfield.4. Finalized Defaults
AUMFeeAddressand/or the chain-ID-switching logic inGetProvLabsFeeAddresswith the confirmed mainnet (pio-mainnet-1) and testnet (pio-testnet-1) ProvLabs fee collection addresses.GetProvLabsFeeAddressand theProvLabsMainnetFeeAddress/ProvLabsTestnetFeeAddressstring constants are retired once theParamsapproach lands.Context