Skip to content

Feat/crypto settlement - #106

Merged
manoahLinks merged 2 commits into
mainfrom
feat/crypto-settlement
Jul 19, 2026
Merged

Feat/crypto settlement#106
manoahLinks merged 2 commits into
mainfrom
feat/crypto-settlement

Conversation

@manoahLinks

@manoahLinks manoahLinks commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

closes #104
closes #105

Add an optional `chain` field to event creation, validated against the
active chain set (ACTIVE_CHAINS) rather than a hardcoded list. Omitted
selections fall back to the default chain, so existing callers are
unchanged. Expose GET /events/chains for the client picker. Chain is
persisted on the event and immutable after creation.

ACTIVE_CHAINS is the single source of truth for selectable chains — a
testnet-only prod (e.g. Base Sepolia) is a valid configuration.
Move from a single default-chain wallet to a desired-state model: every
non-admin user should have a DEVELOPER_CONTROLLED wallet on every chain in
ACTIVE_CHAINS. New WalletsService.ensureWalletsForActiveChains fills only
the missing chains (idempotent), pins primary to the default chain without
demoting an existing one, and skips admins.

Call it at register (all chains up front) and on login (fire-and-forget),
so users self-heal into any newly added chain with no backfill. The lazy
per-event-chain enqueue at checkout stays as a hard guarantee.

Fix the processor to resolve Circle's blockchain id via
getChain(chain).circleBlockchain instead of passing the raw chain, so any
active chain provisions correctly — not just Base Sepolia.

Adding a chain is now config-only: registry entry + env + a funded Gas
Station policy + restart.

Closes #105
@manoahLinks
manoahLinks merged commit 588aed7 into main Jul 19, 2026
3 checks passed
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.

Wallets: provision on every active chain (desired-state reconciliation) Events: organizer picks settlement chain at creation

1 participant