Skip to content

feat(blockchain): organizer as on-chain ticket admin + role-gated che… - #97

Merged
manoahLinks merged 1 commit into
mainfrom
feat/crypto-onchain-split
Jul 17, 2026
Merged

feat(blockchain): organizer as on-chain ticket admin + role-gated che…#97
manoahLinks merged 1 commit into
mainfrom
feat/crypto-onchain-split

Conversation

@manoahLinks

Copy link
Copy Markdown
Contributor

…ck-in

Sign createTicket from the organizer's Circle wallet so the organizer becomes the ticket's on-chain admin: the instant USDC payout target for non-refundable events, the mainAdmin who withdraws refundable balances, and the ticketAdminRole holder that gates check-in. Previously the treasury signed, making HostIT the admin.

  • CircleContractService.executeContract: optional walletId signer (defaults to treasury), recorded on the BlockchainTransaction row.
  • event-publish: resolve the organizer's ready wallet and sign createTicket with it; configure the on-chain fee as USDC (NGN price -> 6-dp USDC base units), replacing the ETH placeholder.
  • Fix the stale FeeType map to the deployed Base enum (USDC=5, NATIVE=2, ...); the Lisk-era map encoded USDC as USDT on-chain.
  • ticket-checkin: sign checkIn from the scanner's wallet (the role holder) instead of the treasury; guard missing scanner / unprovisioned wallet.

Phase 1 of the crypto real-time split: non-refundable events pay the organizer instantly on-chain via mintTicket; refundable events escrow until the refund window. Scanner-role delegation (addTicketAdmins) and the payout/refund legs are Phase 2.

Refs #37, #68

…ck-in

Sign createTicket from the organizer's Circle wallet so the organizer
becomes the ticket's on-chain admin: the instant USDC payout target for
non-refundable events, the mainAdmin who withdraws refundable balances,
and the ticketAdminRole holder that gates check-in. Previously the
treasury signed, making HostIT the admin.

- CircleContractService.executeContract: optional `walletId` signer
  (defaults to treasury), recorded on the BlockchainTransaction row.
- event-publish: resolve the organizer's ready wallet and sign
  createTicket with it; configure the on-chain fee as USDC (NGN price ->
  6-dp USDC base units), replacing the ETH placeholder.
- Fix the stale FeeType map to the deployed Base enum (USDC=5,
  NATIVE=2, ...); the Lisk-era map encoded USDC as USDT on-chain.
- ticket-checkin: sign checkIn from the scanner's wallet (the role
  holder) instead of the treasury; guard missing scanner / unprovisioned
  wallet.

Phase 1 of the crypto real-time split: non-refundable events pay the
organizer instantly on-chain via mintTicket; refundable events escrow
until the refund window. Scanner-role delegation (addTicketAdmins) and
the payout/refund legs are Phase 2.

Refs #37, #68
@manoahLinks
manoahLinks merged commit 2d77e57 into main Jul 17, 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.

1 participant