The PILicenseTemplate (Programmable IP License Template) is a smart contract that defines and manages license terms for IP assets on Story. It allows IP owners to create customizable license terms that can be attached to their IP assets, enabling them to control how their IP can be used commercially and for derivative works.Documentation Index
Fetch the complete documentation index at: https://docs.story.foundation/llms.txt
Use this file to discover all available pages before exploring further.
State Variables
LICENSE_REGISTRY
ROYALTY_MODULE
licenseTerms
hashedLicenseTerms
licenseTermsCounter
Functions
initialize
accessManager: The address of the protocol admin roles contract.name: The name of the license template.metadataURI: The URL to the off-chain metadata.
registerLicenseTerms
terms: The PILTerms to register.
id: The ID of the newly registered license terms.
exists
licenseTermsId: The ID of the license terms.
- Returns true if the license terms exists, false otherwise.
verifyMintLicenseToken
licenseTermsId: The ID of the license terms.licensee: The address of the licensee who will receive the license token.licensorIpId: The IP ID of the licensor who attached the license terms minting the license token.
- Returns true if the minting is verified, false otherwise.
verifyRegisterDerivative
childIpId: The IP ID of the derivative.parentIpId: The IP ID of the parent.licenseTermsId: The ID of the license terms.licensee: The address of the licensee.
- Returns true if the registration is verified, false otherwise.
verifyCompatibleLicenses
licenseTermsIds: The IDs of the license terms.
- Returns true if the licenses are compatible, false otherwise.
verifyRegisterDerivativeForAllParents
childIpId: The IP ID of the derivative.parentIpIds: The IP IDs of the parents.licenseTermsIds: The IDs of the license terms.childIpOwner: The address of the derivative IP owner.
- Returns true if the registration is verified, false otherwise.
getRoyaltyPolicy
licenseTermsId: The ID of the license terms.
royaltyPolicy: The address of the royalty policy specified for the license terms.royaltyData: The data of the royalty policy.mintingFee: The fee for minting a license.currency: The address of the ERC20 token, used for minting license fee and royalties.
isLicenseTransferable
licenseTermsId: The ID of the license terms.
- Returns true if the license terms is transferable, false otherwise.
getEarlierExpireTime
licenseTermsIds: The IDs of the license terms.start: The start time.
- Returns the earliest expiration time.
getExpireTime
licenseTermsId: The ID of the license terms.start: The start time.
- Returns the expiration time.
getLicenseTermsId
terms: The PILTerms to get the ID for.
selectedLicenseTermsId: The ID of the given license terms.
getLicenseTerms
selectedLicenseTermsId: The ID of the license terms.
terms: The PILTerms associated with the given ID.
getLicenseTermsURI
licenseTermsId: The ID of the license terms.
- Returns the URI of the license terms.
totalRegisteredLicenseTerms
- Returns the total number of registered license terms.
supportsInterface
interfaceId: The interface identifier.
- Returns true if the contract supports the interface, false otherwise.
toJson
licenseTermsId: The ID of the license terms.
- Returns the JSON string of the license terms, following the OpenSea metadata standard.
PILTerms Structure
The PILTerms structure defines the terms for a Programmable IP License (PIL):transferable: Indicates whether the license is transferable or not.royaltyPolicy: The address of the royalty policy contract which is required by StoryProtocol in advance.mintingFee: The fee to be paid when minting a license.expiration: The expiration period of the license.commercialUse: Indicates whether the work can be used commercially or not.commercialAttribution: Whether attribution is required when reproducing the work commercially or not.commercializerChecker: Commercializers that are allowed to commercially exploit the work. If zero address, then no restrictions are enforced.commercializerCheckerData: The data to be passed to the commercializer checker contract.commercialRevShare: Percentage of revenue that must be shared with the licensor.commercialRevCelling: The maximum revenue that can be generated from the commercial use of the work.derivativesAllowed: Indicates whether the licensee can create derivatives of their work or not.derivativesAttribution: Indicates whether attribution is required for derivatives of the work or not.derivativesApproval: Indicates whether the licensor must approve derivatives of the work before they can be linked to the licensor IP ID or not.derivativesReciprocal: Indicates whether the licensee must license derivatives of the work under the same terms or not.derivativeRevCelling: The maximum revenue that can be generated from the derivative use of the work.currency: The ERC20 token to be used to pay the minting fee. The token must be registered in Story Protocol.uri: The URI of the license terms, which can be used to fetch the off-chain license terms.

