Skip to content

Contracts: Replace governance panics with typed VaultError variants #802

Description

@Junirezz

Context

User-facing deposit/withdraw paths return VaultError, but DAO governance helpers in lib.rs use panic! for validation failures.

Problem / Gap

Functions like vote_on_proposal, execute_strategy_proposal, create_strategy_proposal, and set_dao_threshold panic on duplicate votes, failed quorum, or invalid weights. Panics are harder for indexers/wallets to decode than structured VaultError or contracterror enums.

Proposed approach

  • Extend VaultError with governance-specific codes (e.g., DuplicateVote, ProposalExecuted, QuorumNotReached).
  • Replace panic! calls in governance flow with Result<(), VaultError> returns.
  • Update permissions.rs matrix and add tests for each error path.

Files/areas affected

  • contracts/vault/src/lib.rs
  • contracts/vault/src/permissions.rs
  • contracts/vault/src/test.rs

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions