Skip to content

Cross-chain: Orchestra receive - #964

Draft
dangeross wants to merge 1 commit into
mainfrom
savage-orchestra-receive
Draft

Cross-chain: Orchestra receive#964
dangeross wants to merge 1 commit into
mainfrom
savage-orchestra-receive

Conversation

@dangeross

@dangeross dangeross commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Adds Orchestra-backed cross-chain receive: external chain → Spark (BTC sats or USDB). Companion to the existing cross-chain send.

What's new

  • New ReceivePaymentMethod::CrossChain { route, amount, destination, fee_mode, max_slippage_bps, target_overpay_bps } variant.
  • amount is denominated in USDB base units (6-decimal) regardless of destination or fee mode ($1 = 1_000_000), so callers never touch destination decimals. FeesExcluded (default) treats it as the receiver's net target and the SDK sizes the sender's deposit. FeesIncluded treats it as the deposit and the receiver lands amount − fees.
  • destination auto-picks the wallet's active stable-balance token if the route supports it, otherwise Bitcoin. Explicit values must appear in route.accepted_assets.
  • ReceivePaymentResponse.cross_chain_info carries the deposit amount, expected received amount, destination denomination, provider fee (service_fee_amount + service_fee_asset, symmetric with the send-side field), and quote expiry.
  • New CrossChainService::prepare_receive trait method. Orchestra implements it; Boltz returns InvalidInput.

Breaking changes

Two enums and two CrossChainRoutePair fields are renamed so the names read naturally from both send and receive:

  • SourceAssetSparkAsset (enum)
  • SourceChainDeliveryMethod (enum)
  • CrossChainRoutePair.supported_sourcesaccepted_assets
  • CrossChainRoutePair.supported_source_chainsdelivery_methods

Renames propagate through UniFFI / wasm-bindgen / FRB, so downstream integrators referencing the old names will need to update.

Notes

  • USDB-denominated amount is a deliberate choice (integrator ergonomics over per-token decimals) but diverges from prepare_payment_link, which uses destination-native units. Worth reviewer input.

@dangeross
dangeross force-pushed the savage-orchestra-receive branch 2 times, most recently from 0db11be to 63c87f8 Compare June 23, 2026 16:25
Base automatically changed from daniel-boltz-cross-instance-recovery to main June 24, 2026 06:56
@dangeross
dangeross force-pushed the savage-orchestra-receive branch 2 times, most recently from fe4cc3f to 682b1e8 Compare June 25, 2026 12:57
@dangeross
dangeross force-pushed the savage-orchestra-receive branch from 682b1e8 to a71015e Compare July 13, 2026 10:49
@dangeross
dangeross force-pushed the savage-orchestra-receive branch 2 times, most recently from 446e300 to 391e507 Compare August 26, 2026 08:28
@dangeross
dangeross force-pushed the savage-orchestra-receive branch from 391e507 to 51da2b2 Compare August 28, 2026 10:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant