|
| 1 | +# Zora Token Community Claim Contract |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +The Zora Token Community Claim contract enables secure token distribution to community members. It provides a simple way for users to claim their allocated tokens directly or delegate the claim to another address using signatures. |
| 6 | + |
| 7 | +## Key Features |
| 8 | + |
| 9 | +### Immutability |
| 10 | + |
| 11 | +- The token claim contract is immutable. |
| 12 | +- An admin can set token allocations until the claim period starts. Once the claim period starts, token allocations cannot be modified. Tokens cannot be retrieved by the admin and the claim period is indefinite. |
| 13 | +- Allowed wallets can claim their allocated tokens directly or delegate the claim to another address using signatures. |
| 14 | +- Any unclaimed tokens remain in the community claim contract indefinitely. |
| 15 | +- Tokens can only be transferred out via successful claims - neither the admin nor the Zora token contract can withdraw them. |
| 16 | + |
| 17 | +### Two-Phase Distribution |
| 18 | + |
| 19 | +1. **Setup Phase (Before Claim Period)** |
| 20 | + |
| 21 | + - Claim contract is deployed with immutable parameters: admin address and Zora token contract. |
| 22 | + - Admin can set token allocations. An allocation is a pair of address and amount. |
| 23 | + - Claim contract is transferred the entire community allocation. |
| 24 | + - Once transferred, tokens are locked in the contract until claimed by allocated addresses. |
| 25 | + |
| 26 | +2. **Claim Phase** |
| 27 | + - Begins at predetermined timestamp |
| 28 | + - Users can claim their allocated tokens |
| 29 | + - Each address can only claim once |
| 30 | + - Allocations cannot be modified during this phase |
| 31 | + |
| 32 | +### Flexible Claiming Methods |
| 33 | + |
| 34 | +1. **Direct Claim** |
| 35 | + |
| 36 | + - User calls claim function directly to claim their allocation |
| 37 | + - Can specify a different address to receive the tokens |
| 38 | + - Claimed tokens are transferred to the recipient address |
| 39 | + |
| 40 | +2. **Signature-Based Claim** |
| 41 | + - User signs a message off-chain (EIP-712 format) that includes the recipient address for their allocation |
| 42 | + - Anyone can submit the signed message to claim on user's behalf |
| 43 | + - Supports both EOA and smart wallet signatures |
| 44 | + - Includes deadline to limit signature validity period |
| 45 | + - Enables gas-less claiming and delegation |
| 46 | + - Signatures cannot be reused (allocation is cleared after claim) |
0 commit comments