Releases: ACTA-Team/did-stellar
Release list
v0.1.0 — did:stellar SDK + HTTP resolver
Official implementation of the did:stellar v0.1 method
for the Stellar network.
What's live
| Component | URL | Status |
|---|---|---|
| HTTP Resolver | did.acta.build |
✅ Live |
| npm SDK | @acta-team/did-stellar |
✅ Published |
| Testnet contract | CB7ATU7SF5QUKJMSULJDJVWJZVDXC23HTZX6NFUDTSFPVT6MA575NNZJ |
✅ Deployed |
Try it now
Resolve a DID (no install needed):
curl https://did.acta.build/1.0/identifiers/did:stellar:testnet:znfxngsh46vkyqu6inrx4omphiInstall the SDK:
npm install @acta-team/did-stellarResolve from code (no HTTP service dependency):
import { resolveDidStellar } from '@acta-team/did-stellar';
const { didDocument } = await resolveDidStellar(
'did:stellar:testnet:znfxngsh46vkyqu6inrx4omphi'
);DIF Universal Resolver driver:
import { Resolver } from 'did-resolver';
import { getResolver } from '@acta-team/did-stellar/resolver';
const resolver = new Resolver({ ...getResolver() });
const result = await resolver.resolve('did:stellar:testnet:znfxngsh46vkyqu6inrx4omphi');Packages
@acta-team/did-stellar — the SDK
TypeScript SDK for did:stellar v0.1. Works in Node.js and browsers.
Trust-minimised: reads directly from Stellar RPC — no ACTA-hosted
service required.
- Identifier primitives —
generateDidId,parseDidStellar,buildDidStellar,isValidDidStellar - W3C DID Document builder — matches spec vectors A.1–A.3 byte-for-byte
- Direct Stellar RPC resolver —
resolveDidStellar()viagetLedgerEntries(free, no tx fee) - DIF
did-resolverdriver —getResolver()for multi-method apps - Prepare / submit XDR helpers —
prepareRegisterDidXdr,prepareUpdateDidXdr,prepareTransferControllerXdr,prepareDeactivateDidXdr,submitSignedXdr - Proof of Control — RFC 8785 JCS + Ed25519 signature verification (±5 min window, pluggable nonce dedup)
- React hook —
useDid()via@acta-team/did-stellar/hooks - Typed errors —
DidError+DidErrorCodeunion (30+ codes covering every on-chainRegistryError) - Multikey codec — Ed25519 (
z6Mk...) + X25519 (z6LS...) - Dual ESM/CJS + .d.ts — tree-shakeable, resolver-only consumers pull ~15 KB
did.acta.build — the HTTP resolver service
Standalone Express 5 server wrapping the SDK. Deployed at
did.acta.build. Trust-minimised: no
auth, no key custody. Stateless. Designed for
DIF Universal Resolver listing.
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/health |
Liveness probe |
GET |
/openapi.json |
OpenAPI 3.1 spec |
GET |
/1.0/identifiers/{did} |
DIF resolver — W3C DID Document |
GET |
/v1/dids/stellar/{did} |
Raw DidRecord |
POST |
/v1/dids/stellar |
Register DID |
PATCH |
/v1/dids/stellar/{did} |
Update DID |
POST |
/v1/dids/stellar/{did}/transfer |
Transfer controller |
POST |
/v1/dids/stellar/{did}/deactivate |
Deactivate (irreversible) |
POST |
/v1/dids/stellar/submit |
Submit signed XDR |
Features: content negotiation (did+ld+json / did+json), resolver
cache (30s Redis or in-memory), per-IP rate limit with
X-RateLimit-* headers, X-Request-ID correlation, helmet +
CORS, graceful shutdown, multi-stage Dockerfile.
On-chain verification
The full lifecycle (generate → register → resolve → read) was validated
against testnet. Reference transaction:
9c3234a8a9c9b3cc9a24fa7751cd4a4cfda167763343fa5a9888388d4a57119c — ledger 2,661,630
The DID registered in that transaction
(did:stellar:testnet:znfxngsh46vkyqu6inrx4omphi) is permanently
resolvable via:
- SDK:
resolveDidStellar('did:stellar:testnet:znfxngsh46vkyqu6inrx4omphi') - HTTP:
GET https://did.acta.build/1.0/identifiers/did:stellar:testnet:znfxngsh46vkyqu6inrx4omphi
Tested
- 93 unit + integration tests (54 SDK + 39 API)
- Spec vectors A.1, A.2, A.3 verified byte-for-byte
- End-to-end smoke test against live testnet contract (reproducible via
examples/smoke-testnet) - ESLint strict-type-checked, zero
any, zero@ts-ignore
Links
| Resource | URL |
|---|---|
| npm | @acta-team/did-stellar |
| HTTP resolver | did.acta.build |
| Method spec | did:stellar v0.1 |
| Registry contract (testnet) | CB7ATU7SF5...NNZJ |
| OpenAPI spec | did.acta.build/openapi.json |
| Full changelog | CHANGELOG.md |