abstract
Sphincs Sigil is an NFT-first mint protocol. A user proves control of a SPHINCS- key by producing a post-quantum signature over their recipient address. The Sigil Attestation Engine verifies the signature and returns an EIP-712 attestation. The on-chain gate verifies that attestation and mints one ERC-721 proof NFT.
Each NFT can later be burned through the redeemer to release exactly 1,000 SIGIL ERC-20 tokens. This separates proof collection from token release, keeps the audit object visible, and prevents unused attestations from reserving NFT token ids.
1. components
| NFT | SphincsSigilNFT, ERC-721 + ERC721Enumerable |
| Gate | MintGateNFT, verifies EIP-712 attestations |
| Redeemer | SphincsSigilRedeemer, burns NFTs and releases ERC-20 |
| Token | SphincsSigilToken, capped ERC-20 named SIGIL |
2. supply
| Max NFT mints | 10,000 |
| Redeem per NFT | 1,000 SIGIL |
| NFT redeemable supply | 10,000,000 SIGIL |
| LP reserve | 10,000,000 SIGIL, minted at deployment |
| Team reserve | 1,000,000 SIGIL, minted at deployment |
| Max ERC-20 supply | 21,000,000 SIGIL |
| Mint price | 0.0025 ETH per NFT |
3. mint flow
- User generates a SPHINCS- keypair.
- User signs
domain || pkHash || recipient. - Sigil Attestation Engine verifies the SPHINCS- signature off-chain.
- Sigil Attestation Engine signs
MintNFTAttestation(pkHash, sigHash, recipient, deadline). - User calls
MintGateNFT.mint(attestation)with0.0025 ETH. - The contract assigns
tokenId = mintsDone + 1and mints the NFT.
4. nft fields
Each NFT stores the following audit fields:
pkHash: hash of the SPHINCS- public keysigHash: hash of the SPHINCS- signatureartSeed: deterministic seed derived from collection seed and token idmetadataHash: deterministic metadata commitment derived the same wayslope: fixed redeem amount, currently 1,000 SIGIL
5. redeem flow
A holder calls SphincsSigilRedeemer.redeem(tokenId). The redeemer checks ownership, asks the NFT contract to burn the NFT, then mints slope SIGIL to the holder. The NFT is gone after redemption, but its stored audit fields remain available on-chain.
6. security model
- Recipient is bound into both the SPHINCS- message and EIP-712 attestation.
- Each
pkHashcan mint only once. - Unused attestations do not consume token ids.
- The gate enforces
MAX_MINTS. - The token enforces
MAX_SUPPLY. - Fees are forwarded immediately to the configured dev address.
7. metadata
tokenURI(tokenId) resolves to BASE_URI + tokenId + ".json". Marketplaces can index the collection through normal ERC-721 transfer events and metadata fetches. Metadata assets are managed outside this contract.