feat(blockchain): crypto ticket settlement on-chain via mintTicket - #98
Merged
Conversation
Route crypto purchases through the paid `mintTicket` instead of the free `mintFiatTicket`: the buyer's own (gas-sponsored) wallet approves USDC and calls the Diamond, which splits revenue on-chain by `isRefundable` — instant to the organizer for non-refundable events, escrow for refundable — and mints the NFT to the buyer. Fiat purchases keep the free mint. - onchain-fees.ts: shared FeeType codes + organizer-bears fee helper (ticketFee = price * 10000/(10000+bps)) so the buyer pays the face price on both rails, mirroring the contract's integer fee math. - events publish + crypto-checkout consume the helper — single source of truth for the on-chain ticketFee and the deposit amount. - crypto-checkout: deposit = totalFee * quantity (exactly what mintTicket pulls per mint) instead of the raw NGN->USDC conversion. - CircleContractService: `approveErc20` for the USDC allowance leg + a non-persisting `pollUntilTerminal` for the untracked approve tx. - mint worker: read the authoritative on-chain totalFee, approve, then mintTicket signed by the buyer wallet; fiat path unchanged (treasury). Refs #96
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Route crypto purchases through the paid
mintTicketinstead of the freemintFiatTicket: the buyer's own (gas-sponsored) wallet approves USDC and calls the Diamond, which splits revenue on-chain byisRefundable— instant to the organizer for non-refundable events, escrow for refundable — and mints the NFT to the buyer. Fiat purchases keep the free mint.approveErc20for the USDC allowance leg + a non-persistingpollUntilTerminalfor the untracked approve tx.Refs #96