Implement private NFT claims - #84
Draft
tindzk wants to merge 1 commit into
Draft
Conversation
tindzk
force-pushed
the
feat/tn-ring-nfts
branch
from
August 31, 2026 19:35
d658ff9 to
b5ae24e
Compare
tindzk
force-pushed
the
feat/tn-ring-nfts
branch
from
August 31, 2026 19:41
b5ae24e to
5105472
Compare
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.
A public NFT claim proves a Merkle leaf built from the claimant, so the mint is tied to the player
who earned it. Add a path where a claim proves ring VRF membership of the claimants that registered
for a game: the proof shows that some registrant earned the credit, but not which one.
A game opts in at scheduling time and is then private only. Each claimant registers a one-time ring
VRF key on the People chain for a credit price, and the offchain worker builds one ring over the
registered keys once registration closes. The ring goes to the claims chain over XCM, where a
claimant submits one
claim_privateper slot the game grants. Each proof runs under a contextderived from
(game_index, slot), and the alias it yields is the nullifier that spends that slot.claim_privatecarries no signer and pays no fee: two claims from one fee payer are two claims byone member. The proof authorizes the call and
MaxPrivateClaimsPerBlockcaps the verifications oneblock runs. A ring's claims run in one window, which opens
PrivateClaimDelayafter the ringarrives and closes
PrivateClaimWindowlater, and a member who misses it mints nothing.A game that too few claimants registered for, or whose ring fails to build, is abandoned. Its
credits mint over the public path instead.