PILicenseTemplate
PILicenseTemplate(프로그래머블 IP 라이선스 템플릿)은 Story에서 IP 자산에 대한 라이선스 조건을 정의하고 관리하는 스마트 계약입니다. IP 소유자가 IP 자산에 첨부할 수 있는 맞춤형 라이선스 조건을 만들 수 있게 하여 IP를 상업적으로 사용하고 파생 작품을 만드는 방법을 제어할 수 있게 합니다.
상태 변수
LICENSE_REGISTRY
라이선스 조건과 토큰을 추적하는 라이선스 레지스트리 계약의 주소입니다.
ROYALTY_MODULE
로열티 지불과 정책을 처리하는 로열티 모듈 계약의 주소입니다.
licenseTerms
라이선스 조건 ID를 해당하는 PILTerms 구조체에 매핑합니다.
hashedLicenseTerms
라이선스 조건의 해시를 해당하는 라이선스 조건 ID에 매핑합니다.
licenseTermsCounter
등록된 라이선스 조건의 수를 세는 카운터입니다.
함수
initialize
이 구현 계약의 초기화 함수입니다.
Parameters:
accessManager
: 프로토콜 관리자 역할 계약의 주소입니다.name
: 라이선스 템플릿의 이름입니다.metadataURI
: 오프체인 메타데이터의 URL입니다.
registerLicenseTerms
새로운 라이선스 조건을 등록하고 새로 등록된 라이선스 조건의 ID를 반환합니다. 라이선스 조건은 해시되며 이 해시를 사용하여 조건이 이미 등록되었는지 확인합니다. 조건이 이미 등록되어 있다면 기존 ID를 반환합니다.
Parameters:
terms
: 등록할 PILTerms입니다.
Returns:
id
: 새로 등록된 라이선스 조건의 ID입니다.
exists
라이선스 조건이 존재하는지 확인합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID입니다.
Returns:
- 라이선스 조건이 존재하면 true를, 그렇지 않으면 false를 반환합니다.
verifyMintLicenseToken
라이선스 토큰의 발행을 확인합니다. 이 함수는 LicensingModule에서 라이선스 토큰을 발행할 때 호출되어 라이선스 조건에 따라 발행이 허용되는지 확인합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID입니다.licensee
: 라이선스 토큰을 받을 라이선스 사용자의 주소입니다.licensorIpId
: 라이선스 조건을 첨부하고 라이선스 토큰을 발행하는 라이선스 제공자의 IP ID입니다.
Returns:
- 발행이 확인되면 true를, 그렇지 않으면 false를 반환합니다.
verifyRegisterDerivative
파생 작품의 등록을 확인합니다. 이 함수는 LicensingModule에서 파생 작품을 등록할 때 호출되어 부모 IP의 라이선스 조건을 준수하는지 확인합니다.
Parameters:
childIpId
: 파생 작품의 IP ID입니다.parentIpId
: 부모 IP의 IP ID입니다.licenseTermsId
: 라이선스 조건의 ID입니다.licensee
: 라이선스 사용자의 주소입니다.
Returns:
- 등록이 확인되면 true를, 그렇지 않으면 false를 반환합니다.
verifyCompatibleLicenses
라이선스들이 호환되는지 확인합니다. 이 함수는 LicensingModule에서 여러 부모 IP에 대한 파생 IP를 등록할 때 라이선스 호환성을 확인하기 위해 호출됩니다.
Parameters:
licenseTermsIds
: 라이선스 조건들의 ID입니다.
Returns:
- 라이선스들이 호환되면 true를, 그렇지 않으면 false를 반환합니다.
verifyRegisterDerivativeForAllParents
모든 부모 IP에 대한 파생 작품의 등록을 확인합니다. 이 함수는 LicensingModule에서 여러 부모 IP에 대한 파생 IP를 등록할 때 라이선스를 확인하기 위해 호출됩니다.
Parameters:
childIpId
: 파생 작품의 IP ID입니다.parentIpIds
: 부모 IP들의 IP ID입니다.licenseTermsIds
: 라이선스 조건들의 ID입니다.childIpOwner
: 파생 IP 소유자의 주소입니다.
Returns:
- 등록이 확인되면 true를, 그렇지 않으면 false를 반환합니다.
getRoyaltyPolicy
라이선스 조건의 로열티 정책을 반환합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID입니다.
Returns:
royaltyPolicy
: 라이선스 조건에 지정된 로열티 정책의 주소입니다.royaltyData
: 로열티 정책의 데이터입니다.mintingFee
: 라이선스 발행 수수료입니다.currency
: 라이선스 발행 수수료와 로열티에 사용되는 ERC20 토큰의 주소입니다.
isLicenseTransferable
라이선스 조건이 양도 가능한지 확인합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID.
Returns:
- 라이선스 조건이 양도 가능하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
getEarlierExpireTime
주어진 라이선스 조건들 중 가장 빠른 만료 시간을 반환합니다.
Parameters:
licenseTermsIds
: 라이선스 조건들의 ID.start
: 시작 시간.
Returns:
- 가장 빠른 만료 시간을 반환합니다.
getExpireTime
라이선스 조건의 만료 시간을 반환합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID.start
: 시작 시간.
Returns:
- 만료 시간을 반환합니다.
getLicenseTermsId
주어진 라이선스 조건의 ID를 가져옵니다.
Parameters:
terms
: ID를 가져올 PILTerms.
Returns:
selectedLicenseTermsId
: 주어진 라이선스 조건의 ID.
getLicenseTerms
주어진 ID의 라이선스 조건을 가져옵니다.
Parameters:
selectedLicenseTermsId
: 라이선스 조건의 ID.
Returns:
terms
: 주어진 ID와 연관된 PILTerms.
getLicenseTermsURI
라이선스 조건의 URI를 반환합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID.
Returns:
- 라이선스 조건의 URI를 반환합니다.
totalRegisteredLicenseTerms
등록된 라이선스 조건의 총 수를 반환합니다.
Returns:
- 등록된 라이선스 조건의 총 수를 반환합니다.
supportsInterface
컨트랙트가 주어진 인터페이스를 지원하는지 확인합니다.
Parameters:
interfaceId
: 인터페이스 식별자.
Returns:
- 컨트랙트가 인터페이스를 지원하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
toJson
라이선스 조건을 라이선스 토큰의 메타데이터의 일부가 될 JSON 문자열로 변환합니다.
Parameters:
licenseTermsId
: 라이선스 조건의 ID.
Returns:
- OpenSea 메타데이터 표준을 따르는 라이선스 조건의 JSON 문자열을 반환합니다.
PILTerms 구조
PILTerms 구조는 프로그래머블 IP 라이선스(PIL)의 조건을 정의합니다:
Parameters:
transferable
: 라이선스가 양도 가능한지 여부를 나타냅니다.royaltyPolicy
: StoryProtocol에서 사전에 요구하는 로열티 정책 컨트랙트의 주소입니다.mintingFee
: 라이선스 발행 시 지불해야 하는 수수료입니다.expiration
: 라이선스의 만료 기간입니다.commercialUse
: 작품을 상업적으로 사용할 수 있는지 여부를 나타냅니다.commercialAttribution
: 작품을 상업적으로 복제할 때 저작자 표시가 필요한지 여부입니다.commercializerChecker
: 작품을 상업적으로 이용할 수 있는 상업화 주체입니다. 제로 주소인 경우 제한이 없습니다.commercializerCheckerData
: 상업화 주체 확인 컨트랙트에 전달될 데이터입니다.commercialRevShare
: 라이선스 제공자와 공유해야 하는 수익의 비율입니다.commercialRevCelling
: 작품의 상업적 사용으로 생성될 수 있는 최대 수익입니다.derivativesAllowed
: 라이선스 사용자가 자신의 작품의 파생물을 만들 수 있는지 여부를 나타냅니다.derivativesAttribution
: 작품의 파생물에 대해 저작자 표시가 필요한지 여부를 나타냅니다.derivativesApproval
: 작품의 파생물이 라이선스 제공자 IP ID에 연결되기 전에 라이선스 제공자의 승인이 필요한지 여부를 나타냅니다.derivativesReciprocal
: 라이선스 사용자가 작품의 파생물을 동일한 조건으로 라이선스해야 하는지 여부를 나타냅니다.derivativeRevCelling
: 작품의 파생적 사용으로 생성될 수 있는 최대 수익입니다.currency
: 발행 수수료를 지불하는 데 사용될 ERC20 토큰입니다. 이 토큰은 Story Protocol에 등록되어 있어야 합니다.uri
: 오프체인 라이선스 조건을 가져오는 데 사용할 수 있는 라이선스 조건의 URI입니다.