라이선스 설정

선택적으로, IP 자산에 LicensingConfig를 첨부할 수 있습니다 (해당 자산에 첨부된 특정 licenseTermsId에 대해). 이는 아래와 같이 mintingFeelicensingHook와 같은 필드를 포함합니다.

/// @notice This struct is used by IP owners to define the configuration
/// when others are minting license tokens of their IP through the LicensingModule.
/// When the `mintLicenseTokens` function of LicensingModule is called, the LicensingModule will read
/// this configuration to determine the minting fee and execute the licensing hook if set.
/// IP owners can set these configurations for each License or set the configuration for the IP
/// so that the configuration applies to all licenses of the IP.
/// If both the license and IP have the configuration, then the license configuration takes precedence.
/// @param isSet Whether the configuration is set or not.
/// @param mintingFee The minting fee to be paid when minting license tokens.
/// @param licensingHook  The hook contract address for the licensing module, or address(0) if none
/// @param hookData The data to be used by the licensing hook.
/// @param commercialRevShare The commercial revenue share percentage.
/// @param disabled Whether the license is disabled or not.
/// @param expectMinimumGroupRewardShare The minimum percentage of the group's reward share
/// (from 0 to 100%, represented as 100 * 10 ** 6) that can be allocated to the IP when it is added to the group.
/// If the remaining reward share in the group is less than the minimumGroupRewardShare,
/// the IP cannot be added to the group.
/// @param expectGroupRewardPool The address of the expected group reward pool.
/// The IP can only be added to a group with this specified reward pool address,
/// or address(0) if the IP does not want to be added to any group.
struct LicensingConfig {
  bool isSet;
  uint256 mintingFee;
  address licensingHook;
  bytes hookData;
  uint32 commercialRevShare;
  bool disabled;
  uint32 expectMinimumGroupRewardShare;
  address expectGroupRewardPool;
}

이들 중 일부는 무엇을 의미하나요?

  1. isSet - 이것이 false이면, 전체 라이선스 설정이 완전히 무시됩니다. 예를 들어, 라이선스 설정에 mintingFee == 10disabled == true가 있지만 isSet == false이면, mintingFeedisabled는 완전히 무시됩니다.
  2. disabled - 이것이 true이면, 설정이 첨부된 조건에 대해 라이선스를 발행할 수 없고 더 이상 파생물을 전혀 첨부할 수 없습니다.

와 같은 필드들은 mintingFeecommercialRevShare라이선스 조건 자체의 중복을 덮어씁니다. 이의 이점은 일반적으로 라이선스 조건을 변경할 수 없는 파생 IP 자산이 특정 필드를 덮어쓸 수 있다는 것입니다.

licensingHook 인터페이스를 구현하는 스마트 계약의 주소입니다. 이 인터페이스는 ILicensingHook 함수를 포함하고 있으며, beforeMintLicenseTokens이 함수는 사용자가 라이선스 토큰을 발행하기 전에 실행됩니다. 이는 라이선스 발행 시 실행될 로직을 삽입할 수 있음을 의미합니다.

훅 자체는 다른 섹션에서 설명됩니다. 라이선스, 라이선스 토큰을 발행하는 사람, 그리고 받는 사람에 대한 정보를 포함하고 있음을 알 수 있습니다.

라이선싱 훅에 대해 자세히 알아보기 here.

라이선스 설정하기

함수를 호출하여 라이선스 설정을 할 수 있습니다 setLicenseConfig 계약의 LicensingModule.sol 계약.

라이선스 설정으로 가능한 로직

  1. 최대 라이선스 수: 는 licensingHook(다음 섹션에서 설명)에서 발행할 수 있는 최대 라이선스 수에 대한 로직을 정의할 수 있는 곳입니다. 예를 들어, 최대 라이선스 수가 이미 발행되었다면 트랜잭션을 취소하는 것입니다.
  2. 파생물 불허: IP 자산의 파생물을 등록하면, 그 파생물은 라이선스 조건을 변경할 수 없습니다. 이는 here에서 설명되어 있습니다. 다음과 같은 의문이 들 수 있습니다: “파생물로서, 내 자신의 파생물을 불허하고 싶지만, 내 라이선스 조건은 파생물을 허용하고 있고 이를 변경할 수 없다면 어떻게 해야 하나요?” 이를 해결하기 위해, 간단히 disabled를 true로 설정하면 됩니다.
  3. 발행 수수료: 위의 #2와 유사하게… 발행 수수료는 어떻습니까? 파생 IP 자산에서 라이선스 조건을 변경할 수 없지만 (따라서 그 안의 발행 수수료도), 라이선스 설정에서 mintingFee를 수정하거나 totalMintingFee에서 licensingHook를 반환하여 (다음 섹션에서 설명) 그 파생물의 발행 수수료를 변경할 수 있습니다.
  4. 상업적 수익 공유: 위의 #2와 #3과 유사하게, 라이선스 설정에서 commercialRevShare를 수정할 수 있습니다.
  5. 라이선스 토큰 발행을 위한 동적 가격 책정: 총 발행된 수, 사용자가 발행하는 라이선스 수, 또는 사용자가 누구인지에 따라 IP 자산에서 라이선스 토큰을 발행하기 위한 동적 가격을 설정합니다. 이 모든 데이터는 licensingHook(다음 섹션에서 설명)에서 사용할 수 있습니다.

… 그리고 더 많은 기능들.

제한 사항

참조: IP 수정 및 제한 사항에서 라이선스 설정에 대한 다양한 제한 사항을 확인하세요.