콘텐츠로 이동

Multi-sig API

다중 서명(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.rawTxfrom이 서명해야 합니다. 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"
    }
  }

다중 서명 트랜잭션 생성

어떤 트랜잭션에 여러 서명값들을 붙여 이를 다중 서명 트랜잭션으로 만듭니다. 다중 서명 트랜잭션을 생성하는 일반적인 과정은 다음과 같습니다.

  1. 다중 서명 지갑 생성
  2. 블록체인에 전송할 트랜잭션 생성 (예: 토큰 전송 트랜잭션)
  3. 생성한 트랜잭션 데이터(data.rawTx 또는 data.hashedTx)에 서명자들이 서명 후 서명값("signature" 문자열) 수령
    • 서명 정족수가 3이면 서명값이 3개 필요
  4. 서명자들은 자신의 서명값을 다중 서명 트랜잭션 생성자에게 전달
  5. 다중 서명 트랜잭션 생성자는 서명값들과 2번 단계에서 생성한 트랜잭션 데이터를 가지고 본 API를 호출해 다중 서명 트랜잭션(블록체인에 최종적으로 전송할 트랜잭션)을 생성

다중 서명 트랜잭션 생성자는 다중 서명 트랜잭션에 서명하고 이를 블록체인에 전송할 수 있습니다. 단, XPLA 블록체인 사용 시 생성한 트랜잭션에 서명하지 않고 트랜잭션을 블록체인에 전송합니다.

Important

트랜잭션 서명은 게임 유저가 개인 지갑에서 직접 수행하거나 게임사에서 직접 구현하여 진행해야 합니다.

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 반환받을 트랜잭션의 인코딩 여부
  • 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"
  }
}