Token Standards
Urblock supports 10 token standards covering fungible tokens, NFTs, security tokens, and specialized use cases.
When to Use Which Standard
Do you need on-chain compliance (KYC/AML)?
├── Yes → ERC-3643 (T-REX)
└── No
├── Fungible token?
│ ├── Need governance voting? → ERC-20 Votes
│ ├── Need payment callbacks? → ERC-1363
│ ├── Need lowest gas costs? → ERC-20 Solady
│ └── Standard fungible → ERC-20
├── Non-fungible token?
│ ├── Must be non-transferable? → SBT
│ ├── Need lowest gas costs? → ERC-721 Solady
│ └── Standard NFT → ERC-721
└── Mixed fungible + NFT?
├── Need lowest gas costs? → ERC-1155 Solady
└── Standard multi-token → ERC-1155
Quick Reference
| Standard | Type | Key Feature | Use Case |
|---|---|---|---|
ERC20 | Fungible | Standard fungible | Currencies, utility tokens |
ERC20_VOTES | Fungible | Voting + delegation | Governance tokens, DAOs |
ERC721 | NFT | Unique tokens | Collectibles, art, real estate |
ERC1155 | Multi | Fungible + NFT | Games, mixed collections |
ERC3643 | Security | On-chain compliance | Regulated securities, RWA |
SBT | NFT | Non-transferable | Credentials, reputation |
ERC1363 | Fungible | Callback on transfer | Payments, subscriptions |
ERC20_SOLADY | Fungible | Gas-optimized ~40% | High-volume tokens |
ERC721_SOLADY | NFT | Gas-optimized ~45% | Large NFT collections |
ERC1155_SOLADY | Multi | Gas-optimized ~50% | Gaming items |
Fungible Tokens
ERC-20
The standard fungible token. Features: mint, burn, pause, transfer, approve.
await urblock.tokens.create({
name: "My Token", symbol: "MTK",
standard: "ERC20",
network: "polygon_amoy",
initial_supply: "1000000000000000000000000",
features: { mintable: true, burnable: true, pausable: true },
idempotency_key: "erc20-001",
});
ERC-20 Votes
ERC-20 with vote delegation for governance. Includes EIP-2612 Permit for gasless approvals. Required for Governor-based governance.
await urblock.tokens.create({
name: "DAO Token", symbol: "DAO",
standard: "ERC20_VOTES",
network: "polygon_amoy",
initial_supply: "1000000000000000000000000",
idempotency_key: "votes-001",
});
ERC-1363
Payable token — triggers a callback on the receiver when transferred, enabling "approve and call" in a single transaction.
await urblock.tokens.create({
name: "Payable Token", symbol: "PAY",
standard: "ERC1363",
network: "polygon_amoy",
initial_supply: "1000000000000000000000000",
idempotency_key: "erc1363-001",
});
Non-Fungible Tokens
ERC-721
Standard NFT with enumeration, URI storage, royalties (ERC-2981), and access control.
await urblock.tokens.create({
name: "Art Collection", symbol: "ART",
standard: "ERC721",
network: "polygon_amoy",
features: { mintable: true, burnable: true, pausable: true, royalty: true },
default_royalty: { receiver: "0x...", fee_basis_points: 500 },
idempotency_key: "erc721-001",
});
SBT (EIP-5192)
Soulbound Token — a non-transferable NFT. locked() always returns true. Transfers are blocked at the contract level.
await urblock.tokens.create({
name: "Certificate", symbol: "CERT",
standard: "SBT",
network: "polygon_amoy",
features: { mintable: true },
idempotency_key: "sbt-001",
});
Multi-Token
ERC-1155
Multi-token standard supporting both fungible and non-fungible token types in a single contract. Native batch operations.
await urblock.tokens.create({
name: "Game Items", symbol: "ITEM",
standard: "ERC1155",
network: "polygon_amoy",
features: { mintable: true, burnable: true, pausable: true },
idempotency_key: "erc1155-001",
});
Security Tokens
ERC-3643 (T-REX)
Regulated security token with on-chain compliance enforcement. Requires identity registry, compliance modules, and trusted issuers.
await urblock.tokens.create({
name: "Security Fund", symbol: "SEC",
standard: "ERC3643",
network: "polygon_amoy",
required_claim_topics: [1, 7],
idempotency_key: "erc3643-001",
});
Gas-Optimized (Solady)
Solady variants are ABI-compatible with their standard counterparts but use assembly-optimized implementations for lower gas costs.
| Original | Solady | Gas Savings |
|---|---|---|
ERC20 | ERC20_SOLADY | ~40% |
ERC721 | ERC721_SOLADY | ~45% |
ERC1155 | ERC1155_SOLADY | ~50% |
// Same API, less gas
await urblock.tokens.create({
name: "Efficient Token", symbol: "EFF",
standard: "ERC20_SOLADY",
network: "polygon_amoy",
initial_supply: "1000000000000000000000000",
idempotency_key: "solady-001",
});
Feature Flags
When deploying, you can enable/disable features (set at deploy, immutable):
| Feature | Description | Available For |
|---|---|---|
mintable | Allow minting new tokens | All standards |
burnable | Allow burning tokens | All standards |
pausable | Allow pausing transfers | All standards |
royalty | ERC-2981 royalties | ERC-721, ERC-1155 |
features: {
mintable: true,
burnable: true,
pausable: true,
royalty: true,
}
Next Steps
- Deploy Your First Token — start with any standard
- Advanced Token Features — SBT, ERC-1363
- Gas Optimization — Solady and batch strategies
- Security Tokens — T-REX compliance setup
- Tokens API — deploy, mint, transfer, and manage tokens