| icon | transformer-bolt |
|---|
The IP-NFT contract is an ERC-721 NFT that represents on-chain intellectual property ownership. Each IP-NFT is a unique token that enables trading, fractionalization into IPTokens, and use as collateral for funding. They form the foundation of the Molecule Protocol, linking legal IP rights with on-chain ownership.
- Contract: IPNFT v2.5.1
- Standard: ERC-721 (with URI Storage)
- Type: UUPS Upgradeable Proxy
- Solidity: 0.8.18
- License: MIT
- Ethereum Mainnet: 0xcaD88677CA8... (Start Block: 17463429)
- Sepolia Testnet: 0x152B444e60C5... (Start Block: 5300057)
- RESERVE:
reserve() - MINT:
mintReservation() - USE:
- Transfer/Trade
- Tokenize (IPT)
- Grant Access
- Sell via Swap
- Reserve + Mint: Call
reserve(), thenmintReservation(). - POI Mint (Direct): Use
mintReservation()with Proof of Idea hash.
reserve
Reserves a new token ID.
function reserve() external whenNotPaused returns (uint256 reservationId)mintReservation
Mints an IP-NFT using a reserved ID or POI hash.
{% code overflow="wrap" %}
function mintReservation(address to, uint256 reservationId, string calldata _tokenURI, string calldata _symbol, bytes calldata authorization) external payable whenNotPaused returns (uint256){% endcode %}
grantReadAccess
Grants time-limited read access to encrypted files.
function grantReadAccess(address reader, uint256 tokenId, uint256 until) externalamendMetadata
Updates the metadata URI of an IP-NFT.
{% code overflow="wrap" %}
function amendMetadata(uint256 tokenId, string calldata _newTokenURI, bytes calldata authorization) external{% endcode %}
canRead
Checks if an address has read access.
function canRead(address reader, uint256 tokenId) external view returns (bool)symbol
Returns the symbol of an IP-NFT.
function symbol(uint256 tokenId) external view returns (string memory)tokenURI
Returns the metadata URI.
function tokenURI(uint256 tokenId) public view returns (string memory)- Reserved: New token ID reserved
- IPNFTMinted: IP-NFT minted
- ReadAccessGranted: Read access granted
NotOwningReservation(uint256 id): Caller doesn't own the reservation.Unauthorized(): Caller not authorized.InsufficientBalance(): Caller doesn't own the IP-NFT.BadDuration(): Expiration in the past.MintingFeeTooLow(): Less than 0.001 ETH sent.ToZeroAddress(): Cannot transfer to zero address.
- Symbolic Fee: 0.001 ETH minting fee.
- Authorization: Required for all mints.
- Read Access Expiration: Time-limited.
- Pausable: Contract operations can be paused.
- UUPS Upgradeable: Owner-upgradable implementation.
- SYMBOLIC_MINT_FEE: 0.001 ETH
- MAX_RESERVATION_ID: 2^128 - 1
- Tokenizer.md: Fractionalize IP-NFTs into IPTokens.
- SchmackoSwap.md: Trade IP-NFTs.
- Access-Resolver.md: File access integration.
- Crowdsale.md: Fundraise via IPTokens.
- Source Code: GitHub
- ABI: Generated from the contract source in the IPNFT repository
- Audit: Audit Report