다중 서명(Multisignature, Multi-sig) API는 다중 서명이 필요한 트랜잭션을 전송할 수 있는 지갑 생성, 일반 트랜잭션에 다중 서명을 붙여 다중 서명 트랜잭션으로 만드는 기능 등을 제공합니다.
다중 서명 지갑 생성
다중 서명이 필요한 트랜잭션을 블록체인으로 전송할 수 있는 지갑 계정을 생성합니다.
Request URL
Live URL | https://bc-api.qpyou.cn/core/v1/multisig |
---|---|
Sandbox URL | https://sandbox-bc-api.qpyou.cn/core/v1/multisig |
HTTP Method | POST |
Content-Type | application/json |
Header Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Polygon { "code": 0, "message": "success", "data": { "address": "0x777358b228a4720ffa088516294b324f8d24639c", "rawTx": "02f8748301388182010584c6ee355e84c6ee357682cdc49494853bdc9c6add50d7842..." } } // XPLA { "code": 0, "message": "success", "data": { "address": "xpla1qv6s9q8cpwjdwhxkcrrh447keslzu5t605w4gt" } } |
다중 서명 트랜잭션 생성
어떤 트랜잭션에 여러 서명값들을 붙여 이를 다중 서명 트랜잭션으로 만듭니다. 다중 서명 트랜잭션을 생성하는 일반적인 과정은 다음과 같습니다.
- 다중 서명 지갑 생성
- 블록체인에 전송할 트랜잭션 생성 (예: 토큰 전송 트랜잭션)
- 생성한 트랜잭션 데이터(
data.rawTx
또는data.hashedTx
)에 서명자들이 서명 후 서명값(“signature” 문자열) 수령- 서명 정족수가 3이면 서명값이 3개 필요
- 서명자들은 자신의 서명값을 다중 서명 트랜잭션 생성자에게 전달
- 다중 서명 트랜잭션 생성자는 서명값들과 2번 단계에서 생성한 트랜잭션 데이터를 가지고 본 API를 호출해 다중 서명 트랜잭션(블록체인에 최종적으로 전송할 트랜잭션)을 생성
다중 서명 트랜잭션 생성자는 다중 서명 트랜잭션에 서명하고 이를 블록체인에 전송할 수 있습니다. 단, XPLA 블록체인 사용 시 생성한 트랜잭션에 서명하지 않고 트랜잭션을 블록체인에 전송합니다.
Request URL
Live URL | https://bc-api.qpyou.cn/core/v1/multisig/tx |
---|---|
Sandbox URL | https://sandbox-bc-api.qpyou.cn/core/v1/multisig/tx |
HTTP Method | POST |
Content-Type | application/json |
Header Parameters
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
x-network | 블록체인 네트워크{ploygon, xpla} | string | Y |
Authorization | API를 호출하기 위한 인증 토큰 | string | Y |
Request Body
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
encoded |
반환받을 트랜잭션의 인코딩 여부
|
string | Y |
from | 다중 서명 트랜잭션을 생성한 후 이를 블록체인으로 전송할 지갑 주소 | string | Y |
to | 다중 서명 지갑 주소 | string | Y |
tx | Token API, NFT API 등 트랜잭션을 생성하는 API 호출 시 응답으로 받는 data.rawTx |
string 또는 json | Y |
signatures | 서명자들이 트랜잭션에 서명하고 받은 서명값 문자열(signature)들입니다.
|
array | Y |
Responses
필드명 | 설명 | 타입 |
---|---|---|
code | api 호출 결과 코드, 0:성공 | number |
message | 결과 메시지 | string |
data | API 응답 데이터 | json |
data.rawTx | 생성한 다중 서명 트랜잭션을 인코딩한 데이터입니다. Polygon 블록체인 사용 시 다중 서명 트랜잭션 생성자는 이 값에 서명한 후 블록체인에 다중 서명 트랜잭션을 전송할 수 있습니다. | string |
data.reqeustId | API 요청을 식별할 수 있는 고유값 | string |
Request Sample
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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
1 2 3 4 5 6 7 8 |
{ "code": 0, "message": "success", "data": { "rawTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076.....", "reqeustId": "4d4aa1e5-2bfe-4080-b42f-03319810fe29" } } |