Root docs
Repository viewer
Legacy docs parity surface
Back to repository viewer
Repository document

Attack Simulation Log

attack-simulation-log.md

Boundary

This route preserves legacy markdown access inside the Next.js surface. The raw repository file remains authoritative.

Open raw file

Attack Simulation Log

This file records reviewer-relevant misuse attempts and the expected safe outcome.

Attempt: Execute Twice

  • Expected: Reject
  • Result: Rejected
  • Evidence: `AlreadyExecuted` path
  • Test: `tests/full-flow-test.ts`

Attempt: Reveal Before Commit

  • Expected: Reject
  • Result: Rejected
  • Evidence: `NotCommitted` or phase rejection path
  • Test: `tests/full-flow-test.ts`

Attempt: Reveal With Invalid Salt

  • Expected: Reject
  • Result: Rejected
  • Evidence: `CommitmentMismatch`
  • Test: `tests/private-dao.ts`

Attempt: Reveal With Mismatched Vote Payload

  • Expected: Reject
  • Result: Rejected
  • Evidence: `CommitmentMismatch`
  • Test: `tests/private-dao.ts`

Attempt: Reveal By Wrong Signer

  • Expected: Reject
  • Result: Rejected
  • Evidence: `NotAuthorizedToReveal`
  • Test: `tests/private-dao.ts`

Attempt: Commit From Zero-Balance Governance Account

  • Expected: Reject
  • Result: Rejected
  • Evidence: `InsufficientTokens`
  • Test: `tests/private-dao.ts`

Attempt: Double Commit

  • Expected: Reject
  • Result: Rejected
  • Evidence: `AlreadyCommitted`
  • Test: `tests/private-dao.ts`

Attempt: Finalize Before Reveal End

  • Expected: Reject
  • Result: Rejected
  • Evidence: `RevealStillOpen`
  • Test: `tests/full-flow-test.ts`

Attempt: Finalize With Wrong DAO Context

  • Expected: Reject
  • Result: Rejected
  • Evidence: seed / `has_one` constraint failure
  • Test: `tests/full-flow-test.ts`

Attempt: Execute Before Finalize

  • Expected: Reject
  • Result: Rejected
  • Evidence: `ProposalNotPassed`
  • Test: `tests/full-flow-test.ts`

Attempt: Execute Before Timelock Unlock

  • Expected: Reject
  • Result: Rejected
  • Evidence: `ExecutionTimelockActive`
  • Test: `tests/full-flow-test.ts`

Attempt: Execute With Treasury PDA From Another DAO

  • Expected: Reject
  • Result: Rejected
  • Evidence: treasury seed binding failure
  • Test: `tests/full-flow-test.ts`

Attempt: Execute With Wrong Recipient Token Owner

  • Expected: Reject
  • Result: Rejected
  • Evidence: `RecipientOwnerMismatch`
  • Test: `tests/full-flow-test.ts`

Attempt: Execute With Wrong Token Mint

  • Expected: Reject
  • Result: Rejected
  • Evidence: `InvalidTokenMint`
  • Test: `tests/full-flow-test.ts`

Attempt: Execute With Non-Treasury Token Source

  • Expected: Reject
  • Result: Rejected
  • Evidence: `InvalidTreasuryTokenAuthority`
  • Test: `tests/full-flow-test.ts`

Attempt: Reuse Voter Record Across Proposals

  • Expected: Reject
  • Result: Rejected
  • Evidence: vote PDA seed mismatch
  • Test: `tests/private-dao.ts`

Attempt: Commit Delegated Vote As Non-Delegatee

  • Expected: Reject
  • Result: Rejected
  • Evidence: `NotDelegatee`
  • Test: `tests/private-dao.ts`

Attempt: Reuse Delegation From Another Proposal

  • Expected: Reject
  • Result: Rejected
  • Evidence: delegation proposal-binding mismatch
  • Test: `tests/private-dao.ts`

Attempt: Force Partial State Mutation Through Failed Execute

  • Expected: No mutation
  • Result: Preserved
  • Evidence: `isExecuted` remains false; balances and status remain stable on failed paths
  • Test: `tests/full-flow-test.ts`

Attempt: Force Partial State Mutation Through Failed Finalize

  • Expected: No mutation
  • Result: Preserved
  • Evidence: status, reveal count, commit count, and unlock fields remain unchanged
  • Test: `tests/full-flow-test.ts`

Reviewer Note

This log is not a substitute for reading the formal security documents.

It is a compact attack-simulation index that helps an auditor jump quickly from:

  • attack idea
  • to expected safety property
  • to repository evidence