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:
- Accepts a
--network flag: testnet | futurenet | mainnet.
- Reads the source identity from
~/.config/soroban/identities/<name>.toml or a flag.
- Builds (
stellar contract build) each contract crate if not already built.
- Optimizes the WASM (
stellar contract optimize).
- Uploads the WASM, instantiates the contract, and captures the resulting contract ID.
- Wires inter-contract references (
stealth-sender.init(announcer_contract_id)).
- 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..."
}
}
- 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
Resources
Labels:
Stellar Wave,stellar,feature,tooling,drips,help-wantedTier: M (2–4 days)
Type: feature / tooling
Context
The EVM side has
evm/scripts/deploy.tsthat 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 manualsoroban-cliritual that depends on tribal knowledge.We need a reproducible, network-aware deployment script.
Scope
Build
contracts/stellar/scripts/deploy.ts(TypeScript viatsx/bun) — ordeploy.rsif you prefer the Stellar Rust SDK — that:--networkflag:testnet | futurenet | mainnet.~/.config/soroban/identities/<name>.tomlor a flag.stellar contract build) each contract crate if not already built.stellar contract optimize).stealth-sender.init(announcer_contract_id)).contracts/stellar/deployments/<network>.jsonwith:{ "network": "testnet", "deployer": "G...", "deployedAt": "2026-05-22T18:00:00Z", "contracts": { "stealthAnnouncer": "C...", "stealthRegistry": "C...", "stealthSender": "C...", "wraithNames": "C..." } }getDeployment('stellar')picks it up (or document the SDK PR that needs to follow).Bonus
--dry-runmode that prints planned operations without spending fees.--force.Acceptance criteria
deployments/futurenet.jsonchecked in.pnpm deploy:stellar -- --network futurenet).Resources
soroban-clireference: https://developers.stellar.org/docs/tools/cli/stellar-cli