IPAsset

메서드

  • register
  • register_derivative
  • register_derivative_with_license_tokens
  • mint_and_register_ip_asset_with_pil_terms

IPAssetClient 탐색하기

📜 Licensing Module과 상호 작용하는 많은 함수가 있기 때문에 📜 Licensing Module, 우리는 이를 유용한 차트로 분류하여 찾고 있는 것을 식별하고 관련 문서를 찾을 수 있도록 했습니다.

함수NFT 발행IPA 등록라이선스 조건 생성라이선스 조건 첨부라이선스 토큰 발행파생물로 등록
register
mint_and_register_ip_asset_with_pil_terms
register_derivative
register_derivative_with_license_tokens
register_pil_terms
attach_license_terms
mint_license_tokens
  • 빨간색: IPAssetClient (이 페이지)
  • 파란색: LicenseClient

register

NFT를 IP로 등록하고 해당하는 🧩 IP Asset을 생성합니다. 주어진 NFT가 이미 등록되어 있다면, 이 함수는 기존의 🧩 IP Asset을 반환할 것입니다.ipId.

이 함수는 또한 기본 NFT의 메타데이터를 tokenUri 아래에 전달된 내용으로 설정합니다.ipMetadata.nftMetadataURI.

메서드
register

Parameters:

  • nft_contract: NFT의 주소.
  • token_id: NFT의 토큰 식별자.
  • ip_metadata: [선택사항] 새로 발행된 NFT와 새로 등록된 IP에 대한 원하는 메타데이터.
    • ip_metadata['ip_metadata_uri']: [선택사항] IP의 메타데이터 URI.
    • ip_metadata['ip_metadata_hash']: [선택사항] IP의 메타데이터 해시.
    • ip_metadata['nft_metadata_uri']: [선택사항] NFT의 메타데이터 URI.
    • ip_metadata['nft_metadata_hash']: [선택사항] IP NFT의 메타데이터 해시.
  • deadline: [선택사항] 서명의 마감 시간(밀리초).
  • tx_options: [선택사항] 트랜잭션 옵션 딕셔너리.
metadata = {
  'ip_metadata_uri': "test-uri",
  'ip_metadata_hash': web3.to_hex(web3.keccak(text="test-ip-metadata-hash")),
  'nft_metadata_uri': "test-uri",
  'nft_metadata_hash': web3.to_hex(web3.keccak(text="test-nft-metadata-hash"))
}

response = story_client.IPAsset.register(
  nft_contract="0x041B4F29183317Fd352AE57e331154b73F8a1D73",
  token_id="12",
  ip_metadata=metadata
)

register_derivative

라이선스 토큰 없이 부모 IP의 라이선스 조건으로 직접 파생물을 등록하고, 부모 IP의 라이선스 조건을 파생 IP에 첨부합니다.

이 함수를 호출하기 전에 라이선스 조건이 부모 IP에 첨부되어 있어야 합니다.

모든 IP는 기본적으로 기본 라이선스 조건이 첨부되어 있습니다.

파생 IP 소유자는 호출자이거나 승인된 운영자여야 합니다.

메서드
register_derivative

Parameters:

  • child_ip_id: 파생 IP ID.
  • parent_ip_ids: 부모 IP ID들.
  • license_terms_ids: 부모 IP가 지원하는 라이선스 조건의 ID들.
  • max_minting_fee: [선택사항] 호출자가 지불할 의사가 있는 최대 발행 수수료. 0으로 설정하면 제한이 없습니다.Default: 0
  • max_revenue_share: [선택 사항] 자식이 파생물로 등록할 때 자식과 부모 사이에 합의된 최대 수익 공유 비율. 0에서 100 사이여야 합니다.Default: 100
  • max_rts: [선택 사항] 외부 로열티 정책에 분배될 수 있는 최대 로열티 토큰 수. 0에서 100,000,000 사이여야 합니다.Default: 100_000_000
  • tx_options: [선택 사항] 트랜잭션 옵션 딕셔너리.
response = story_client.IPAsset.register_derivative(
  child_ip_id="0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba",
  parent_ip_ids=["0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba"],
  license_terms_ids=["5"],
  max_minting_fee=0, # disabled
  max_rts=100_000_000, # default
  max_revenue_share=100 # default
)

register_derivative_with_license_tokens

라이선스 토큰으로 파생물을 등록합니다.

파생 IP는 부모 IP의 라이선스 조건에서 발행된 라이선스 토큰으로 등록됩니다.

라이선스 토큰으로 발행된 부모 IP의 라이선스 조건이 파생 IP에 첨부됩니다.

호출자는 파생 IP 소유자 또는 승인된 운영자여야 합니다.

메서드
register_derivative_with_license_tokens

Parameters:

  • child_ip_id: 파생 IP ID.
  • license_token_ids: 라이선스 토큰의 ID들.
  • max_rts: 외부 로열티 정책에 분배될 수 있는 최대 로열티 토큰 수. 0에서 100,000,000 사이여야 합니다.단순화를 위한 권장사항: 100_000_000
  • tx_options: [선택 사항] 트랜잭션 옵션 딕셔너리.
response = story_client.IPAsset.register_derivative_with_license_tokens(
  child_ip_id="0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba",
  license_token_ids=["5"],
  max_rts=100_000_000 # default
)

mint_and_register_ip_asset_with_pil_terms

컬렉션에서 NFT를 발행하고, IP로 등록하고, IP에 메타데이터를 첨부하고, IP에 라이선스 조건을 첨부하는 모든 작업을 하나의 함수로 수행합니다.

이 함수는 또한 기본 NFT의 tokenUri을 에 전달된 값으로 설정합니다ipMetadata.nftMetadataURI.

메서드
mint_and_register_ip_asset_with_pil_terms

Parameters:

  • spg_nft_contract: NFT 컬렉션의 주소.
  • terms: 첨부될 라이선스 조건의 배열. ⚠️ 빈 배열을 전달하면 이 함수는 실패합니다.
    • terms[].terms: 라이선스 조건 데이터. 구조는 아래 Python 예제를 참조하세요.
    • terms[].licensing_config: [선택 사항] 라이선싱 구성. 구조는 아래 Python 예제를 참조하세요.
  • allow_duplicates: [선택 사항] 동일한 NFT 메타데이터로 IP 발행을 허용하려면 true로 설정하세요.Default: True
  • ip_metadata: [선택 사항] 새로 발행된 NFT와 새로 등록된 IP에 대한 원하는 메타데이터.
    • ip_metadata['ip_metadata_uri']: [선택 사항] IP의 메타데이터 URI.
    • ip_metadata['ip_metadata_hash']: [선택 사항] IP의 메타데이터 해시.
    • ip_metadata['nft_metadata_uri']: [선택 사항] NFT의 메타데이터 URI.
    • ip_metadata['nft_metadata_hash']: [선택 사항] IP NFT의 메타데이터 해시.
  • recipient: [선택 사항] 발행된 NFT 수령인의 주소.
  • tx_options: [선택 사항] 트랜잭션 옵션 딕셔너리.
commercial_remix_terms = {
  "transferable": True,
  "royalty_policy": "0xBe54FB168b3c982b7AaE60dB6CF75Bd8447b390E", # RoyaltyPolicyLAP address from https://docs.story.foundation/docs/deployed-smart-contracts
  "default_minting_fee": 0,
  "expiration": 0,
  "commercial_use": True,
  "commercial_attribution": True,
  "commercializer_checker": "0x0000000000000000000000000000000000000000",
  "commercializer_checker_data": "0x0000000000000000000000000000000000000000",
  "commercial_rev_share": 50,
  "commercial_rev_ceiling": 0,
  "derivatives_allowed": True,
  "derivatives_attribution": True,
  "derivatives_approval": False,
  "derivatives_reciprocal": True,
  "derivative_rev_ceiling": 0,
  "currency": "0x1514000000000000000000000000000000000000", # $WIP address from https://docs.story.foundation/docs/deployed-smart-contracts
  "uri": "",
}

licensing_config = {
  "is_set": False,
  "minting_fee": 0,
  "licensing_hook": "0x0000000000000000000000000000000000000000",
  "hook_data": "0x0000000000000000000000000000000000000000",
  "commercial_rev_share": 0,
  "disabled": False,
  "expect_minimum_group_reward_share": 0,
  "expect_group_reward_pool": "0x0000000000000000000000000000000000000000",
}

metadata = {
  'ip_metadata_uri': "test-uri",
  'ip_metadata_hash': web3.to_hex(web3.keccak(text="test-ip-metadata-hash")),
  'nft_metadata_uri': "test-uri",
  'nft_metadata_hash': web3.to_hex(web3.keccak(text="test-nft-metadata-hash"))
}

response = story_client.IPAsset.mint_and_register_ip_asset_with_pil_terms(
  spg_nft_contract="0xfE265a91dBe911db06999019228a678b86C04959",
  terms=[{
    "terms": commercial_remix_terms,
    "licensing_config": licensing_config
  }],
  allow_duplicates=True,
  ip_metadata=metadata
)