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"
  }
}