Skip to content

feat(rpc): implement a live HTTP transport over the official client #1

Open

Description

@Ayinkx01

Problem

devkit-rpc defines a Transport trait and a mock, but there is no transport that actually talks to a Stellar RPC node.

Why this matters

Without a live transport the toolkit cannot perform real RPC-based workflows, which is a core part of the product.

Context

The official stellar-rpc-client crate (28.0.0-rc.1) exists; integrate it rather than writing a JSON-RPC client from scratch.

Scope

  • Implement a Transport backed by stellar-rpc-client, behind a non-default feature if it adds heavy dependencies.

  • Map transport errors into DevkitError without panicking.

Out of scope

  • New RPC methods beyond those already modeled.

  • Authentication or paid-provider specific behavior.

Technical guidance

  • Study the stellar-rpc-client API before implementing; adapt it to the Transport trait.

  • Keep the mock transport the default in tests; the live transport must be opt-in.

Relevant modules/files

  • crates/devkit-rpc/src/lib.rs

  • crates/devkit-rpc/Cargo.toml

Acceptance criteria

  • A live transport can call getHealth against a configured endpoint

  • Errors are structured and non-panicking

Tests required

  • Unit tests with a recorded/loopback server where feasible

  • A test asserting the transport is not used by default

Security considerations

The transport must only use validated Endpoints and must not log credentials.

Performance considerations

Reuse a single connection pool where the client allows it.

Documentation requirements

Document supported methods and the fact that live RPC is opt-in.

Dependencies

None.

Definition of done

Merged with tests passing and CI green.

Complexity recommendation

difficulty/high

Contribution guidelines

  • Assignment required before starting. Request assignment on this issue; do not open a pull request until a maintainer has assigned you.

  • Your pull request must include Closes #1.

  • Run the local gate before opening the PR:

    cargo fmt --all -- --check
    cargo clippy --all-targets --all-features -- -D warnings
    cargo test --all
    
  • Example commit message: feat(rpc): implement a live HTTP transport over the official client

  • Suggested timeframe: complete within the active Wave cycle.

  • Complexity is tagged with a difficulty/* label. Drips determines the applicable points and budget through its own system.

  • See docs/WAVE.md and CONTRIBUTING.md.

Activity

  1. Ayinkx commented on Oct 10, 2026

    @Ayinkx
    Contributor

    📋 Grainlify Application

    @Ayinkx has applied to work on this issue as part of the Grainlify program.

    Hi would like to work on this one


    Repo Maintainers: To accept this application, review their application or assign @Ayinkx to this issue.

  2. Ayinkx01 commented on Oct 28, 2026

    @Ayinkx01
    ContributorAuthor

    Partially implemented on main in #133: devkit_rpc::HttpTransport provides a bounded HTTP JSON-RPC transport used by rpc-health, with a finite timeout, disabled redirects, a response-size cap enforced before parsing, request-ID validation, and structured errors. It uses reqwest rather than the official stellar-rpc-client named in the original scope. Re-scoping this issue to official-client integration; marking status/needs-revision.

  3. added and removed on Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions