커스텀 NFT

커스텀 NFT란?

NFT 커스텀 컨트랙트 배포 신청 API를 이용하면 여러 옵션을 선택하여 원하는 형태의 NFT 컨트랙트를 배포할 수 있습니다.

현재 EVM 계열 플랫폼을 지원합니다.






권한 시스템

지원되는 권한 시스템은 다음과 같습니다.

권한내용
OWNABLE관리자가 모든 권한을 가집니다.
ROLES각 기능 별 권한을 분리할 수 있습니다.

Ownable

관리자가 컨트랙트에 대한 모든 권한을 가집니다. 해당 오너쉽은 NFT Contract Method Execution 신청 API를 이용하여 이관할 수 있습니다. (transferOwnership)


Roles

권한을 기능 별로 분리할 수 있습니다. NFT Contract Method Execution 신청 API를 이용하여 각 권한을 부여하거나 해제할 수 있습니다. (grant, revoke)






NFT 기능

아래와 같은 NFT 기능을 활성화할 수 있습니다.

기능 내용
[공통]
BURNABLENFT 소유자가 자신의 NFT를 소각할 수 있습니다.
OWNER_BURNABLE 관리자가 특정 NFT를 소각할 수 있습니다.
PAUSABLE관리자가 컨트랙트를 중지시킬 수 있습니다. (PAUSE, UNNPAUSE)
컨트랙트가 중지되면 아이템 발행 및 소각을 진행할 수 없습니다.
MINTABLE관리자가 NFT를 발행할 수 있습니다.
해당 기능이 비활성화되면 NFT 아이템을 발행할 수 없습니다.
AIRDROP관리자가 같은 종류의 NFT를 여러 주소에게 발행할 수 있습니다.
[ERC-721]
ENUMERABLE모든 NFT 리스트를 블록체인 상에서 확인할 수 있습니다.
tokenOfOwnerByIndex, totalSupply, tokenByIndex 등 컨트랙트에 대해서 RPC를 조회할 수 있는 method를 지원합니다.
URI_STORAGENFT를 발행할 때마다 URI를 입력받고 연결시킵니다.
NFT 발행 시 URI를 필수적으로 입력해야 합니다.
INCREMENTALNFT 아이템의 번호를 0번부터 순차적으로 부여합니다.
NFT 발행 시 토큰아이디를 입력하지 않습니다.
[ERC-1155]
SUPPLY토큰아이디 별 총 발행량을 확인할 수 있습니다.
컨트랙트에 대해서 RPC를 조회할 수 있는 method를 지원합니다.
UPDATABLE_URI관리자가 URI를 수정할 수 있습니다.


요청 예시

curl --request POST \
     --url https://{{apiEndpoint}}/2.0/wallets/55/nfts/contracts/custom-deployments \
     --header 'Authorization: Bearer ' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "contractSpec": "ERC721",
  "nftRoleSystem": "ownable",
  "nftFeatures": [
    "MINTABLE",
    "BURNABLE",
    "OWNER_BURNABLE"
  ],
  "requestId": "random-string",
  "contractName": "test",
  "tokenSymbol": "TEST",
  "senderAddress": "0x3840a99FFB6A6c85CEB5697EEC0C55b1734baDaC"
}
'

응답 예시

{
  "uuid": "745dc90f-8888-46f9-a9b5-a65ea5073d45"
}