IPT
IP Token (IPT) Contract Documentation
Overview
An IP Token (IPT) is a fungible ERC-20 token representing a fractional claim tied to a Lab. Each tokenized Lab has exactly one IPT, deployed by the OclTokenizer as an EIP-1167 clone of the LabToken contract on Base. IPT holders gain economic exposure to the Lab and participate in its community β while control of the token's supply always follows the Lab's current owner.
Contract Details
Contract
LabToken (EIP-1167 clone per Lab)
Standard
ERC-20 (Burnable)
Owner
The OclTokenizer, which enforces lab-controller rules
Decimals
18
Chain
Base (8453) / Base Sepolia (84532)
Solidity
0.8.33
License
MIT
Clone templates: Base mainnet 0xd13a5D5ab80c15c344aA0eAa36f16ABae940dB0c, Base Sepolia 0x8038d3B220C635b3B7A7B4bcba0928a2D5B0B8F6. Each Lab's IPT is a distinct clone with its own address β resolve it via OclTokenizer.tokenized(labId).
Naming & Metadata
The token name is derived automatically at tokenization β Lab Tokens of Lab #<labId> β and the symbol is chosen by the Lab's controller. Every IPT carries onchain metadata linking it to its origin:
struct Metadata {
uint256 labId; // the LabNFT tokenId this IPT derives from
address originalOwner; // the Lab controller at tokenization time
string s3Key; // membership agreement document key
bytes32 contentHash; // SHA-256 of the agreement, binding terms to exact bytes
}uri() returns contract-level metadata as a base64 data URL (ERC-1155-compatible format), so explorers and integrations can render the token's Lab context without an offchain service.
Supply Model
Issuance β new tokens are minted via
issue(receiver, amount), callable only by the tokenizer or the Lab's current controller.totalIssuedtracks everything ever minted (it can exceed the live supply, since tokens are burnable).Capping β
cap()permanently freezes issuance. It is irreversible and idempotent (calling it again simply re-emitsCapped). Once capped,issuerevertsTokenCapped()forever, giving holders supply certainty.Burning β any holder can
burntheir own tokens (orburnFromwith allowance), reducing live supply.Transfers β standard ERC-20 transfers; there are no onchain transfer restrictions.
Because the contract's owner is the OclTokenizer and controller checks resolve live against LabNFT.ownerOf, supply authority moves automatically with the Lab: transfer the LabNFT and the new owner controls issue/cap immediately.
Functions
Events & Errors
Capped(uint256 atSupply)β issuance frozen attotalIssuedStandard ERC-20
Transfer/ApprovalTokenCapped()β issuance attempted after cappingMustControlLab()β caller is neither the tokenizer nor the Lab's controller
Wrapped IPTs (Bring Your Own Token)
A Lab can attach a pre-existing ERC-20 as its IPT instead of minting a new one. The tokenizer wraps it in a WrappedLabToken β a read-only decorator that carries the Lab's Metadata and uri() while delegating economics to the underlying token. issue and cap on a wrapped IPT revert: supply of the underlying token remains governed by its own contract.
Related Contracts
Tokenizer β deploys and controls IPTs
Molecule Labs β the Lab the IPT is tied to
Resources
Tokenization flow & API: Tokenization API
Last updated
Was this helpful?