> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/dotandev/hintents/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing to Erst

> Learn how to contribute to the Erst CLI project and help improve Stellar debugging for the community

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

<Steps>
  <Step title="Fork and clone the repository">
    Fork the repository on GitHub, then clone your fork locally:

    ```bash theme={null}
    git clone https://github.com/your-username/hintents.git
    cd hintents
    ```
  </Step>

  <Step title="Install dependencies">
    Download Go dependencies and fetch Rust crates:

    ```bash theme={null}
    go mod download
    cd simulator && cargo fetch && cd ..
    ```
  </Step>

  <Step title="Build the Rust simulator">
    The simulator must be built first because the Go CLI depends on it:

    ```bash theme={null}
    cd simulator
    cargo build --release
    cd ..
    ```

    <Note>
      The binary will be located at `simulator/target/release/erst-sim`
    </Note>
  </Step>

  <Step title="Build the Go CLI">
    Build the command-line interface:

    ```bash theme={null}
    go build -o erst cmd/erst/main.go
    ```

    Verify it works:

    ```bash theme={null}
    ./erst --help
    ```
  </Step>

  <Step title="Run tests">
    Ensure everything is working by running both test suites:

    <CodeGroup>
      ```bash Go tests theme={null}
      go test ./...
      ```

      ```bash Rust tests theme={null}
      cargo test --release -p erst-sim
      ```
    </CodeGroup>
  </Step>
</Steps>

## 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](https://github.com/dotandev/hintents/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

<Info>
  If GitHub Discussions are not enabled, open a [GitHub Issue](https://github.com/dotandev/hintents/issues) with the `feature-request` label instead.
</Info>

### 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

<Accordion title="Tips for great feature requests">
  * **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?
</Accordion>

## 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

<CardGroup cols={2}>
  <Card title="Code standards" icon="code" href="/contributing/code-standards">
    Learn about coding conventions and style guidelines
  </Card>

  <Card title="Testing" icon="flask" href="/contributing/testing">
    Understand testing requirements and how to write tests
  </Card>

  <Card title="Development workflow" icon="git-alt" href="/contributing/development-workflow">
    Follow the workflow for submitting pull requests
  </Card>
</CardGroup>
