LicenseToken 계약(LNFT(License NFT)라고도 알려짐)은 Story 생태계 내의 IP 자산에 대한 라이선스 계약을 나타내는 ERC721 토큰입니다. 이는 프로그래밍 가능한 IP 라이선스의 생성, 전송 및 관리를 가능하게 합니다.

상태 변수

LICENSE_REGISTRY

ILicenseRegistry public immutable LICENSE_REGISTRY

프로토콜 전체 라이선스 레지스트리의 주소.

LICENSING_MODULE

ILicensingModule public immutable LICENSING_MODULE

프로토콜 전체 라이선싱 모듈의 주소.

DISPUTE_MODULE

IDisputeModule public immutable DISPUTE_MODULE

프로토콜 전체 분쟁 모듈의 주소.

MAX_COMMERCIAL_REVENUE_SHARE

uint32 public constant MAX_COMMERCIAL_REVENUE_SHARE = 100_000_000

최대 로열티 비율은 100_000_000으로, 100%를 나타냅니다.

LicenseTokenMetadata

struct LicenseTokenMetadata {
    address licensorIpId;
    address licenseTemplate;
    uint256 licenseTermsId;
    bool transferable;
    uint32 commercialRevShare;
}

라이선스 토큰의 메타데이터 구조:

  • licensorIpId: 라이선스 제공자인 IP 자산
  • licenseTemplate: 라이선스 템플릿 계약 주소
  • licenseTermsId: 라이선스 조건의 ID
  • transferable: 라이선스 토큰의 전송 가능 여부
  • commercialRevShare: 상업적 수익 공유 비율

함수

initialize

function initialize(address accessManager, string memory imageUrl) public initializer

LicenseToken 계약을 초기화합니다.

Parameters:

  • accessManager: 접근 관리자의 주소.
  • imageUrl: 라이선스 토큰의 기본 이미지 URL.

setLicensingImageUrl

function setLicensingImageUrl(string calldata url) external restricted

모든 라이선스 토큰의 라이선싱 이미지 URL을 설정합니다.

Parameters:

  • url: 라이선싱 이미지의 URL.

mintLicenseTokens

function mintLicenseTokens(
    address licensorIpId,
    address licenseTemplate,
    uint256 licenseTermsId,
    uint256 amount,
    address minter,
    address receiver,
    uint32 maxRevenueShare
) external onlyLicensingModule returns (uint256 startLicenseTokenId)

지정된 수량의 라이선스 토큰(LNFT)을 발행합니다.

Parameters:

  • licensorIpId: 라이선스 토큰이 발행되는 라이센서 IP의 ID입니다.
  • licenseTemplate: 라이선스 템플릿의 주소입니다.
  • licenseTermsId: 라이선스 조건의 ID입니다.
  • amount: 발행할 라이선스 토큰의 수량입니다.
  • minter: 발행자의 주소입니다.
  • receiver: 발행된 라이선스 토큰을 받는 수신자의 주소입니다.
  • maxRevenueShare: 라이선스 토큰 발행에 허용되는 최대 수익 공유 비율입니다.

Returns:

  • startLicenseTokenId: 발행된 라이선스 토큰의 시작 ID입니다.

burnLicenseTokens

function burnLicenseTokens(address holder, uint256[] calldata tokenIds) external onlyLicensingModule

주어진 토큰 ID에 대한 라이선스 토큰(LT)을 소각합니다.

Parameters:

  • holder: 라이선스 토큰 보유자의 주소입니다.
  • tokenIds: 소각할 라이선스 토큰의 ID 배열입니다.

validateLicenseTokensForDerivative

function validateLicenseTokensForDerivative(
    address caller,
    address childIpId,
    uint256[] calldata tokenIds
) external view returns (
    address licenseTemplate,
    address[] memory licensorIpIds,
    uint256[] memory licenseTermsIds,
    uint32[] memory commercialRevShares
)

파생 IP 등록을 위한 라이선스 토큰을 검증합니다.

Parameters:

  • caller: 주어진 토큰으로 파생물을 등록하는 호출자의 주소입니다.
  • childIpId: 파생 IP의 ID입니다.
  • tokenIds: 검증할 라이선스 토큰의 ID 배열입니다.

Returns:

  • licenseTemplate: 라이선스 토큰과 연관된 라이선스 템플릿의 주소입니다.
  • licensorIpIds: 각 라이선스 토큰과 연관된 라이센서 IP의 배열입니다.
  • licenseTermsIds: 각 검증된 라이선스 토큰과 연관된 라이선스 조건의 배열입니다.
  • commercialRevShares: 각 라이선스 토큰과 연관된 상업적 수익 공유 비율의 배열입니다.

totalMintedTokens

function totalMintedTokens() external view returns (uint256)

처음부터 발행된 라이선스 토큰의 총 수를 반환합니다. 이 숫자는 라이선스 토큰이 소각되어도 감소하지 않습니다.

Returns:

  • uint256: 발행된 라이선스 토큰의 총 수입니다.

getLicenseTokenMetadata

function getLicenseTokenMetadata(uint256 tokenId) external view returns (LicenseTokenMetadata memory)

주어진 라이선스 ID에 대한 라이선스 데이터를 반환합니다.

Parameters:

  • tokenId: 라이선스 토큰의 ID입니다.

Returns:

  • LicenseTokenMetadata: 라이선스 토큰의 메타데이터입니다.

getLicensorIpId

function getLicensorIpId(uint256 tokenId) external view returns (address)

주어진 라이선스 ID의 라이센서인 IP 자산의 ID를 반환합니다.

Parameters:

  • tokenId: 라이선스 토큰의 ID입니다.

Returns:

  • address: 라이센서 IP의 ID입니다.

getLicenseTermsId

function getLicenseTermsId(uint256 tokenId) external view returns (uint256)

주어진 라이선스 ID에 사용되는 라이선스 조건의 ID를 반환합니다.

Parameters:

  • tokenId: 라이선스 토큰의 ID입니다.

Returns:

  • uint256: 라이선스 조건의 ID입니다.

getLicenseTemplate

function getLicenseTemplate(uint256 tokenId) external view returns (address)

주어진 라이선스 ID에 사용되는 라이선스 템플릿의 주소를 반환합니다.

Parameters:

  • tokenId: 라이선스 토큰의 ID입니다.

Returns:

  • address: 라이선스 템플릿의 주소입니다.

getTotalTokensByLicensor

function getTotalTokensByLicensor(address licensorIpId) external view returns (uint256)

주어진 라이센서 IP에 대해 발행된 라이선스 토큰의 총 수를 검색합니다.

Parameters:

  • licensorIpId: 라이센서 IP의 ID입니다.

Returns:

  • uint256: 라이센서 IP에 대해 발행된 라이선스 토큰의 총 수입니다.

isLicenseTokenRevoked

function isLicenseTokenRevoked(uint256 tokenId) public view returns (bool)

라이선스가 취소되었는지 여부를 반환합니다(분쟁 모듈에서 분쟁 후 라이센서 IP에 태그가 지정된 경우). 태그가 제거되면 라이선스는 더 이상 취소되지 않습니다.

Parameters:

  • tokenId: 라이선스 토큰의 ID입니다.

Returns:

  • bool: 라이선스가 취소된 경우 True입니다.

tokenURI

function tokenURI(uint256 id) public view virtual override(ERC721Upgradeable, IERC721Metadata) returns (string memory)

LNFT 매개변수의 ERC721 OpenSea 메타데이터 JSON 표현입니다.

Parameters:

  • id: 라이선스 토큰의 ID입니다.

Returns:

  • string: 라이선스 토큰의 메타데이터 URI입니다.