Skip to content

feat: resolve #253, #254, #255, and #256 - #344

Open
meetdarc-tech wants to merge 2 commits into
stellar-vortex-protocol:mainfrom
meetdarc-tech:feat/onchain-settlement
Open

feat: resolve #253, #254, #255, and #256#344
meetdarc-tech wants to merge 2 commits into
stellar-vortex-protocol:mainfrom
meetdarc-tech:feat/onchain-settlement

Conversation

@meetdarc-tech

Copy link
Copy Markdown

Resolves

Fixes #253
Fixes #254
Fixes #255
Fixes #256

Summary

Implements the Soroban on-chain intent settlement and event reconciliation flow across transaction execution, intent registration, event reconciliation, and ledger cursor persistence.

Changes

  • Build, simulate, assemble, sign, submit, and confirm Soroban contract transactions through StellarTxService.
  • Add lazy SignerService support using STELLAR_SIGNER_SECRET_KEY.
  • Register create_intent on-chain before persisting the intent, preventing partial local state after transaction failure.
  • Add intent_filled reconciliation with local intent updates and WebSocket broadcasts.
  • Add durable ledger cursor persistence in .data/soroban-event-cursor.json so polling resumes after restarts.
  • Add Soroban RPC wrappers and Nest module wiring for the new services.

Issue Details

#253: Stellar transaction execution

Adds the build, simulation, preparation, signing, submission, confirmation, bounded polling, and typed error flow for StellarTxService.invokeContract().

#254: On-chain intent registration

When ONCHAIN_INTENTS_ENABLED=true and SETTLEMENT_CONTRACT_ID is configured, create_intent is submitted before the intent is persisted locally. Failed transactions do not leave a half-created intent.

#255: Event reconciliation

intent_filled events update matching local intents, record fill metadata, and broadcast the corresponding WebSocket event. Unknown local intents are logged and ignored without stopping ingestion.

#256: Ledger cursor persistence

The next ledger cursor is persisted after each successful poll cycle and restored on startup. First boot intentionally falls back to the latest ledger when no cursor exists.

Configuration

Added support for STELLAR_SIGNER_SECRET_KEY alongside the existing Stellar network, Soroban RPC, and settlement contract configuration.

Validation

Tests and checks were intentionally skipped per request. No dependencies were installed and no downloads were performed.

Review Notes

The cursor uses a local JSON file because this repository does not currently contain a Prisma persistence layer. Multi-instance coordination remains outside the scope of this PR.

@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

@meetdarc-tech Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant