GXC 개발사 가이드 - Game-X-Coin/bluepaper GitHub Wiki

GXC 게임 연동 가이드 - 릴리즈


개발자 가이드

1. Connect 소개

GXC Connect 는 유저와 GXC 시스템간의 연결을 담당한다. 유저는 GXC Connect 서비스를 활용하여 GXC 연동된 게임에 안전하게 로그인을 할수 있고, GXC 신규 계정을 생성할수 있다.

  • 신규 계정 생성 혹은 기존 계정으로 GXC 시스템에 접근을 제공
  • GXC 시스템으로 부터 받은 개인키의 안전한 보관 및 관리 기능
  • 보유 GXC 및 보유한 게임 Token들의 입출금 내역에 따른 실시간 푸쉬 알림 기능 제공

1.1. 기능 소개

  1. 신규 계정 생성
    • GXC 코인과 GXC 기반으로 생성된 모든 Token 을 관리할수 있는 GXC 통합 계정을 손쉽게 생성할수 있다.
  2. 계정 로그인
    • GXC 연동이 된 게임에서 토큰을 안정하게 획득하고 사용하기 위해서 GXC Connect은 강력한 보안이 적용된 로그인 시스템을 제공한다.
  3. 개인키 관리
    • 암호화폐 지갑의 보안을 위한 GXC는 개개인들에게 private key 를 제공하고, 제공받은 Private key는 GXC Connect Client 를 통해서 안정하게 관리된다.
  4. 푸시 알림
    • 사용자 계정의 GXC 계정의 모든 GXC Coin 의 입출급 내역을 비롯하여 모든 게임 Token 의 획득 및 사용시에 GXC Connet Clinet를 통해서 사용자는 푸쉬알림을 받을수 있다. ( 모바일 한정 )
  5. 강력한 보안 기능
    • 모바일 디바이스의 connect APP 를 통한 2차 OTP 인증 방식을 제공하여, PC 환경에서도 금융권에 준하는 안정한 보안기능으로 유저의 Private 키를 보호합니다.

1.2. 구성

  • GXC Connect는 실사용자가 직접 이용하는 GXC Connect Client 와 GXC Connect Server 로 구성되어 있다.
  • GXC Connect는 유저의 사용 환경에 따라 다양한 운영체제 및 다양한 디바이스에 맞추어 제공되며, GXC Connect Server는 GXC 메인넷에 포함되어 강력한 보안하에 운영된다.

1.3. GXC Connect Clinet

지원환경 Window MAC Android IOS
지원시점 2018년 4Q 예정 2018년 4Q 2018년 4Q

2. Dev World 기능소개

  1. 개발사 등록
  • Dev월드에서 개발사 공유 ID를 발급받는다.
  • 개발사는 등록된 서비스마다 고유의 권한을 갖는 멤버를 추가한다.

< Dev 월드 대쉬보드 >

< Dev 월드 멤버 관리 >

  1. 서비스 등록
  • Dev월드에서 게임 서비스 플랫폼과 연동하여 게임을 등록한다.
  • Dev월드에 등록된 게임 서비스는 GXC 월드로 통하여 유저에게 노출되며, 서비스에 대한 각종 통계, 보고서 , 유저리뷰관리를 제공한다.

< Dev 월드 서비스 등록 >

< Dev 월드 서비스 현황 >

  1. 토큰 발급
  • Dev 월드에서 각 개발사 고유의 에스크로풀을 활용하여 각 게임사만의 공유 Token을 생성할수 있으며, 각 Token의 GXC대비 가치와 배포 규칙, 사용 규칙들은 각 게임에 맞게 개발사에서 자유롭게 결정할수 있다.

< Dev 월드 토큰 생성 >

  1. 토큰 이벤트 생성
  • 게임사가 각 게임에 알맞게 기획한 토큰 획득 방법 및 사용 방법은 Dev월드에서 "토큰 획득 이벤트"를 등록하면 발급되는 "토큰획득이벤트ID"로 간편하게 관리된다.

< Dev 월드 토큰 이벤트 생성 >

  1. 서비스 대시보드
  • 게임 개발사의 정보 및 서비스 앱의 현황,토큰 정보 , 토큰 이벤트 내역등이 조회되는 대쉬보드를 제공한다.

< Dev 월드 토큰 이벤트 내역 조회 >


GXC SDK

  1. 용어정리
  2. GXC SDK Process
    1. GXC Connect 와 GXC SDK 간의 연동 흐름
  3. Clinet용 GXC SDK 구성
  4. GXC Server-Side API

용어정리

용어 설명
ADMIN_KEY SDK 이용 Key , dev 월드에서 발급되는 정보로, SDK 의 접근권한을 구분한다.
APP ID Dev 월드에서 등록하는 앱의 고유 정보
Company ID Dev 월드에서 등록하는 개발사의 고유 정보
userAccount GXC시스템에서 발급되는 유저의 계정ID
user-info GXC계정이 없는 유저에게 지급한 토큰 지급을 취소할때 사용하는 필드로 게임사에서 유저를 식별할수 있는 정보를 기입한다.
TokenEventID GXC Dev world 에 등록된 토큰 이벤트 정보

GXC SDK Process

계정 생성 및 인증을 담당하는 GXC-Connet 서비스, GXC 메인넷 간의 전체흐름을 정리한다.

전체 흐름도

<그림 : GXC SDK 프로제스 >

계정 생성 및 로그인

GXC Connect 와 GXC SDK 간의 계정 생성 / 로그인 시스템 흐름

예제) 토큰 획득 흐름

< 게임중 토큰 획득하는 USECASE >

< GXC SDK 호출 >

< GXC SDK 로그인 화면 >

  1. 기존 계정이 있는 경우

< GXC Connect 로 연결 >

< GXC Connect 인증 성공하여 게임으로 다시 연결 >

< 게임에서 게임 토큰 획득 성공 >

  1. 신규 계정 생성하는 경우

< GXC Connect 로 신규 계정 생성>

< GXC Connect 인증 성공 >

< 게임에서 게임 토큰 획득 성공 >

Clinet용 GXC SDK 구성

GXC는 게임 개발자가 손쉽게 GXC를 적용하기 위해 다양한 SDK를 제공한다.

  1. 게임 엔진용 Client SDK
  • 게임 제작시 대중적으로 사용되는 게임엔진에서 편리하게 사용가능한 SDK를 제공한다.
게임엔진 2018.3Q 2019.1Q 2019.3Q
Unity3D 지원 지원 지원
Cocos2DX 불가 지원 지원
Unreal 불가 불가 지원
  1. Server to Server API
  • 보안상 중요한 역활을 하는 API는 반듯이 게임서버에서 호출하게 되며, 해당 API의 호출은 개발자사이트에 등록된 IP 정보에 의해 접속이 제한된다.

1. Unity3D SDK 개발 가이드

1.Unity-SDK-설치-환경-및-실행환경

  • 최소버전
    • Unity 5.1 이상 지원
  • 권장버전
    • Unity 2017.1.0 이상

2.SDK 구성

파일 설명
GXC_SDK.unityPackage Unity 플랫폼 배포 패키지
SampleGame.zip 샘플프로젝트. GameXJelly Project Full code
APIReference.zip API 레퍼런스 문서

3 SDK 설치

3.1. Unity 패키지 파일 import하기

<그림: Import 하기 - Unity3d Plug-In GXC >

< 그림 : GXC-game-SDK 파일 구성 >

< 그림 : GXC-game-SDK Editor >

3.2. Unity3d Plug-In For GXC

환경 세팅
키 ID 필수 설명 예시
ADMIN_KEY Y DevWorld에서 발급하는 인증키 123456789012
COMPANY_ID Y DevWorld에서 발급하는 게임사ID 123456789012
APP_ID Y DevWorld에서 발급하는 APP ID 123456789012

3.3. Unity3d Plug-In For GXC 테스트 환경

심플 테스트 환경 제공
  • 개발의 편의성을 위해 admin_key , company_id ,App_id , TokenEvent_id , user_id 정보를 입력하여 빠르게 결과를 확인할수 있는 테스트 환경을 제공합니다.

< 그림 : GXC-game-SDK 테스트 환경 >

  1. 토큰 획득 이벤트 테스트
  • GXC Setting에 필수 데이터를 입력후 "Test:gaining Token"를 선택한후 테스트 진행
  • 테스트 결과는 "Success","Fail" 로 약식 노출된다.
  1. 토큰 사용 이벤트 테스트
  • GXC Setting에 필수 데이터를 입력후 "Test:Use Token"를 선택한후 테스트 진행
  • 테스트 결과는 "Success","Fail" 로 약식 노출된다.
1.1.API 목록
API 명 기능 설명
iniGXClogIn GXC SDK 호출 호출시 게임에서 사용하는 유저 고유 식별자를 parameter넣어준다.
1.3.API 상세
  1. iniGXClogIn
  • GXC SDK의 iniGXClogIn 는 GXC SDK가 제공하는 로그인 화면을 호출하면 사용자는 계정 생성 및 로그인을 선택할수 있고, 로그인 및 계정생성의 필수 정보를 입력후 이후 프로세스 진행을 위해 GXC SDK는 GXC Editor 에 설정된 ADMIN_KEY , Company ID , Application ID 와 Game Application의 handle 을 활용해 GXC Connect를 호출한다. 이때 만약 GXC Connect가 설치되어 있지 않다며 설치페이지로 이동하게 된다.
  • GXC Connect에서 계정 생성 및 로그인 처리가 끝난이후 GXC Connect 는 GXC SDK를 호출한 Game Application을 호출한다.
public static bool iniGXClogIn(string callback)*

Parameter callback : Name of application of callback script.

Rerutn return true if successfully launched, otherwise false.



public myClass : GXC.unity3dsdk {

    void iniGXClogIn()
    {
    Debug.Log("Open GXC SDK");
    }
    
    void terminateGXClogIn
}


GXC Server-Side API

  • GXC 플랫폼의 백앤드 서비스를 호출할 수 있는 HTTP Interface를 제공합니다.

  • 해당 API 는 게임 클라이언트가 아닌 게임 서버에서만 호출되어야 하며 등록된 서버IP 리스트외에는 호출되지 않습니다.

  • 보안

    • HTTP Secure를 기본으로 게임사 고유키(ADMIN_KEY), 앱별로 발급되는 인증키(APP_SECRET) 와 미리 등록된 게임의 Real 서버의 IP 인증을 사용하여 높은 보안성을 제공합니다.
    • request body 의 read timeout 은 1초입니다. header 값이 들어오고 body stream 이 1초내에 들어오지 않으면 BAD_REQUEST 처리됩니다.
    • 잘못된 ADMIN_KEY , companyID , appID 을 사용하여 API를 1분내 5회 이상 지속되면 해당 remote IP에 대해서는 인증 실패 처리를 합니다.

Service API

Resource URL

zone URL
게임 서비스 서버 https://openapi.game.gxc.com:12345/service/[version]/[api명]

Request Header

  1. Service API 는 Request의 http header에 아래의 항목이 포함 되어야 합니다.
  • 게임서버에서 사용되는 Header
Key Description 설명
ADMIN_KEY ADMIN_KEY 인증 설명
companyID 게임사 아이디 설명
appID 게임 앱 아이디 설명
userID 유저 아이디 설명
Content-Type content type 설명
  1. Example

Response

  1. 정상적으로 수행이 된 경우는 OK(200), CODE를 받고, JSON 형태의 리턴 값을 body로 받습니다.

  2. 오류가 발생이 된 경우는 BAD (4XX) , CODE를 받고, JSON형태의 body의 desc 에 자세한 이유가 포함됩니다.

  3. Example

Content-Type: response/json;charset=UTF-8
  
{
 "header": {
    "resultCode": 406,
    "resultMessage": "SUCCESS"
    "successful": true
  },
  "desc": {
  "error-desc" : "No such user(testuserId001:3823428484)"
  }
}
  1. 필드
Key 자료형 설명
resultCode int 결과코드(성공:0, 그외:실패)
resultMessage stiring 결과 메시지
successful boolean 성공 여부
desc desc 결과 상세 정보
error-desc string 오류 상세 정보

GXC Server-Side API 목록

API 기능
gainingToken 유저에게 토큰 지급
gainingToken 유저에게 토큰 지급을 취소
gainingToken 유저가 토큰을 사용
gainingToken 유저가 토큰을 사용한것을 취소

API 상세

1. 토큰 획득 요청

1.1.API
  • /token/token/gainingToken
1.2.Description

게임내에서 유저에게 토큰을 지급할때 사용합니다.

GXC 연동 게임내에서 획득되는 모든 토큰은 GXC Dev World에서 미리 등록된 "토큰 획득 이벤트"에 의해서 제어됩니다.

1.3.Method

POST

1.4.Request Headers
Key Type Mandatory 설명
ADMIN_KEY Sting Y 12 자리
companyID Sting Y 12자리
appID Sting Y 12자리
userAccount Sting Y 12자리, NULL일경우 계정 미소유 유저에게 지급하는 요청으로 처리함.
1.5.Request Body Parameters
Key Type Mandatory 설명
user-info Sting N GXC계정이 없는 유저에게 토큰 지급을 할때 사용하는 필드로 게임사에서 유저를 식별할수 있는 정보를 기입한다.
TokenEventID Sting Y GXC Dev world 에 등록된 토큰 이벤트 정보
1.6.Response Status Code
Status Code 구분 설명
200 정상성공 정상
400 Bad Request 정의되지않은 잘못된 요청
401 Unauthenticated 인증실패
402 invalide companyID 잘못된 companyID
403 expired Token Event 토큰 이벤트 유효기간 지남
404 invalid Token Event ID 잘몬된 토큰 이벤트 ID
405 invalide AppID 잘못된 AppID
406 invalid userAccount 잘못된 UserID
407 invalid user-info 잘못된 user-info
500 Internal Server Error GXC 서버 오류
501 Service Unavailable 서비스 중단 상태( 일시 오류 및 점검등등)
1.7.Response Content
Name Type 설명
logID String 로그아이디
1.8.Example Request
POST /token/token/gainingToken/HTTP/1.1

Host: openapi.game.gxc.com:12345/:10443

Content-Type: application/json;charset=UTF-8

{
"ADMIN_KEY" : "1234567890123456"
"appId" : "1234567890123456"
"userID" : "1234567890123456"
"TokenEventID" : "1234567890123456"
"user-info" : "gameUserID9021332"
}
< 작성중 >

2. 토큰 사용 요청

2.1.API
  • /token/token/usingToken
2.2.Description

유저에게 지급된 토큰을 게임내에서 사용하는 경우 사용합니다.

GXC 연동 게임내에서 소비되는 모든 토큰은 GXC Dev World에서 미리 등록된 "토큰 소비 이벤트"에 의해서 제어됩니다.

2.3.Method

POST

2.4.Request Headers
Key Type Mandatory 설명
ADMIN_KEY Sting Y 12 자리
companyID Sting Y 12자리
appID Sting Y 12자리
userAccount Sting Y 12자리
2.5.Request Body Parameters
Key Type Mandatory 설명
TokenEventID Sting Y GXC Dev world 에 등록된 토큰 이벤트 정보
2.6.Response Status Code
Status Code 구분 설명
200 정상성공 정상
400 Bad Request 정의되지않은 잘못된 요청
401 Unauthenticated 인증실패
402 invalide companyID 잘못된 companyID
403 expired Token Event 토큰 이벤트 유효기간 지남
404 invalid Token Event ID 잘몬된 토큰 이벤트 ID
405 invalide AppID 잘못된 AppID
406 invalid UserID 잘못된 UserID
407 invalid user-info 잘못된 user-info
500 Internal Server Error GXC 서버 오류
501 Service Unavailable 서비스 중단 상태( 일시 오류 및 점검등등)
2.7.Response Content
Name Type 설명
logID String 로그아이디
2.8.Example Request
POST /token/token/usingToken/HTTP/1.1

Host: openapi.game.gxc.com:12345/:10443

Content-Type: application/json;charset=UTF-8

{
"ADMIN_KEY" : "1234567890123456"
"appId" : "1234567890123456"
"userID" : "1234567890123456"
"TokenEventID" : "1234567890123456"
"user-info" : "gameUserID9021332"
}


5. 토큰 획득 취소 요청

4.1.API
  • /token/token/cancelGainingToken
4.2.Description

사용자의 토튼 획득을 취소합니다. 블록체인에서 기록을 삭제하는 것은 불가능하며 내부적으로는 유저의 wallet 에서 개발사측의 wallet 으로 token을 이동하게 됩니다.

4.3.Method

POST

4.4.Request Headers
Key Type Mandatory 설명
ADMIN_KEY Sting Y 12 자리
companyID Sting Y 12자리
appID Sting Y 12자리
userAccount Sting Y 12자리, NULL일경우 계정 미소유 유저에게 지급한 토큰을 취소하는 요청으로 처리함.
4.5.Request Body Parameters
Key Type Mandatory 설명
user-info Sting N GXC계정이 없는 유저에게 지급한 토큰 지급을 취소할때 사용하는 필드로 게임사에서 유저를 식별할수 있는 정보를 기입한다.
TokenEventID Sting Y GXC Dev world 에 등록된 토큰 이벤트 정보
4.6.Response Status Code
Status Code 구분 설명
200 정상성공 정상
400 Bad Request 정의되지않은 잘못된 요청
401 Unauthenticated 인증실패
402 invalide companyID 잘못된 companyID
403 expired Token Event 토큰 이벤트 유효기간 지남
404 invalid Token Event ID 잘몬된 토큰 이벤트 ID
405 invalide AppID 잘못된 AppID
406 invalid userAccount 잘못된 UserID
407 invalid user-info 잘못된 user-info
500 Internal Server Error GXC 서버 오류
501 Service Unavailable 서비스 중단 상태( 일시 오류 및 점검등등)
600 token is insufficient 유저가 보유한 토큰의 양이 취소할 토큰보다 적은 경우
4.7.Response Content
Name Type 설명
logID String 로그아이디
4.8.Example Request
POST /token/token/usingToken/HTTP/1.1

Host: openapi.game.gxc.com:12345/:10443

Content-Type: application/json;charset=UTF-8

{
"ADMIN_KEY" : "1234567890123456"
"appId" : "1234567890123456"
"userID" : "1234567890123456"
"TokenEventID" : "1234567890123456"
"user-info" : "gameUserID9021332"
}


6. 토큰 사용 취소 요청

4.1.API
  • /token/token/cancelUsingToken
4.2.Description

사용자의 토튼 사용을 취소합니다.

4.3.Method

POST

4.4.Request Headers
Key Type Mandatory 설명
ADMIN_KEY Sting Y 12 자리
companyID Sting Y 12자리
appID Sting Y 12자리
userAccount Sting Y 12자리
4.5.Request Body Parameters
Key Type Mandatory 설명
TokenEventID Sting Y GXC Dev world 에 등록된 토큰 이벤트 정보
4.6.Response Status Code
Status Code 구분 설명
200 정상성공 정상
400 Bad Request 정의되지않은 잘못된 요청
401 Unauthenticated 인증실패
402 invalide companyID 잘못된 companyID
403 expired Token Event 토큰 이벤트 유효기간 지남
404 invalid Token Event ID 잘몬된 토큰 이벤트 ID
405 invalide AppID 잘못된 AppID
406 invalid userAccount 잘못된 UserID
407 invalid user-info 잘못된 user-info
500 Internal Server Error GXC 서버 오류
501 Service Unavailable 서비스 중단 상태( 일시 오류 및 점검등등)
600 token is insufficient 개발사가 보유한 토큰의 양이 유저에게 전달할 토큰보다 적은 경우
4.7.Response Content
Name Type 설명
logID String 로그아이디
4.8.Example Request
POST /token/token/usingToken/HTTP/1.1

Host: openapi.game.gxc.com:12345/:10443

Content-Type: application/json;charset=UTF-8

{
"ADMIN_KEY" : "1234567890123456"
"appId" : "1234567890123456"
"userID" : "1234567890123456"
"TokenEventID" : "1234567890123456"
"user-info" : "gameUserID9021332"
}


⚠️ **GitHub.com Fallback** ⚠️