실제 세계에서 관찰되는 것처럼 로열티 분배 규칙에는 많은 종류와 변형이 있을 수 있습니다. 온체인에서도 같은 것을 예상할 수 있습니다. 사용 사례가 고유하고 특정한 로열티 규칙을 요구할 때마다, 그 규칙 세트를 외부 로열티 정책으로 등록할 수 있습니다.

1. 외부 로열티 정책이란 무엇인가요?

이는 특정 인터페이스를 상속받는 스마트 계약입니다. 이 인터페이스는 IExternalRoyaltyPolicy라고 불리며, 아래의 view 함수를 정의합니다:

IExternalRoyaltyPolicy.sol
/// @notice Returns the amount of royalty tokens required to link a child to a given IP asset
/// @param ipId The ipId of the IP asset
/// @param licensePercent The percentage of the license
/// @return The amount of royalty tokens required to link a child to a given IP asset
function getPolicyRtsRequiredToLink(address ipId, uint32 licensePercent) external view returns (uint32);

스마트 계약을 개발한 후 위의 인터페이스를 상속받았는지 확인하고, registerExternalRoyaltyPolicy 함수를 호출하여 RoyaltyModule.sol에서 새로운 외부 로열티 정책을 등록할 수 있습니다.

2. 어떻게 작동하나요?

“정책 X”라고 불리는 새로운 외부 로열티 정책의 예를 따라가 봅시다.

외부 로열티 정책은 사용자에 의해 선택됩니다

IPA 소유자는 IP가 리믹스될 수 있도록 허용하고 싶은 로열티 정책을 결정합니다. LAP, LRP 및 기타 외부 로열티 정책과 같은 여러 로열티 규칙 옵션 중에서 선택할 수 있습니다. 사용자가 “정책 X”로 라이선스 토큰을 발행하기로 결정했다고 가정해 봅시다. 그 후, IP2가 IP1을 리믹스하고 IP3가 IP2를 리믹스하여 아래 이미지와 같은 상황이 됩니다:

리믹스가 있을 때마다 - 부모와 파생물 사이의 연결에는 2개의 데이터 포인트가 연관됩니다:

  1. 로열티 정책 주소
    1. 예시에서는 “정책 X” 주소
  2. 부모가 파생물에게 요구하는 로열티 토큰의 비율. 이 비율은 사용되는 로열티 정책에 따라 다른 의미를 가질 수 있습니다 - 즉, 상대적 비율, 절대적 비율, 특정 규칙에 따라 조정된 비율 등이 될 수 있습니다.
    1. IP1과 IP2 사이에 10%
    2. IP2와 IP3 사이에 50%

외부 로열티 정책은 사용자의 IP로부터 로열티 토큰을 받습니다

예를 따라, 각 리믹스가 이루어지고 onLinkToParents 함수 호출 중 RoyaltyModule.sol에서, getPolicyRtsRequiredToLink 함수가 “정책 X” 주소에서 호출됩니다.

IExternalRoyaltyPolic.sol
/// @notice Returns the amount of royalty tokens required to link a child to a given IP asset
/// @param ipId The ipId of the IP asset
/// @param licensePercent The percentage of the license
/// @return The amount of royalty tokens required to link a child to a given IP asset
function getPolicyRtsRequiredToLink(address ipId, uint32 licensePercent) external view returns (uint32);

이는 연결이 이루어지기 위해 로열티 정책이 요구하는 파생물의 로열티 토큰의 %를 반환해야 합니다. 그 로열티 토큰의 지분은 “정책 X” 계약으로 전송됩니다. 예시의 경우:

  • “정책 X”는 RT2 토큰 공급량의 3%를 받아 사용자 기반에 재분배할 수 있습니다. IP1 소유자는 10%를 원했지만 - 예시를 위해 가정해보면 - “정책 X”의 특정 사용 사례와 맞춤 로직으로 인해, IP2 소유자는 IP를 홍보할 매우 큰 유통 네트워크를 가지고 있어 플랫폼에서 특별한 지위를 부여받아 부모 IP에게 줘야 하는 % 지분에 대해 70% 할인을 받습니다. 따라서 라이선스 비율이 10%를 나타냈지만 실제로는 3%만 제공합니다.
  • “정책 X”는 RT3 토큰 공급량의 50%를 받아 사용자 기반에 재분배할 수 있습니다.

외부 로열티 정책은 맞춤 규칙에 따라 사용자에게 가치를 재분배합니다

외부 로열티 정책이 사용자에게 가치를 재분배하는 방법에는 두 가지가 있습니다:

  1. 로열티 토큰을 직접 사용자에게 보냅니다
  2. 외부 로열티 정책 계약에 로열티 토큰을 보관하고 사용자가 해당 계약을 통해 수익 토큰을 청구하도록 합니다

“정책 X”의 맥락에서 두 가지를 모두 살펴보겠습니다. “정책 X”가 받은 RT3 토큰 공급량의 50% 중 - 40%는 “정책 X” 계약에 보관되고 10%는 조상 로열티 금고(IP1)로 보내진다고 가정해 봅시다.

이제 IP3에 100만의 지불이 이루어졌다고 상상해 봅시다 - 흐름의 예시는 다음과 같을 것입니다:

IP3 로열티 금고로 유입된 100만 WIP 중:

  • 50만 WIP는 RT3 토큰 공급량의 50%를 가지고 있던 IP 계정 3에 의해 청구됩니다
  • IP1 로열티 볼트가 RT3 토큰 공급량의 10%를 통해 100k WIP를 청구합니다claimByTokenBatchAsSelf 함수
  • “Policy X”가 RT3 토큰 공급량의 40을 가지고 있어 400k WIP를 청구합니다. 이 금액은 “Policy X” 커스텀 계약에 따라 특정 규칙에 의해 - y%와 z%를 정의하여 - 사용자들에게 추가로 분배됩니다.