Programmable access rights and entitlements with on-chain verification and conditional execution
Claim Rights tokenize verifiable entitlements without requiring transferability or fungibility. Issue non-transferable credentials, membership access, subscription rights, or conditional entitlements that execute when specific on-chain conditions are met.
Claim Rights support ten distinct entitlement categories that map to common institutional requirements:
Claim Type
Use Case
Transferable
ACCESS
Building entry, system login, gated content
No
MEMBERSHIP
Club membership, loyalty programs, association rights
Optional
ENTITLEMENT
Benefits, perks, usage quotas
No
LICENSE
Software licenses, IP rights, operating permits
Restricted
SUBSCRIPTION
Service access, recurring entitlements
No
REWARD
Loyalty points, achievement badges, incentives
Optional
VOUCHER
Discount codes, gift certificates, promotional claims
Yes
TICKET
Event admission, seat reservations, access passes
Yes
CERTIFICATE
Credentials, certifications, proof of completion
No
CUSTOM
Institution-defined claim types with custom logic
Configurable
Each claim type inherits default behavior that issuers can override through rule modules. For example, TICKET claims enable transfer by default to support secondary markets, while LICENSE claims restrict transfers to approved parties only.
When a user attempts to execute a claim, the contract iterates through all attached modules in sequence. If any module returns false, the entire transaction reverts. This enables complex conditional logic like “claim requires both KYC verification AND minimum balance AND execution during business hours.”
Claims follow a two-step execution pattern that separates entitlement assignment from fulfillment:
Copy
// Step 1: Issuer creates claim rightawait claimRightFactory.createClaimRight({ name: "Premium Membership 2025", symbol: "MEMBER25", claimType: "MEMBERSHIP", metadataURI: "ipfs://Qm..." // Benefits description});// Step 2: User receives claim NFTawait claimRight.mint(userAddress);// Step 3: User executes claim to access benefitsconst success = await claimRight.executeClaim( tokenId, executionProof // Optional signature or merkle proof);// Contract validates all rule modules// External system reads on-chain execution event// Benefits activated in backend systems
Execution vs Transfer
Execution means using the claim for its intended purpose (accessing a service, redeeming a benefit). The NFT remains in the user’s wallet after execution unless the claim type specifies burn-on-use behavior.Transfer means moving the claim NFT to another address. Most claim types disable transfers to prevent unauthorized access. Enable transfers only for vouchers, tickets, or reward points that benefit from secondary markets.
Deploy Claim Rights through the Trusset dashboard or directly via the factory contract:
Factory Parameters
Copy
interface ClaimRightConfig { name: string; // Display name symbol: string; // Ticker symbol claimType: ClaimType; // Predefined or CUSTOM metadataURI: string; // IPFS or HTTPS link transferable: boolean; // Enable secondary markets burnsOnExecution: boolean; // Destroy after first use maxSupply: uint256; // Cap on total claims (0 = unlimited) kycRequired: boolean; // Require identity verification pausable: boolean; // Emergency stop capability}
All Claim Right contracts deploy as UUPS upgradeable proxies, enabling issuers to add new rule modules or fix bugs without redeploying. Users retain their claim NFTs through upgrades.
Issue non-transferable tickets as Claim Rights with time-locked execution. Users prove ownership to enter events without requiring centralized ticket validation systems.
Issue revocable software licenses that validate against on-chain subscription status. Revoke access instantly when subscriptions expire without modifying client software.
Claim Rights are experimental and have not undergone formal security audits. Use in production environments at your own risk. Thoroughly test rule module logic before deploying with real user entitlements.