Lock API
Lock API는 NFT 토큰을 거래할 수 없도록 잠그거나 다시 거래할 수 있도록 잠금 해제하는 기능을 제공합니다.
잠금 컨트랙트 배포
잠금 컨트랙트를 배포하는 트랜잭션을 생성합니다. 잠금 컨트랙트는 지갑에 있는 NFT 토큰을 거래할 수 없도록 잠그거나 다시 거래할 수 있도록 잠금 해제하는 기능을 제공합니다.
Request URL
| 필드명 | 설명 | 타입 | 필수 여부 |
| x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
| Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request body
| 필드명 | 설명 | 타입 | 필수 여부 |
| name | 잠금 컨트랙트 이름 | string | Y |
| from | 잠금 컨트랙트를 배포할 지갑 주소 | string | Y |
| executer | 잠긴 NFT를 잠금 해제할 수 있는 지갑 주소입니다. 기본값은 from에 입력한 주소입니다. | string | N |
| encoded | 반환받을 트랜잭션의 인코딩 여부 -
true: data.rawTx으로 인코딩된 Raw Transaction String을 받습니다. -
false: data.rawTx으로 인코딩을 디코딩한 JSON 결과값을 받습니다. | boolean | N |
Responses
| 필드명 | 설명 | 타입 |
| code | api 호출 결과 코드, 0:성공 | number |
| message | 결과 메시지 | string |
| data | API 응답 데이터 | json |
| data.rawTx | 트랜잭션 데이터 | string 또는 json |
| data.hashedTx | 해시한 data.rawTx입니다. API 헤더 x-network가 polygon이고 Request Body from이 다중 서명 지갑 주소일 때에만 이 값을 받습니다. | string |
| data.requestId | API 요청을 식별할 수 있는 고유값 | string |
Request sample
curl -X 'POST'
'https://sandbox-bc-api.qpyou.cn/core/v1/lock/contract'
-H 'accept: application/json'
-H 'x-network: polygon'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-H 'Content-Type: application/json'
-d '{
"encoded": true,
"name": "lock_test",
"from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39"
}'
Response sample
{
"code": 0,
"message": "success",
"data": {
"rawTx": "02f8738301388181c2846fc23ac0846fc23ad882cdc49494853bdc9c6add50d7842d1a3117fab38545747080b8...",
"hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
"requestId": "4d4aa1e5-2bfe-4080-b42f-03319810fe29"
}
}
NFT 잠금
NFT 잠금이란 발행한 NFT를 거래할 수 없도록 잠그는 것입니다. 게임 유저가 게임 아이템을 민팅해서 NFT를 얻은 후 다시 게임에서 해당 아이템 사용을 원할 경우 NFT를 거래할 수 없도록 잠급니다. NFT 소유자(owner)는 보유한 NFT(tokenId)를 사용할 수 없도록 잠금 설정 트랜잭션을 생성합니다.
Request URL
Path parameters
| 필드명 | 설명 | 타입 | 필수 여부 |
| contract | NFT 컨트랙트 주소 | string | Y |
| 필드명 | 설명 | 타입 | 필수 여부 |
| x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
| Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request body
| 필드명 | 설명 | 타입 | 필수 여부 |
| from | NFT 소유자 지갑 주소 | string | Y |
| lockContract | 잠금 컨트랙트 주소 | string | Y |
| tokenId | NFT ID | string | Y |
| encoded | 반환받을 트랜잭션의 인코딩 여부 -
true: data.rawTx으로 인코딩된 Raw Transaction String을 받습니다. -
false: data.rawTx으로 인코딩을 디코딩한 JSON 결과값을 받습니다.
| boolean | N |
Responses
| 필드명 | 설명 | 타입 |
| code | api 호출 결과 코드, 0:성공 | number |
| message | 결과 메시지 | string |
| data | API 응답 데이터 | json |
| data.rawTx | 트랜잭션 데이터 | string 또는 json |
| data.hashedTx | 해시한 data.rawTx입니다. API 헤더 x-network가 polygon이고 Request Body from이 다중 서명 지갑 주소일 때에만 이 값을 받습니다. | string |
| data.requestId | API 요청을 식별할 수 있는 고유값 | string |
Request sample
curl -X 'POST'
'https://sandbox-bc-api.qpyou.cn/core/v1/nft/contract/0x777358b228a4720ffa088516294b324f8d24639c/lock'
-H 'accept: application/json'
-H 'x-network: polygon'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-H 'Content-Type: application/json'
-d '{
"from": "0xA10078576Ca6f63dc6f78ff9a8ed8bd05B51f463",
"lockContract": "0xD6e69da7f1be111394dfef4C48eaC9b52ddf2Fd0",
"tokenId": "1",
"encoded": true
}'
Response sample
// When the encoded is set to true
{
"code": 0,
"message": "success",
"data": {
"rawTx": "02f8d3830138810b8458e948068458e948168302e71494ebd9144485089ebe248f8490...",
"hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
"requestId": "5743f0aa-0323-47fc-a3da-173eee27bbe4"
}
}
// When the encoded is set to false
{
"code": 0,
"message": "success",
"data": {
"rawTx": {
"from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
"to": "0xebd9144485089ebe248f8490984a60579407c262",
"data": "0xb88d4fde000000000000000000000000dcd51770d06b54204abd8c30a25b4583d4cab...",
"nonce": 11,
"chainId": 80001,
"gas": 190228,
"maxFeePerGas": 1491259270,
"maxPriorityFeePerGas": 1491259255
},
"hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
"requestId": "dd33ddd8-31fa-4491-9c3c-2f912f7059bc"
}
}
NFT 잠금 해제
NFT(tokenId)를 사용할 수 있도록 토큰 소유자(owner)가 잠금 설정을 해제하는 트랜잭션을 생성합니다.
Request URL
Path parameters
| 필드명 | 설명 | 타입 | 필수 여부 |
| contract | 잠금 컨트랙트 주소 | string | Y |
| 필드명 | 설명 | 타입 | 필수 여부 |
| x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
| Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request body
| 필드명 | 설명 | 타입 | 필수 여부 |
| nftContract | NFT 컨트랙트 주소 | string | Y |
| from | 잠금 컨트랙트를 배포한 계정(잠금 컨트랙트 소유자) 지갑 주소 | string | Y |
| tokenId | NFT ID | string | Y |
| encoded | 반환받을 트랜잭션의 인코딩 여부 -
true: data.rawTx으로 인코딩된 Raw Transaction String을 받습니다. -
false: data.rawTx으로 인코딩을 디코딩한 JSON 결과값을 받습니다.
| boolean | N |
Responses
| 필드명 | 설명 | 타입 |
| code | api 호출 결과 코드, 0:성공 | number |
| message | 결과 메시지 | string |
| data | API 응답 데이터 | json |
| data.rawTx | 트랜잭션 데이터 | string 또는 json |
| data.hashedTx | 해시한 data.rawTx입니다. API 헤더 x-network가 polygon이고 Request Body from이 다중 서명 지갑 주소일 때에만 이 값을 받습니다. | string |
| data.requestId | API 요청을 식별할 수 있는 고유값 | string |
Request sample
curl -X 'POST'
'https://sandbox-bc-api.qpyou.cn/core/v1/lock/contract/0xa245824a24daf3b312d3f59c7debf162c4993e8b/unlock'
-H 'accept: application/json'
-H 'x-network: polygon'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-H 'Content-Type: application/json'
-d '{
"nftContract": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
"from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
"tokenId": "1",
"encoded": true
}'
Response sample
{
"code": 0,
"message": "success",
"data": {
"rawTx": "02f873830138810c8451f4d5c08451f4d5cf83018c0694572f47db51a98...",
"hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
"requestId": "0e40db96-8964-410f-81e2-a968269872d4"
}
}
잠금 설정한 NFT를 소유한 계정 조회
잠금 설정한 NFT(tokenId)의 소유자 계정을 조회합니다.
Request URL
Path parameters
| 필드명 | 설명 | 타입 | 필수 여부 |
| contract | 잠금 컨트랙트 주소 | string | Y |
| tokenId | NFT ID | string | Y |
| 필드명 | 설명 | 타입 | 필수 여부 |
| x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
| Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Query parameters
| 필드명 | 설명 | 타입 | 필수 여부 |
| nftContract | NFT 컨트랙트 주소 | string | Y |
Responses
| 필드명 | 설명 | 타입 |
| code | api 호출 결과 코드, 0:성공 | number |
| message | 결과 메시지 | string |
| data | API 응답 데이터 | json |
| data.owner | NFT 소유자 계정 주소 | string |
Request sample
curl -X 'GET'
'https://sandbox-bc-api.qpyou.cn/core/v1/lock/contract/0xa245824a24daf3b312d3f59c7debf162c4993e8b/token/1/account?nftContract=0x777358b228a4720ffa088516294b324f8d24639c'
-H 'accept: application/json'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-H 'x-network: polygon'
Response sample
{
"code": 0,
"message": "success",
"data": {
"owner": "0xA10078576Ca6f63dc6f78ff9a8ed8bd05B51f463"
}
}
잠금 설정한 NFT 조회
잠금 컨트랙트(contract) 주소에서 특정 소유자(owner)의 잠금 설정한 NFT를 조회합니다.
Request URL
Path parameters
| 필드명 | 설명 | 타입 | 필수 여부 |
| contract | 잠금 컨트랙트 주소 | string | Y |
| owner | NFT 소유자 주소 | string | Y |
| 필드명 | 설명 | 타입 | 필수 여부 |
| x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
| Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Responses
| 필드명 | 설명 | 타입 |
| code | api 호출 결과 코드, 0:성공 | number |
| message | 결과 메시지 | string |
| data | API 응답 데이터 | json |
| data.tokens | 잠금 설정한 NFT 목록 | array |
| data.tokens.owner | NFT 소유자 지갑 주소 | string |
| data.tokens.nftAddress | NFT 컨트랙트 주소 | string |
| data.tokens.tokenId | NFT ID | string |
Request sample
curl -X 'GET'
'https://sandbox-bc-api.qpyou.cn/core/v1/lock/contract/0xa245824a24daf3b312d3f59c7debf162c4993e8b/account/0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765/tokens'
-H 'accept: application/json'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-H 'x-network: polygon'
Response sample
{
"code": 0,
"message": "success",
"data": {
"tokens": [
{
"owner": "0xA10078576Ca6f63dc6f78ff9a8ed8bd05B51f463",
"nftAddress": "0xeBd9144485089EbE248f8490984A60579407c262",
"tokenId": "2"
}
]
}
}