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](https://ackee.xyz)**, 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: ```shell cargo install trident-cli ``` Write your first fuzz test: ```rust #[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: ```shell trident fuzz run ``` For full examples and guides, see the [documentation](https://ackee.xyz/trident/docs/latest/trident-examples/trident-examples/).
## Installation Latest release: **0.11.1** ```shell 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 - [Getting Started](https://ackee.xyz/trident/docs/latest/#getting-started) - [Advanced Customization](https://ackee.xyz/trident/docs/latest/trident-advanced/) - [Examples & Pipelines](https://ackee.xyz/trident/docs/latest/trident-examples/trident-examples/) - [API & Macro Reference](https://ackee.xyz/trident/docs/latest/trident-api-macro/)
## Community Check out the following places for more Trident-related content: - Follow on [Twitter/X](https://twitter.com/TridentSolana) for updates - Join the discussions on our Trident [discord channel](https://discord.gg/wyBW9Q23aJ) ## Grants Solana Foundation | Marinade :-------------------------:|:-------------------------: [![](https://abchprod.wpengine.com/wp-content/uploads/2024/05/Solana-Foundation.png)](https://ackee.xyz/blog/introducing-trident-the-first-open-source-fuzzer-for-solana-programs/) | [![](https://abchprod.wpengine.com/wp-content/uploads/2024/05/Marinade.png)](https://solana.com/news/riptide-hackathon-winners-solana) ## Contribution Thank you for your interest in contributing to Trident! Please see the [CONTRIBUTING.md](https://github.com/Ackee-Blockchain/trident/blob/master/CONTRIBUTING.md) to learn how. ## License This project is licensed under the [MIT license](https://github.com/Ackee-Blockchain/trident/blob/master/LICENSE).