All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning (SemVer).
Note: Version 0 of Semantic Versioning is handled differently from version 1 and above. The minor version will be incremented upon a breaking change and the patch version will be incremented for features.
Removed
- removed unnecesarry deserialization with AccountsSnapshots, to deserialize data implementation AccountDeserialize can be used (221)
Changed
- improve AccountsStorage module structure and remove unnecessary methods in FuzzClient (223)
- improve manipulations with AccountsStorages in get_accounts() function (219)
Added
- add pre_sequence!, middle_sequence! and post_sequence! for easier sequence definition (220)
- add/ add support for Clock sysvar manipulations with the client(i.e. warp to slot/epoch and forward in time) (217)
Added
- impr/ allow to specify programs and accounts in the Trident Manifest (207)
- impr/ added get_program_id function to the IxOps and FuzzTestExecutor (199)
Changed
- impr/ improve init command, modify program manifest automatically, add init force, add howto subcommand (208)
- impr/ allow to derive AccountsSnapshots for empty Account Context (209)
- impr/ fuzz flags are read at start of fuzzing session from Config instead of env variable and transaction dispatch was added to increase FuzzTestExecutor readability (204)
- impr/ allow various instructions to be generated in case of multiple programs in the Anchor workspace (200)
- feat/ option to add account into Fuzz Test environment with base64 data (197)
- impr/ instead of parsing source code and creating our IDL, read anchor IDL (198)
Removed
- del/remove integration tests supported by Trident, this feature adds more unnecessary overhead compared to its value (196)
Added
- impr/ add feature flag to the AccountsSnapshots macro (183)
- feat/ add Support for CPI (182)
- feat/ add option to initialize Trident with Macro/File (for Snapshots) option based on preference (179)
- feat/create AccountsSnapshots derive macro for Snapshots creation (#177)
- feat/fuzzing moved to separate crate trident-fuzz (#175)
- feat/unify dependencies provided by the Trident (#172)
- feat/fuzzer-stats-logging, an optional statistics output for fuzzing session (#144)
Fixed
- fix/in case of fuzzing failure throw error instead of only printing message (#167)
- fix/snapshot's zeroed account as optional (#170)
Removed
- del/remove localnet subcommand (178)
- del/remove unnecessary fuzzing feature as trident is mainly fuzzer (#176)
- del/remove Trident explorer (#171)
Added
- feat/anchor 0.30.0 support (#148)
- fix/allow to process duplicate transactions (#147)
- feat/possibility to implement custom transaction error handling (#145)
- feat/support of automatically obtaining fully qualified paths of Data Accounts Custom types for
accounts_snapshots.rs
(#141) - feat/allow direct accounts manipulation and storage (#142)
- feat/support of non-corresponding instruction and context names (#130)
- feat/refactored and improved program flow during init and build, added activity indicator (#129)
- feat/allow solana versions up to v1.17.* and pin Rust 1.77 nightly compiler (#128)
- feat/new init command option to initialize fuzz or poc tests only (#124)
- feat/debug-mode detailed output (#125)
- feat/anchor 0.29.0 support (#121)
- doc/add help comment + update documentation (#120)
- feat/fuzzer error handling (#118)
- feat/convert fuzz Pubkey to AccountId (#116)
- feat/additional anchor types (#115)
- feat/import ToAccountInfo trait in fuzzing prelude (#113)
- test/added code generation and macros tests (#112)
- feat/fuzzer framework core, macros, helpers, templates, and examples. (#111)
- feat/improved trident-tests folder structure for PoC and Fuzz Tests (#109)
- feat/support for additional fuzzer parameters in Trident.toml config file (#107)
- feat/posibility to pass params to the fuzzer via Trident.toml config file (#106)
- feat/client now reads by default keypair from default location (#105)
- feat/added new --exit-code option to return corresponding exit code based on fuzz test result (#104)
- feat/removed/updated deprecated functions, removed allow deprecated macros (#103)
- feat/added new function to read keypair file generated by Anchor (#102)
- feat/clean command (#101)
- feat/improved program_client generated code (#100)
- feat/automatically add hfuzz_target to .gitignore file (#99)
- feat/support for dynamic templates. (#98)
Fixed
- fix/refactored fuzz test executor error handling (#127)
- fix/warn user on composite accounts and continue fuzz test generation (#133)
- fix/progress bar loop lock release (#132)
- fix/fixed fuzz test generation with init-if-needed Anchor feature (#131)
- fix/program client custom types (#117)
- fix/check fuzz test name collision by checking the name against HashSet (#114)
Added
- cli: Added trident subcommand
fuzz
to run and debug fuzz tests using honggfuzz-rs. - cli: Added trident
--skip-fuzzer
option forinit
subcommand to skip generation of fuzz test templates. - client: Added new Cargo feature
fuzzing
that enables optional dependencies related to fuzz testing.
Changed
- Upgrade Solana (
=1.16.6
) and Anchor framework (=0.28.0
) versions.
Fixed
- Implemented Anchor Client logic was not able to work with newer version of Anchor. Fixed with
async_rpc
andasync
feature. - Trident init IDL Parse Error on newer version of Rust, fixed with updated
accounts
token.
Changed
- Upgrade Solana (
~1.10
) and Anchor framework (~0.25
) versions
Added
- Custom Solana RPC error reporter. If the Solana RPC error is thrown, the error code, message and data (logs) are reported to the output.
- Custom imports in the
.program_client
. User is able to import custom types and structures into program client. The import part of the code would not be re-generated.
Added
- Trident is now configurable. This requires
Trident.toml
file to exist in the project's root directory - without this file the execution will fail. To solve this re-runtrident init
or just create an emptyTrident.toml
file in the project's root directory.