Skip to content

PG Award Proposal: java-stellar-sdk#54

Merged
tupui merged 4 commits intomainfrom
proposals/java-stellar-sdk
Apr 21, 2026
Merged

PG Award Proposal: java-stellar-sdk#54
tupui merged 4 commits intomainfrom
proposals/java-stellar-sdk

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Apr 12, 2026

java-stellar-sdk

The Java Stellar SDK provides APIs to build transactions, query Horizon, and interact with Soroban
RPC, with Android support and implementations of several Stellar Ecosystem Proposals.

Category SDKs
Website https://github.com/lightsail-network/java-stellar-sdk
Repository https://github.com/lightsail-network/java-stellar-sdk
First Released November 2015
Intake soft-launch
Budget Requested 15000

Project Description

The Java Stellar SDK is a Java library for building Stellar applications on server-side JVM runtimes
and Android. It provides transaction building, Horizon API access, Soroban RPC support, high-level
Soroban smart contract support, and implements several Stellar Ecosystem Proposals. The SDK is listed
on the official Stellar developer documentation and is used by projects including Lobstr Vault,
Stellar Anchor Platform, and others.

Team & Experience

overcat (GitHub: overcat, Discord: @overcat.me) has been active in the
Stellar community since 2018 and has rich experience in Stellar-related development, maintaining a
series of Stellar infrastructure software. Currently maintained Stellar-related projects are listed
at https://lightsail.network.

Retroactive Impact

In Q1 2026, all planned deliverables were completed. The SDK shipped 3 releases (2.2.1 through
2.2.3), including a dedicated security hardening release (2.2.2) addressing XDR decoding
vulnerabilities and Federation client DoS vectors. The XDR code generator was migrated from xdrgen
into the SDK and substantially refactored. SEP-51 (XDR-JSON) support was implemented and validated
against the Rust Stellar CLI. ScMap key ordering was fixed to automatically follow Soroban runtime
rules.

Past Deliverables

1. Ongoing SDK Maintenance

Description from last quarter:

This deliverable covers all necessary improvements to ensure the SDK's long-term viability. It
includes resolving defects, implementing new features, refining code quality, and increasing test
coverage to guarantee the SDK remains a robust and dependable tool for developers.

Proof of completion:

Three releases shipped. Release 2.2.2 was a dedicated security hardening release: a comprehensive
audit was applied across the codebase, fixing XDR decoding vulnerabilities, Federation client DoS
vectors, and multiple input validation and thread-safety issues.

2. Add Support for SEP-51

Description from last quarter:

Add support for
SEP-51, enabling
developers to serialize XDR data into JSON. This simplifies integration with web services and
tooling, improves developer experience, and promotes consistent behavior across applications in the
Stellar ecosystem.

Proof of completion:

SEP-51 support was added to the XDR generator, so all generated XDR types automatically gain
toJson() / fromJson() methods. Output was cross-validated against the Rust Stellar CLI as a
reference implementation.

3. xdrgen Migration and Refactoring

Description from last quarter:

Migrate xdrgen into a dedicated repository and perform necessary refactoring to improve
maintainability and long-term sustainability of the SDK's tooling. This will strengthen the build
pipeline and make future protocol upgrades easier to support. ref:
https://github.com/orgs/stellar/discussions/1738

Proof of completion:

The XDR code generator was migrated from the external xdrgen tool into the SDK repository and
substantially refactored, giving full control over the generated Java code. Snapshot tests were added
to CI so any unintended output changes are caught automatically on future regeneration runs. During
the refactoring, several latent security issues in the generated XDR encoding/decoding code were
identified and fixed.

4. Improve the scval Build Feature

Description from last quarter:

Currently, when building a map, we require users to manually sort the keys. Enhance the scval build
functionality to automatically sort the keys of the map, thereby simplifying the developer
experience and reducing potential sources of errors.

Proof of completion:

Scv.toMap now automatically sorts map entries by key, matching the Soroban runtime's requirement
that ScMap keys be in ascending order. The previous toMap(LinkedHashMap<SCVal, SCVal>) overload
is deprecated. This eliminates a class of transaction failures that occurred when users provided
unsorted maps.

Proposed Impact

The primary goals for Q2 2026 are: achieve full Protocol 26 compatibility; implement SEP-46, SEP-47,
and SEP-48 to improve Soroban smart contract tooling interoperability; and publish an AI coding agent
skill to help developers build on Stellar more effectively. Ongoing maintenance will continue:
responding to community issues and pull requests, keeping dependencies and CI/CD pipelines current.

