Skip to main content
Thank you for your interest in contributing to Erst! We welcome contributions from the community to help make Stellar debugging better for everyone.

What is Erst?

Erst is a specialized developer tool for the Stellar network, designed to solve the “black box” debugging experience on Soroban. The primary goal is to clarify why a Stellar smart contract transaction failed by:
  • Fetching and replaying failed transactions
  • Simulating transactions in a local environment
  • Mapping execution failures to readable instructions and source code
  • Providing error suggestions for common Soroban errors

Project structure

Erst consists of two main components:
  1. Go CLI (cmd/erst): The user-facing command-line tool
  2. Rust Simulator (simulator/): The core logic that replays transactions using soroban-env-host

Prerequisites

Before you begin, ensure you have the following installed:
  • Go: Version 1.24.0 or later
  • Rust: Version 1.70 or later (stable toolchain)
  • Stellar CLI: For comparing results
  • make: For running development tasks
  • (Optional) Docker: If you prefer building in a container

Getting started

1

Fork and clone the repository

Fork the repository on GitHub, then clone your fork locally:
git clone https://github.com/your-username/hintents.git
cd hintents
2

Install dependencies

Download Go dependencies and fetch Rust crates:
go mod download
cd simulator && cargo fetch && cd ..
3

Build the Rust simulator

The simulator must be built first because the Go CLI depends on it:
cd simulator
cargo build --release
cd ..
The binary will be located at simulator/target/release/erst-sim
4

Build the Go CLI

Build the command-line interface:
go build -o erst cmd/erst/main.go
Verify it works:
./erst --help
5

Run tests

Ensure everything is working by running both test suites:
go test ./...

Feature requests and voting

We believe the community should drive the project’s priorities.

Requesting a new feature

  1. Check existing requests: Browse GitHub Discussions under “Feature Requests” to see if someone has already suggested it
  2. Create a discussion: If your idea is new, start a discussion with:
    • A clear, descriptive title
    • The problem or use case you’re trying to solve
    • Your proposed solution or approach
    • Any relevant examples or context
  3. Engage with the community: Respond to questions and feedback to help refine the idea
If GitHub Discussions are not enabled, open a GitHub Issue with the feature-request label instead.

Voting on features

  • Use reactions: Vote for features you’d like to see by adding a 👍 reaction to the original discussion post
  • Avoid “+1” comments: Please use reactions instead of comments to keep discussions focused
  • Priority ranking: Features with the most 👍 reactions will be prioritized in the development roadmap

From discussion to implementation

  1. Popular feature requests will be reviewed by maintainers and converted into GitHub Issues when approved
  2. Approved issues will be labeled with feature and community-requested
  3. You’re welcome to implement features yourself! Comment on the issue to let others know you’re working on it
  • Be specific: Vague requests are hard to implement
  • Explain the “why”: Help us understand the problem you’re solving
  • Consider scope: Smaller, focused features are easier to review and merge
  • Think about compatibility: How does this fit with Stellar/Soroban’s ecosystem?

Getting help

  • Questions? Open a GitHub Discussion
  • Found a bug? Create an Issue with reproduction steps
  • Have an idea? Start a Discussion before implementing
  • Documentation issue? Create an Issue with details

Next steps