Erst is a specialized developer tool for the Stellar network, designed to solve the "black box" debugging experience on Soroban.
Status: Active Development (Pre-Alpha) Focus: Soroban Error Decoding & Transaction Replay
The primary goal of erst is to clarify why a Stellar smart contract transaction failed.
Currently, when a Soroban transaction fails on mainnet, developers receive a generic XDR error code. erst aims to bridge the gap between this opaque network error and the developer's source code.
Core Features (Planned):
- Transaction Replay: Fetch a failed transaction's envelope and ledger state from an RPC provider.
- Local Simulation: Re-execute the transaction logically in a local environment.
- Trace decoding: Map execution steps and failures back to readable instructions or Rust source lines.
Fetches a transaction envelope from the Stellar Public network and prints its XDR size (Simulation pending).
./erst debug <transaction-hash> --network testnet- Architecture Overview: Deep dive into how the Go CLI communicates with the Rust simulator, including data flow, IPC mechanisms, and design decisions.
- Project Proposal: Detailed project proposal and roadmap.
- Environment Variables: Complete reference for all configuration options and environment variables.
Stellar's soroban-env-host executes WASM. When it traps (crashes), the specific reason is often sanitized or lost in the XDR result to keep the ledger size small.
erst operates by:
- Fetching Data: Using the Stellar RPC to get the
TransactionEnvelopeandLedgerFootprint(read/write set) for the block where the tx failed. - Simulation Environment: A Rust binary (
erst-sim) that integrates withsoroban-env-hostto replay transactions. - Execution: Feeding the inputs into the VM and capturing
diagnostic_events.
For a detailed explanation of the architecture, see docs/architecture.md.
We are building this open-source to help the entire Stellar community.
Help shape the future of Erst! Vote on feature requests using GitHub Discussions:
- Browse and vote on Feature Requests
- Add a π reaction to features you'd like to see prioritized
- Submit your own ideas for community feedback
See our CONTRIBUTING.md for the full feature request process.
- Go 1.21+
- Rust (for building the simulator binary)
- Stellar CLI (for comparing results)
- Clone the repo:
git clone https://github.com/dotandev/hintents.git cd hintents - Build the Rust simulator:
cd simulator cargo build --release cd ..
- Run tests:
go test ./...
See docs/proposal.md for the detailed proposal.
- Phase 1: Research RPC endpoints for fetching historical ledger keys.
- Phase 2: Build a basic "Replay Harness" that can execute a loaded WASM file.
- Phase 3: Connect the harness to live mainnet data.
Erst is an open-source initiative. Contributions, PRs, and Issues are welcome.
Phase 9 introduces a stability and analytics-focused upgrade, including:
- Improved system reliability and error handling
- Enhanced analytics and telemetry support
- UX refinements across CLI and simulator
- Cross-environment consistency (local, Docker, CI)
Erst is an open-source initiative. Contributions, PRs, and Issues are welcome.
