Skip to main content
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.
As of May 6, 2026, the latest credible-std exposes Reshiram helpers, but the v2 Reshiram spec is not live on Linea mainnet. Use Reshiram-only helpers for local or development workflows until Linea mainnet supports the spec.

Package and Configuration

credible-std is distributed as a Foundry library.
ItemValue
Repositoryphylaxsystems/credible-std
Stable dependencyphylaxsystems/[email protected]
Development dependencyphylaxsystems/credible-std
Foundry remappingcredible-std/=lib/credible-std/src/
Backtesting helpers require ffi = true in the relevant Foundry profile:

Core Contracts

ContractPurpose
Assertion.solBase contract for assertions. Inherits ForkUtils and StateChanges, exposes trigger helpers, fork ID constructors, call matching helpers, and assertion spec registration.
Credible.solProvides the inherited ph handle for calling the PhEVM precompile.
PhEvm.solInterface for PhEVM cheatcodes, including logs, call inputs, snapshot reads, mapping tracing, ERC20 transfer data, and protection-suite helpers.
TriggerRecorder.solInterface used by Assertion to register assertion triggers.
SpecRecorder.solDefines AssertionSpec and records whether an assertion uses Legacy, Reshiram, or Experimental precompile access.
StateChanges.solTyped helpers for legacy state-change arrays.
ForkUtils.solHelper functions for Reshiram-style snapshot reads and ERC20 balance delta workflows.
CredibleTest.solForge test base that exposes cl.assertion(...).
CredibleTestWithBacktesting.solTest base for replaying historical transactions against assertions.

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. Construct ForkId values explicitly:
Use ph.loadStateAt to read storage at those snapshots:
For packed storage or mappings, calculate the exact slot before calling loadStateAt.

ERC20 Delta Helpers

ForkUtils.sol also includes ERC20 transfer-delta helpers:
Use these helpers when an assertion needs to reason about ERC20 flows within a selected transaction or call snapshot.

State Change Helpers

StateChanges.sol converts ph.getStateChanges(...) from bytes32[] into typed arrays:
Each helper also has overloads for mapping keys and mapping keys with slot offsets:
The same overload pattern exists for Address, Bool, and Bytes32.

Call Matching Helpers

Assertion.sol includes helpers for querying successful calls through the Reshiram call-matching precompile:
Use _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:
Available specs:
SpecMeaning
LegacyStandard launch precompile set.
ReshiramNewer precompile set with explicit snapshot access and legacy-only fork-switching selectors disabled.
ExperimentalUnrestricted access to all available precompiles. May include untested or dangerous behavior.

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.

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