Web3 Pass

Overview

Web3 Pass API를 발행, 조회, 사용처리 하기 위한 API들을 제공합니다.

Web3 Pass API를 사용하기에 앞서, 루니버스 콘솔에서 Pass에 사용할 Role을 정의한뒤, Event와 연결된 Pass를 먼저 생성하고 Role을 부여하는 작업이 완료되어야 합니다. 관련 가이드는 Web3 Pass 가이드 문서를 참고해주세요.

Usecases

  • POST issuePass
    • NFT Holder에게 해당 Pass를 발급할 수 있습니다. Event와 Pass 유형을 먼저 콘솔에서 생성한 뒤 호출할 수 있습니다.
  • GET getIssuedPassbyId
    • 발급된 Pass 정보를 조회합니다.
  • GET listIssuedPasses
    • 발급된 Pass 목록을 조회합니다.
  • PUT updateIssuedPassbyId
    • 특정 Holder에게 발급된 Pass를 재발급합니다.
  • POST redeemIssuedPassbyId
    • 발행된 Pass를 사용 완료처리합니다. 1회 사용 Pass로 정의된 경우 이 API를 통해 Redeem되면, 재사용 할 수 없습니다.

🚧

루니버스 사이드 체인에 발행된 NFT에 대해 Web3 Pass를 도입해보세요!

루니버스는 수많은 파트너사의 사이드 체인을 운영하고 있으며, 각각의 개별 시스템은 독립적으로 운영되고 있습니다. 사이드 체인에서 Web3 Pass를 사용하기 위해서는, 해당 체인 환경에 배포된 NFT 컨트랙트를 지속적으로 모니터링 할 수 있도록 설정하는 별도의 작업이 필요합니다. 사이드체인 환경에서 Web3 Pass를 사용하고자 하시는 경우, [email protected]로 Environment ID와 함께 지원 요청 메일을 보내주세요! 기술 지원팀에서 빠른 지원을 통해 Web3 Pass 사용을 도와드립니다.


📘

유저(EOA)의 NFT 보유 여부 확인을 위한 EIP-712

Web3 Pass에서는 EIP-712 표준을 이용하여 유저(EOA)의 NFT 보유 여부를 확인하고 있습니다. EIP-712 표준을 지원하는 지갑을 이용하여 NFT 보유 여부를 확인하는 로직을 직접 구현할 수 있으며, 구현에 필요한 EIP-712 표준은 다음과 같습니다.

{
   "typedData":{
      "domain":{
         "name":"luniverse-pass",
         "version":"1"
      },
      "types":{
         "EIP712Domain":[
            {
               "name":"name",
               "type":"string"
            },
            {
               "name":"version",
               "type":"string"
            }
         ],
         "Pass":[
            {
               "name":"holder",
               "type":"address"
            },
            {
               "name":"contractAddress",
               "type":"address"
            },
            {
               "name":"tokenId",
               "type":"uint256"
            },
            {
               "name":"environmentId",
               "type":"string"
            }
         ]
      },
      "message":{
         "holder":"0x41c60eF8F977f0d7035f01C8f77eb55ea9641b02",
         "contractAddress":"0x0000000000000000000000000000000000000000",
         "tokenId":{Your NFT Token ID},
         "environmentId":"{Your Node ID}"      
			}
   }
}
{
  "result": true,
  "data": {
     "signedTypeData": "string"
  }
}