Stress-test governance proposals
before they execute_

FPS is a Foundry framework for simulating governance proposals from end-to-end, covering deployment scripts, calldata generation and post-execution validation. Catch bugs before they reach mainnet.


Governance is the single point of failure

[CRITICAL] Governance bugs cost protocols millions in locked or lost funds
[WARNING] Manual calldata encoding is error-prone and hard to review
[WARNING] No standard way to test proposals against live state pre-execution
[FPS] Simulate the full lifecycle. Validate transactions before you execute.

Three steps. Full coverage.

01

Write

Define proposal actions in Solidity using FPS's build() pattern. Deploy contracts, set parameters, transfer ownership. Write it like normal code.

$ function build() override { ... }
02

Simulate

FPS forks mainnet and simulates the full governance lifecycle (propose, vote, queue, execute) using Foundry cheat codes to bypass delays.

$ forge script proposals/MyProposal.sol
03

Validate

Automated checks verify post-execution state matches expectations. Confirm ownership, balances, and configuration before anything touches mainnet.

$ function validate() override { ... }

Get started

# Install FPS into your Foundry project
$ forge install solidity-labs-io/forge-proposal-simulator

# Set up remappings
$ echo @forge-proposal-simulator=lib/forge-proposal-simulator/ >> remappings.txt

# Create your addresses JSON and proposal contract (see docs)
# Then run it
$ forge script proposals/MyProposal.sol --fork-url $RPC_URL
86 GitHub Stars
17 Forks
6 Contributors
MIT License

Support FPS development

FPS is free, fully open source, and MIT licensed. It's built and maintained as a public good by Solidity Labs. If FPS has helped your protocol ship safer governance, consider supporting continued development.

100% of donations go directly to development.

Support on Giveth