Repository navigation
feat(rpc): implement a live HTTP transport over the official client #1
Description
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
Transportbacked bystellar-rpc-client, behind a non-default feature if it adds heavy dependencies. -
Map transport errors into
DevkitErrorwithout panicking.
Out of scope
-
New RPC methods beyond those already modeled.
-
Authentication or paid-provider specific behavior.
Technical guidance
-
Study the
stellar-rpc-clientAPI before implementing; adapt it to theTransporttrait. -
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
getHealthagainst 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
Ayinkx commentedon Oct 10, 2026
📋 Grainlify Application
@Ayinkx has applied to work on this issue as part of the Grainlify program.
Repo Maintainers: To accept this application, review their application or assign @Ayinkx to this issue.
Ayinkx01 commentedon Oct 28, 2026
Partially implemented on
mainin #133:devkit_rpc::HttpTransportprovides a bounded HTTP JSON-RPC transport used byrpc-health, with a finite timeout, disabled redirects, a response-size cap enforced before parsing, request-ID validation, and structured errors. It usesreqwestrather than the officialstellar-rpc-clientnamed in the original scope. Re-scoping this issue to official-client integration; markingstatus/needs-revision.docs: close completed issues and re-scope partial work (#135)