Skip to content

Stellar deployment script (testnet / futurenet / mainnet) #7

@truthixify

Description

@truthixify

Labels: Stellar Wave, stellar, feature, tooling, drips, help-wanted
Tier: M (2–4 days)
Type: feature / tooling

Context

The EVM side has evm/scripts/deploy.ts that deploys all five Solidity contracts in order and writes addresses to a deployments file. The Stellar side has no equivalent. Every deploy today is a manual soroban-cli ritual that depends on tribal knowledge.

We need a reproducible, network-aware deployment script.

Scope

Build contracts/stellar/scripts/deploy.ts (TypeScript via tsx/bun) — or deploy.rs if you prefer the Stellar Rust SDK — that:

  1. Accepts a --network flag: testnet | futurenet | mainnet.
  2. Reads the source identity from ~/.config/soroban/identities/<name>.toml or a flag.
  3. Builds (stellar contract build) each contract crate if not already built.
  4. Optimizes the WASM (stellar contract optimize).
  5. Uploads the WASM, instantiates the contract, and captures the resulting contract ID.
  6. Wires inter-contract references (stealth-sender.init(announcer_contract_id)).
  7. Writes contracts/stellar/deployments/<network>.json with:
    {
      "network": "testnet",
      "deployer": "G...",
      "deployedAt": "2026-05-22T18:00:00Z",
      "contracts": {
        "stealthAnnouncer": "C...",
        "stealthRegistry": "C...",
        "stealthSender": "C...",
        "wraithNames": "C..."
      }
    }
  8. Re-emits the deployments file to the SDK so getDeployment('stellar') picks it up (or document the SDK PR that needs to follow).

Bonus

  • A --dry-run mode that prints planned operations without spending fees.
  • Idempotency: if a deployment file already exists for the target network, refuse to overwrite without --force.
  • Verification step that calls a read-only function on each freshly deployed contract and confirms a sane response.

Acceptance criteria

  • Script runs cleanly against futurenet end-to-end in CI (or in a documented manual run).
  • deployments/futurenet.json checked in.
  • README updated with usage examples (pnpm deploy:stellar -- --network futurenet).
  • Failure modes documented (insufficient balance, missing identity, RPC rate limits).

Resources

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programdripsFunded via Drips NetworkfeatureNew feature workhelp wantedExtra attention is neededstellarTouches Stellar / Soroban codetoolingBuild / tooling work

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions