Fungible Token
Simple fungible token with fixed or unlimited supply and configurable mint/transfer approvals
Category: Token Types
Summary
Required standards: ["Fungible Tokens"]
validTokenIds: MUST be exactly [{ "start": "1", "end": "1" }] (single token ID)
All tokens share the same token ID (1), making them interchangeable
Amount field in transfers determines quantity
Token metadata must reference token ID 1
Ownership times typically forever: [{ "start": "1", "end": "18446744073709551615" }]
Instructions
Fungible Token Configuration
When creating a fungible token collection, you MUST follow these requirements:
Required Configuration
validTokenIds: Set to exactly [{ "start": "1", "end": "1" }]
This ensures only token ID 1 is valid
This is the standard pattern for fungible tokens
Standards: Include "Fungible Tokens" in the standards array
Example: "standards": ["Fungible Tokens"]
Token Metadata: Each tokenMetadata entry must reference token ID 1
Example: "tokenIds": [{ "start": "1", "end": "1" }]
Supply Tracking with approvalAmounts
Fungible tokens use approvalAmounts (NOT predeterminedBalances) to track minting supply:
overallApprovalAmount: total supply cap (use "0" for unlimited)
perInitiatedByAddressApprovalAmount: max per user (use "0" for unlimited)
IMPORTANT: predeterminedBalances and approvalAmounts are INCOMPATIBLE β fungible tokens use approvalAmounts, NOT predeterminedBalances
Pattern-Specific Gotchas
All tokens share the same token ID (1), making them interchangeable
Amount field in transfers determines quantity (e.g., "amount": "100" means 100 tokens)
Ownership times are typically forever: [{ "start": "1", "end": "18446744073709551615" }]
Common Mistakes
DON'T use predeterminedBalances for fungible tokens β use approvalAmounts instead. They are incompatible.
DON'T use numbers instead of strings for amounts β use "1000" not 1000. All numeric values must be string-encoded.
DON'T forget autoApproveAllIncomingTransfers: true in defaultBalances β without it, recipients cannot receive tokens on public-mint collections.
DON'T forget overridesFromOutgoingApprovals: true on Mint approvals β required for all fromListId: "Mint" approvals.
DON'T use multiple token IDs β fungible tokens must use exactly one token ID [{ "start": "1", "end": "1" }].
Example Structure
Last updated