Multi-sig API
다중 서명(Multisignature, Multi-sig) API는 다중 서명이 필요한 트랜잭션을 전송할 수 있는 지갑 생성, 일반 트랜잭션에 다중 서명을 붙여 다중 서명 트랜잭션으로 만드는 기능 등을 제공합니다.
다중 서명 지갑 생성
다중 서명이 필요한 트랜잭션을 블록체인으로 전송할 수 있는 지갑 계정을 생성합니다.
Request URL
필드명 | 설명 | 타입 | 필수 여부 |
x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request body
필드명 | 설명 | 타입 | 필수 여부 |
from | 다중 서명 지갑을 생성하는 트랜잭션을 블록체인에 전송할 계정 주소입니다. Polygon 블록체인 사용 시 이 트랜잭션을 블록체인으로 전송하려면 API 응답값으로 받은 data.rawTx 에 from 이 서명해야 합니다. | string | Y |
signers | 다중 서명이 필요한 트랜잭션에 서명할 수 있는 지갑 주소들입니다. XPLA 블록체인 사용 시 공개키를 조회할 수 있는 활성화된 지갑 주소를 입력해야 합니다. 지갑을 활성화하려면 지갑에서 아무 트랜잭션이나 블록체인으로 전송하세요. | array | Y |
threshold | 트랜잭션 전송에 필요한 서명자 수 (서명 정족수) | number | Y |
Responses
필드명 | 설명 | 타입 |
code | api 호출 결과 코드, 0:성공 | number |
message | 결과 메시지 | string |
data | API 응답 데이터 | json |
data.address | 생성된 다중 서명 지갑 주소 | string |
data.rawTx | 다중 서명 지갑 생성 트랜잭션을 인코딩한 데이터입니다. Polygon 블록체인 사용 시에만 이 값을 전달 받습니다. | string |
Request sample
curl -X 'POST'
'https://sandbox-bc-api.qpyou.cn/core/v1/multisig'
-H 'accept: */*'
-H 'x-network: polygon'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-d '{
"signers": [
"0xD6e69da7f1be111394dfef4C48eaC9b52ddf2Fd0",
"0xA10078576Ca6f63dc6f78ff9a8ed8bd05B51f463",
"0xa245824a24daf3b312d3f59c7debf162c4993e8b"
],
"threshold": 2,
"from": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
}'
Response sample
// Polygon
{
"code": 0,
"message": "success",
"data": {
"address": "0x777358b228a4720ffa088516294b324f8d24639c",
"rawTx": "02f8748301388182010584c6ee355e84c6ee357682cdc49494853bdc9c6add50d7842..."
}
}
// XPLA
{
"code": 0,
"message": "success",
"data": {
"address": "xpla1qv6s9q8cpwjdwhxkcrrh447keslzu5t605w4gt"
}
}
다중 서명 트랜잭션 생성
어떤 트랜잭션에 여러 서명값들을 붙여 이를 다중 서명 트랜잭션으로 만듭니다. 다중 서명 트랜잭션을 생성하는 일반적인 과정은 다음과 같습니다.
- 다중 서명 지갑 생성
- 블록체인에 전송할 트랜잭션 생성 (예: 토큰 전송 트랜잭션)
- 생성한 트랜잭션 데이터(
data.rawTx
또는 data.hashedTx
)에 서명자들이 서명 후 서명값("signature" 문자열) 수령 - 서명자들은 자신의 서명값을 다중 서명 트랜잭션 생성자에게 전달
- 다중 서명 트랜잭션 생성자는 서명값들과 2번 단계에서 생성한 트랜잭션 데이터를 가지고 본 API를 호출해 다중 서명 트랜잭션(블록체인에 최종적으로 전송할 트랜잭션)을 생성
다중 서명 트랜잭션 생성자는 다중 서명 트랜잭션에 서명하고 이를 블록체인에 전송할 수 있습니다. 단, XPLA 블록체인 사용 시 생성한 트랜잭션에 서명하지 않고 트랜잭션을 블록체인에 전송합니다.
Important
트랜잭션 서명은 게임 유저가 개인 지갑에서 직접 수행하거나 게임사에서 직접 구현하여 진행해야 합니다.
Request URL
필드명 | 설명 | 타입 | 필수 여부 |
x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request body
필드명 | 설명 | 타입 | 필수 여부 |
encoded | 반환받을 트랜잭션의 인코딩 여부 -
true : data.rawTx 로 인코딩된 Raw Transaction String을 받습니다. -
false : data.rawTx 로 인코딩을 디코딩한 JSON 결과값을 받습니다. | string | Y |
from | 다중 서명 트랜잭션을 생성한 후 이를 블록체인으로 전송할 지갑 주소 | string | Y |
to | 다중 서명 지갑 주소 | string | Y |
tx | Token API, NFT API 등 트랜잭션을 생성하는 API 호출 시 응답으로 받는 data.rawTx | string 또는 json | Y |
signatures | 서명자들이 트랜잭션에 서명하고 받은 서명값 문자열(signature)들입니다. - polygon: 트랜잭션을 생성하는 API 응답값 중
data.hashedTx 에 서명했을 때 얻는 서명값 - XPLA: 트랜잭션을 생성하는 API 응답값 중
data.rawTx 에 서명했을 때 얻는 서명값 | array | Y |
Responses
필드명 | 설명 | 타입 |
code | api 호출 결과 코드, 0:성공 | number |
message | 결과 메시지 | string |
data | API 응답 데이터 | json |
data.rawTx | 생성한 다중 서명 트랜잭션을 인코딩한 데이터입니다. Polygon 블록체인 사용 시 다중 서명 트랜잭션 생성자는 이 값에 서명한 후 블록체인에 다중 서명 트랜잭션을 전송할 수 있습니다. | string |
data.reqeustId | API 요청을 식별할 수 있는 고유값 | string |
Request sample
curl -X 'POST'
'https://sandbox-bc-api.qpyou.cn/core/v1/multisig/tx/0x777358b228a4720ffa088516294b324f8d24639c'
-H 'accept: application/json'
-H 'x-network: polygon'
-H 'Content-Type: application/json'
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp...'
-d '{
"encoded": false,
"from": "0xD6e69da7f1be111394dfef4C48eaC9b52ddf2Fd0",
"to": "0x777358b228a4720ffa088516294b324f8d24639c",
"tx": "02f90113830138810c84a8d6983d84a8d6985483058bfe9431a6854383c81daab14089cba0b9de1d42ecd65f80",
"signatures": [
"0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556...",
"84655BB965D709A4AAD4104C7FFBD8E42F52F0BB313493FFDCA02B0..."
]
}'
Response sample
{
"code": 0,
"message": "success",
"data": {
"rawTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076.....",
"reqeustId": "4d4aa1e5-2bfe-4080-b42f-03319810fe29"
}
}