Skip to Content
shapekit

Introduction

A test kit for software that reads the Stellar ledger: a corpus of rare but valid XDR shapes produced by a real stellar-core, a replay harness that feeds them to an indexer, a conformance runner that feeds them to the JavaScript, Go and Rust SDKs, a linter for Go indexer code, and an indexer-hardening guide.

Indexers and SDKs keep breaking on shapes that are valid but rare: signed-payload signers, muxed accounts, deep Soroban authorization trees, trustlines created by the Stellar Asset Contract, maps whose keys collide after conversion. Each team finds the same bugs on its own. shapekit is the shared set of those shapes plus the tools to run them. It is built in response to the SDF RFP "XDR/CAP-Coverage Audit Tool and Indexer-Hardening Guide", and covers protocol 30 (stellar-core 30.0.0, stellar-xdr v30.0).

The dated log of what has landed is STATUS.md.

What is in it

PartWhereDocumentation
Corpus: XDR files plus a language-neutral manifest with expected decoded values, generated under both the testnet and mainnet passphrases, checked against stellar-core's --check-lcm goldenscorpus/coverage per CAP, adding a shape
Generator: recipes recorded on a private standalone stellar-corecrates/shapekit-gen, crates/shapekit-core-driveradding a shape
Replay harness and the wallet-backend reference adaptercrates/shapekit-harness, adapters/adapter interface, replay server
SDK conformance runner and the Rust, Go and JavaScript testeescrates/shapekit-conformance, testees/, conformance/testee protocol, running it in an SDK's CI
Linter for Go indexers built on go-stellar-sdklint/indexerlint
Indexer-hardening guide, written for developers.stellar.org; a draft until a stellar-core or platform engineer has reviewed it (see the publication gate in STATUS.md)docs/guide/the guide
Findings from running the corpusfindings/
CI, releases, maintenance.github/workflows/infrastructure, maintenance, protocol upgrade runbook, security policy

Infrastructure and privacy

shapekit collects no telemetry. The few commands that use the network, and everything the project runs on, are listed in docs/infrastructure.md.

Maintenance

Maintained by ErenTopaal through the first protocol upgrade after delivery (protocol 31). The rules for changes, triage and how SDKs pin corpus releases are in docs/maintenance.md.

License

Apache License 2.0, see LICENSE and NOTICE.

This page is generated from README.md in the repository.

On this page