Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Licensing Module #76

Merged
merged 45 commits into from
Sep 12, 2023
Merged

Add Licensing Module #76

merged 45 commits into from
Sep 12, 2023

Conversation

Ramarti
Copy link
Contributor

@Ramarti Ramarti commented Aug 22, 2023

Licensing Module:

A set of contracts that enables the creation and configuration of licenses to govern IPAssets in Story Protocol.

Contracts

LicensingModule

Allows a Franchise owner to configure the licensing rules for an IPAssetRegistry

IERC-5218

A modified version of the rights management draft

RightsManager

Our IERC-5218 implementation.

  • Allows us to grant 2 type of licenses:
  1. Rights: Licenses tied to a tokenId (IPAsset id), in which the license holder is always the owner of the tokenId. Each tokenId can a commercial or non commercial license tied to it
  2. Tradeable Licenses): The license holder is the owner of the correspondent LicenseRegistry NFT. They are either:
    2.1 Franchise root license: LicenseRegistry enabled license minted by a Franchise owner to govern commercial or non commercial rights for all the IPAssetRegistries.
    2.2 Sublicense: a license coming from Rights or other Licenses, minted by the parent license owner. These would be the future "movie adaptation" type licenses that can be sold.
  • Creates a LicenseRegistry on initialization
  • Executes licensing terms to activate the license.
  • Tracks active licenses along the license trees.

LicenseRegistry

Simple NFT that tracks ownerships of type tradeable licenses emitted by IPAssetRegistry

Terms

Contracts that define what need to happen on chain for a license to be active. These could be:

  • Timing terms (license valid from start date to start date + ttl) <-- implemented
  • Oracle verifications
  • Payment
  • Relationship creation
  • etc

Tasks in this PR

  • LicensingModule (config) contract
  • IERC5218 with modifications
  • RightsManager
  • IPAssetRegistry is RightsManager, will grant rights to LicensingModule config for the franchise
  • LicenseRegistry NFT for sublicenses
  • Generic on chain licensing term processors (ITermProcessor)
  • Aggregator of terms (MultiTermProcessor)
  • Link terms with RightsManager
  • Add terms execution to activate licensing
  • Add timing terms (TTL)
  • Test Licensing contracts
  • Test terms

For later:

  • Add Terms contract that will try to create a relationship
  • License off chain metadata

Closes #67

@Ramarti Ramarti marked this pull request as ready for review September 6, 2023 00:50
@Ramarti Ramarti self-assigned this Sep 6, 2023
contracts/ip-assets/IPAssetRegistry.sol Outdated Show resolved Hide resolved
contracts/modules/licensing/terms/ITermsProcessor.sol Outdated Show resolved Hide resolved
contracts/modules/licensing/terms/MultiTermsProcessor.sol Outdated Show resolved Hide resolved
contracts/modules/licensing/terms/MultiTermsProcessor.sol Outdated Show resolved Hide resolved
contracts/modules/timing/LibDuration.sol Show resolved Hide resolved
Copy link
Contributor

@kingster-will kingster-will left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

contracts/ip-assets/IPAssetRegistry.sol Outdated Show resolved Hide resolved
@Ramarti Ramarti merged commit b6057c3 into main Sep 12, 2023
@LeoHChen LeoHChen deleted the licensing_erc_5218 branch September 29, 2023 19:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Licensing Module
3 participants