State Variables
RoyaltyPolicyLAPStorage
royaltyStackLAP
: Sum of the royalty percentages to be paid to all ancestors for LAP royalty policyancestorPercentLAP
: The royalty percentage between an IP asset and a given ancestor for LAP royalty policytransferredTokenLAP
: Total lifetime revenue tokens transferred to a vault from a descendant IP via LAP
IP_GRAPH
ROYALTY_MODULE
IP_GRAPH_ACL
Functions
constructor
royaltyModule
: The RoyaltyModule addressipGraphAcl
: The IPGraphACL address
initialize
accessManager
: The address of the protocol admin roles contract.
onLicenseMinting
ipId
: The ipId whose license is being minted (licensor)licensePercent
: The license percentage of the license being minted
onLinkToParents
ipId
: The children ipId that is being linked to parentsparentIpIds
: The parent ipIds that the children ipId is being linked tolicenseRoyaltyPolicies
: The royalty policies of the licenseslicensesPercent
: The license percentage of the licenses being minted
newRoyaltyStackLAP
: The royalty stack of the child ipId for LAP royalty policy
transferToVault
ipId
: The ipId of the IP assetancestorIpId
: The ancestor ipId of the IP assettoken
: The token address to transfer
- The amount of revenue tokens transferred
getPolicyRtsRequiredToLink
ipId
: The ipId of the IP assetlicensePercent
: The percentage of the license
- The amount of royalty tokens required to link a child to a given IP asset (always 0 for LAP)
getPolicyRoyaltyStack
ipId
: The ipId to get the royalty stack for
- Sum of the royalty percentages to be paid to all ancestors for LAP royalty policy
getPolicyRoyalty
ipId
: The ipId to get the royalty forancestorIpId
: The ancestor ipId to get the royalty for
- The royalty percentage between an IP asset and its ancestors via LAP
getTransferredTokens
ipId
: The ipId of the IP assetancestorIpId
: The ancestor ipId of the IP assettoken
: The token address to transfer
- The total lifetime revenue tokens transferred to a vault from a descendant IP via LAP
isSupportGroup
- False (LAP royalty policy does not support working with groups)
Internal Functions
_getRoyaltyStackLAP
ipId
: The ipId to get the royalty stack for
- The royalty stack for a given IP asset for LAP royalty policy
_setRoyaltyLAP
ipId
: The ipId to set the royalty forparentIpId
: The parent ipId to set the royalty forroyalty
: The LAP license royalty percentage
_getRoyaltyLAP
ipId
: The ipId to get the royalty forancestorIpId
: The ancestor ipId to get the royalty for
- The royalty percentage between an IP asset and its ancestor via royalty policy LAP
_getRoyaltyPolicyLAPStorage
- The storage structure for the RoyaltyPolicyLAP
_authorizeUpgrade
newImplementation
: The address of the new implementation
Events
RevenueTransferredToVault
ipId
: The ipId of the IP assetancestorIpId
: The ancestor ipId of the IP assettoken
: The token address transferredamount
: The amount of tokens transferred
Security Considerations
The RoyaltyPolicyLAP contract implements several security measures:-
Access Control: Functions like
onLicenseMinting
andonLinkToParents
can only be called by the Royalty Module through theonlyRoyaltyModule
modifier. -
Reentrancy Protection: The
nonReentrant
modifier is used on functions that handle token transfers to prevent reentrancy attacks. -
Pausability: The contract can be paused in emergency situations using the
whenNotPaused
modifier. - Safe Token Transfers: The contract uses OpenZeppelin’s SafeERC20 library to ensure safe token transfers.
- Upgradability: The contract is upgradable using the UUPS pattern, with upgrade authorization restricted to the protocol admin.
- Input Validation: The contract validates inputs and checks for edge cases, such as preventing transfers between the same IP.