credible-std is the Solidity standard library for writing, testing, and backtesting Credible Layer assertions. It provides the base assertion contract, the ph interface for PhEVM cheatcodes, trigger registration helpers, snapshot-read helpers, typed state-change helpers, and Forge test utilities.
For individual cheatcode signatures, see the Cheatcodes API Reference. For local assertion tests, see Testing Assertions.
Package and Configuration
credible-std is distributed as a Foundry library.
Backtesting helpers require
ffi = true in the relevant Foundry profile:
Core Contracts
Assertion Helpers
Assertion.sol provides internal helpers for registering when assertion functions run.
Legacy Trigger Helpers
Use these helpers for the launch-era trigger surface:Reshiram Trigger Helpers
Use these helpers for newer trigger types:registerFnCallTrigger pairs with ph.context() so an assertion can inspect the matched call’s selector and call range.
Fork and Snapshot Helpers
Reshiram assertions should prefer explicit snapshot IDs over deprecated fork-switching cheatcodes. ConstructForkId values explicitly:
ph.loadStateAt to read storage at those snapshots:
loadStateAt.
ERC20 Delta Helpers
ForkUtils.sol also includes ERC20 transfer-delta helpers:
State Change Helpers
StateChanges.sol converts ph.getStateChanges(...) from bytes32[] into typed arrays:
Address, Bool, and Bytes32.
Call Matching Helpers
Assertion.sol includes helpers for querying successful calls through the Reshiram call-matching precompile:
_matchingCalls when an assertion needs a bounded list of successful calls to a target selector.
Assertion Spec Helper
Register the desired assertion spec in the constructor:Testing Contracts
CredibleTest is the base contract for local Forge tests. It exposes cl.assertion(...), which registers an assertion against a target contract for the next transaction in a test.
CredibleTestWithBacktesting extends the local test base for historical transaction replay. It looks for credible-std/scripts/backtesting/transaction_fetcher.sh; CREDIBLE_STD_PATH overrides the default dependency lookup path.
Related Pages
Cheatcodes API Reference
Full PhEVM cheatcode signatures
Testing Assertions
How to test assertions locally
Backtesting Reference
Backtesting configuration and behavior
Write Your First Assertion
Build a first assertion with credible-std