Proposed Deliverables

1. Continuous Maintenance and Improvement

Regular SDK updates addressing Horizon, Soroban RPC, and protocol changes (including Protocol 26),
bug fixes, feature requests, and documentation updates. Keep CI/CD pipelines and dependency updates
current.

Proof: Release notes on GitHub, updated CHANGELOG, passing CI on master.

2. SEP-46, SEP-47, and SEP-48 Support

Add support for SEP-46 (Contract Meta), SEP-47 (Contract Interface Discovery), and SEP-48 (Contract
Interface Specification). These three SEPs form the foundation for smart contract self-description:
SEP-46 defines how contracts embed metadata in Wasm custom sections, SEP-47 lets contracts declare
which SEPs they implement, and SEP-48 provides a rich interface specification including Soroban host
types, user-defined types, and event schemas. Together they enable the SDK to parse and expose
contract metadata, which is essential for tooling, auto-generated contract clients, and off-chain
systems that need to understand contract interfaces.

Proof: Release on GitHub, PRs with implementation and tests, documentation.

3. AI Coding Agent Skill

Publish an AI coding agent skill for the java-stellar-sdk following the agentskills.io open standard,
compatible with Claude Code, Codex CLI, Cursor, Gemini CLI, and others. The skill provides
token-efficient documentation and best practices for AI-assisted development with the SDK, lowering
the barrier for developers using AI tools to build on Stellar.

Proof: Skill available in the SDK repository, compatible with Claude Code, Codex CLI, Cursor, Gemini
CLI, and others.

Legal Acknowledgements

  • As the project representative, I agree to the Legal Acknowledgements.

@github-actions github-actions Bot added the pg-award-proposal PG Award proposal submission label Apr 12, 2026
@github-actions github-actions Bot mentioned this pull request Apr 12, 2026
1 task
Copy link
Copy Markdown
Member

@aolieman aolieman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Java ecosystem is never going away: it will survive anything the world throws at it. I have a love/hate relationship with the JVM — there's so much cool stuff that runs only in the JVM, but I'm always sad that I cannot take the JVM out of the tech stack 🥲

This SDK is clearly essential for server-side and client-side (Android) applications. It has a couple of high-profile ecosystem projects building on top of it, and through them the SDK has a large amount of transitive daily users. We have to keep supporting its maintenance.

I like to see that @overcat is leveraging the efficiency gains from maintaining two language SDKs. Each quarter there are clear focal points that are shared for the Java and Python SDKs. If these projects did not have a maintainer in common, we'd be spending more on their maintenance. Sure, the implementation work is always slightly different, but most of the work goes into thinking and planning, and this shows in the modest budget requests.

overcat added 2 commits April 21, 2026 17:27
Signed-off-by: Jun Luo <4catcode@gmail.com>
Signed-off-by: Jun Luo <4catcode@gmail.com>
Copy link
Copy Markdown
Contributor

@tupui tupui left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving from a process perspective 😃 Good luck during the voting phase! (The proposal will be merged today and appear on Tansu. In the future we might put the link directly in a comment here.)

@tupui tupui merged commit 7882a63 into main Apr 21, 2026
2 checks passed
@tupui tupui deleted the proposals/java-stellar-sdk branch April 21, 2026 13:40
@tupui tupui temporarily deployed to proposal-tansu April 21, 2026 13:40 — with GitHub Actions Inactive
@github-actions
Copy link
Copy Markdown
Contributor Author

Proposal Successfully Submitted to Tansu 🚀

The proposal has been uploaded to IPFS and submitted on-chain.

Tansu Link View on Tansu
PR #54
Proposal File docs/projects/java-stellar-sdk.md
Proposal ID 2
Proposal Title java-stellar-sdk
Proposal CID QmSfSxJT6h2fKbrAzo7Lp93kJwxTFy1Md5HUYccmPe7wL2
Discussion CID QmZ14PcArCQbCQArZxmRYyUH2CQVPSeoBLXuh8Tyc1i7F7
Voting Ends At 1777383650
Network testnet
Contract CBXKUSLQPVF35FYURR5C42BPYA5UOVDXX2ELKIM2CAJMCI6HXG2BHGZA
Project Key 682138d90ce10c7a6a28d194b222390598157be44c434c4b23b7d7bf6b4364cd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pg-award-proposal PG Award proposal submission

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants