Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Ackee-Blockchain/trident

Trident Github

Trident

The first and only manually-guided fuzzing framework for Solana programs written in Rust, processing up to 12,000 tx/s.

Granted by the Solana Foundation, securing Kamino.

Website Documentation Chat Version MIT License Lint Test Escrow and Turnstile


Why Trident?

  • Executes thousands of transactions per second to stress your program at Solana speed.
  • Models state changes and flows that unit tests miss.
  • Surfaces edge cases, overflows, and missing constraints early in development.
  • Built and maintained by Ackee Blockchain Security, trusted auditors of Lido, Safe, and Axelar.
  • Supported by the Solana Foundation.

Features & benefits

  • Manually-guided fuzzer – Define custom strategies to explore tricky code paths.
  • Stateful fuzzing – Inputs are generated based on critical account state changes.
  • Anchor-like macros – Write fuzz tests with familiar, clean syntax.
  • TridentSVM client – Execution using Anza’s Solana SVM API.
  • Property-based testing – Compare account states before and after execution.
  • Flow-based sequence control – Combine multiple instructions into realistic transaction patterns.
  • Regression testing – Compare fuzzing results between program versions.

Quick start

Install via Cargo:

cargo install trident-cli

Write your first fuzz test:

#[init]
fn start(&mut self) {
  // Build Initialize Transaction
  let mut tx = InitializeTransaction::build(&mut self.trident, &mut self.fuzz_accounts);

  // Execute Initialize Transaction
  self.trident
        .execute_transaction(&mut tx, Some("Initialize"));
}

#[flow]
fn flow1(&mut self) {
    // Build MoveEast Transaction
    let mut tx = MoveEastTransaction::build(&mut self.trident, &mut self.fuzz_accounts);

    // Execute MoveEast Transaction
    self.trident.execute_transaction(&mut tx, Some("MoveEast"));
}
#[flow]
fn flow2(&mut self) {
    // Build MoveSouth Transaction
    let mut tx = MoveSouthTransaction::build(&mut self.trident, &mut self.fuzz_accounts);
    
    // Execute MoveSouth Transaction
    self.trident.execute_transaction(&mut tx, Some("MoveSouth"));
}

Run it:

trident fuzz run <fuzz_test>

For full examples and guides, see the documentation.


Installation

Latest release: 0.11.1

cargo install trident-cli

Use cases

  • Audit preparation – Run fuzz campaigns before submitting your code for review.
  • Continuous security – Integrate Trident into CI for ongoing regression testing.
  • Research & prototyping – Generate complex attack sequences programmatically.

Documentation


Community

Check out the following places for more Trident-related content:

Grants

Solana Foundation Marinade

Contribution

Thank you for your interest in contributing to Trident! Please see the CONTRIBUTING.md to learn how.

License

This project is licensed under the MIT license.

About

Rust-based framework to Fuzz Solana programs, designed to help you ship secure code.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 20

Languages