Programmable IP Licenses (PIL)
When a SealedIP auction settles, the contract mints a PIL license token to
the winning bidder via LicensingModule.mintLicenseTokens. That token is
the actual artifact of value: it is what the winner takes home and what gives
them the rights they paid for.
This page explains what a PIL is, what it can and can't grant, and how SealedIP's five preset terms map onto the broader PIL framework.
What PIL is
Programmable IP License (PIL) is Story Protocol's standard for expressing IP licensing terms as on-chain data. A PIL terms struct has ~15 fields covering:
- Commercial use — can the licensee use the IP commercially?
- Derivatives — can they make derivative works? With approval? With attribution?
- Royalty policy — how do downstream revenue flows route?
- Revenue share — what percentage flows to upstream IP?
- Transferability — can the license be transferred to another wallet?
- Expiration — does the license expire?
- Currency + minting fee — what does it cost to mint the license outside an auction?
A specific combination of those fields is registered with the
PILicenseTemplate contract and gets a permanent licenseTermsId. The terms
struct is hashed and deduplicated, so identical terms always return the same
id — the first user to pick a preset funds the registration, and everyone
else reuses it.
The five SealedIP presets
Rather than make sellers fill out 15 fields manually, SealedIP exposes five curated PIL presets. Each is a sensible default for a common licensing posture.
1. Personal use only
Flavor: Locked
Story PIL id: 2834 (hackathon demo terms)
Allows: Personal/research use only
Forbids: Commercial use, derivatives, transfers
The most restrictive license. The license token cannot be transferred to another wallet. The licensee cannot make derivatives. The licensee cannot use the IP commercially. Good for sellers who want full control over redistribution.
2. Non-commercial · Social remixing
Flavor: Free remix, no commercial
Story PIL id: 1 (Story Protocol canonical preset)
Allows: Non-commercial use, derivatives with attribution
Forbids: Commercial use
The "let the world build on it" license. Anyone can remix, but only
non-commercially. Derivatives inherit the same terms (derivativesReciprocal: true), which keeps the whole chain non-commercial.
This is Story Protocol's canonical preset. It's pre-registered as terms id
1, so picking this preset doesn't require a registration call.
3. Commercial · No remix
Flavor: Commercial, no remix Allows: Commercial use with attribution, transfer Forbids: Derivatives, remixing
The licensee can use the IP commercially (in their products, in their marketing, etc.) as long as they attribute the original. They cannot make derivative works.
Uses Story's RoyaltyPolicyLAP (Liquid Absolute Percentage) as the royalty
policy, even though there's no revenue share configured — the policy is
required for any commercial-use license.
4. Commercial remix · 5% revenue
Flavor: Commercial · 5% revenue Allows: Commercial use, derivatives, transfer Royalty: 5% of every downstream remix's revenue flows back to the original IP
The license that tracks the whole derivative tree. Every derivative pays 5%
of its revenue to the original IP via Story's LAP royalty policy. Derivatives
inherit the same terms (derivativesReciprocal: true), so a remix-of-a-remix
also pays 5% upward.
Best for IP creators who want to enable a creative ecosystem and capture upside from downstream success.
5. Creative Commons · Attribution
Flavor: Free for everything Allows: Commercial use, derivatives, transfer Royalty: None Requires: Attribution
CC-BY-style: free for any use, including commercial and derivatives, with attribution. No revenue share, no minting fee. The maximally permissive preset.
What the license token actually is
The license token minted at settlement is an ERC-721 NFT in the
PIL LicenseToken collection on Story Aeneid
(0xFe3838BFb30B34170F00030B52eA4893d8aAC6bC).
Each token's metadata encodes which licenseTermsId it grants and which
ipId it grants rights for.
The license token can be displayed in any NFT viewer, sent between wallets (if the terms allow transfer), and queried on-chain to verify the holder's rights. It's not a JPEG — it's a programmable receipt for a specific bundle of rights to a specific IP.
Picking the right preset
| Your goal | Use this preset |
|---|---|
| Sell a one-off license to a single user, no remixes | Personal use only |
| Let the world play with your IP non-commercially | Non-commercial · Social remixing |
| Sell commercial usage rights without enabling remixes | Commercial · No remix |
| Build an ecosystem of remixes and capture upside | Commercial remix · 5% revenue |
| Maximize reach, ignore royalties | Creative Commons · Attribution |
Sellers can change the preset on each auction (a single IP can be relisted
under different terms). Bidders should always check which preset is attached
on the auction detail page — click the #N chip to see the full terms.
Reading deeper
- Story Protocol's PIL docs: docs.story.foundation/concepts/programmable-ip-license
- The PILicenseTemplate contract reference: Story deployed addresses
- SealedIP's preset definitions in code:
web/lib/licensePresets.ts