Security Considerations

Voltr Protocol - Security Considerations for Custom Adaptor Development

This guide outlines critical security considerations and best practices when developing custom adaptors for the Voltr Protocol.

Account Security

1. Authority Validation

// Always validate authorities and signers
require!(
    ctx.accounts.vault_strategy_auth.key() == expected_auth,
    AdaptorError::InvalidAccountOwner
);

// Verify protocol program ownership
require!(
    ctx.accounts.protocol_program.key() == strategy.protocol_program,
    AdaptorError::InvalidProtocolProgram
);

Key areas to validate:

  • Strategy authority signatures

  • Protocol program ownership

  • Token account authorities

  • Account derivation paths

  • PDA validation

2. Token Account Safety

Critical checks:

  • Verify token mint associations

  • Validate token account authorities

  • Check ATA derivation

  • Enforce token program consistency

  • Verify token account state

3. PDA Derivation Security

Key considerations:

  • Use consistent seed ordering

  • Store and validate bumps

  • Check PDA ownership

  • Verify seed values

  • Validate authority PDAs

State Management Security

1. Position Value Tracking

Critical aspects:

  • Use checked math operations

  • Handle decimal precision

  • Track position changes atomically

  • Validate calculations

  • Handle underflow/overflow

2. State Updates

Best practices:

  • Atomic updates

  • State validation

  • Version tracking

  • State consistency checks

  • Timestamp validation

Protocol Integration Security

1. CPI Safety

Security measures:

  • Validate all CPI accounts

  • Sign with correct authority

  • Check return values

  • Handle CPI errors

  • Validate program IDs

2. Protocol State Validation

Key checks:

  • Verify protocol state

  • Validate constraints

  • Check protocol limits

  • Handle protocol errors

  • Validate protocol accounts

Error Handling

1. Comprehensive Error Types

Error handling practices:

  • Descriptive error types

  • Protocol-specific errors

  • Clear error messages

  • Error propagation

  • State validation errors

2. Input Validation

Important checks:

  • Validate all inputs

  • Check amount ranges

  • Verify arguments

  • Validate timestamps

  • Check protocol limits

Operational Security

1. Transaction Atomicity

Key considerations:

  • Atomic operations

  • State validation

  • Transaction rollback

  • Error recovery

  • State consistency

2. Upgrade Safety

Upgrade considerations:

  • Version tracking

  • State migration

  • Backward compatibility

  • Feature flags

  • Reserved space

Testing Requirements

  1. Security Tests

    • Authority validation

    • Account validation

    • State consistency

    • Error handling

    • Edge cases

  2. Integration Tests

    • Protocol interactions

    • State transitions

    • Error conditions

    • Upgrade paths

    • Multi-instruction scenarios

  3. Fuzzing Tests

    • Input validation

    • State mutations

    • Account combinations

    • Error conditions

    • Protocol interactions

Security Checklist

Before deployment, verify:

  1. Account Security

  2. State Management

  3. Protocol Integration

  4. Testing

Last updated