-
Notifications
You must be signed in to change notification settings - Fork 2
GXC 개발사 가이드
GXC Connect 는 유저와 GXC 시스템간의 연결을 담당한다. 유저는 GXC Connect 서비스를 활용하여 GXC 연동된 게임에 안전하게 로그인을 할수 있고, GXC 신규 계정을 생성할수 있다.
- 신규 계정 생성 혹은 기존 계정으로 GXC 시스템에 접근을 제공
- GXC 시스템으로 부터 받은 개인키의 안전한 보관 및 관리 기능
- 보유 GXC 및 보유한 게임 Token들의 입출금 내역에 따른 실시간 푸쉬 알림 기능 제공
- 신규 계정 생성
- GXC 코인과 GXC 기반으로 생성된 모든 Token 을 관리할수 있는 GXC 통합 계정을 손쉽게 생성할수 있다.
- 계정 로그인
- GXC 연동이 된 게임에서 토큰을 안정하게 획득하고 사용하기 위해서 GXC Connect은 강력한 보안이 적용된 로그인 시스템을 제공한다.
- 개인키 관리
- 암호화폐 지갑의 보안을 위한 GXC는 개개인들에게 private key 를 제공하고, 제공받은 Private key는 GXC Connect Client 를 통해서 안정하게 관리된다.
- 푸시 알림
- 사용자 계정의 GXC 계정의 모든 GXC Coin 의 입출급 내역을 비롯하여 모든 게임 Token 의 획득 및 사용시에 GXC Connet Clinet를 통해서 사용자는 푸쉬알림을 받을수 있다. ( 모바일 한정 )
- 강력한 보안 기능
- 모바일 디바이스의 connect APP 를 통한 2차 OTP 인증 방식을 제공하여, PC 환경에서도 금융권에 준하는 안정한 보안기능으로 유저의 Private 키를 보호합니다.
- GXC Connect는 실사용자가 직접 이용하는 GXC Connect Client 와 GXC Connect Server 로 구성되어 있다.
- GXC Connect는 유저의 사용 환경에 따라 다양한 운영체제 및 다양한 디바이스에 맞추어 제공되며, GXC Connect Server는 GXC 메인넷에 포함되어 강력한 보안하에 운영된다.
지원환경 | Window | MAC | Android | IOS |
---|---|---|---|---|
지원시점 | 2018년 4Q | 예정 | 2018년 4Q | 2018년 4Q |
- 개발사 등록
- Dev월드에서 개발사 공유 ID를 발급받는다.
- 개발사는 등록된 서비스마다 고유의 권한을 갖는 멤버를 추가한다.
< Dev 월드 대쉬보드 >
< Dev 월드 멤버 관리 >
- 서비스 등록
- Dev월드에서 게임 서비스 플랫폼과 연동하여 게임을 등록한다.
- Dev월드에 등록된 게임 서비스는 GXC 월드로 통하여 유저에게 노출되며, 서비스에 대한 각종 통계, 보고서 , 유저리뷰관리를 제공한다.
< Dev 월드 서비스 등록 >
< Dev 월드 서비스 현황 >
- 토큰 발급
- Dev 월드에서 각 개발사 고유의 에스크로풀을 활용하여 각 게임사만의 공유 Token을 생성할수 있으며, 각 Token의 GXC대비 가치와 배포 규칙, 사용 규칙들은 각 게임에 맞게 개발사에서 자유롭게 결정할수 있다.
< Dev 월드 토큰 생성 >
- 토큰 이벤트 생성
- 게임사가 각 게임에 알맞게 기획한 토큰 획득 방법 및 사용 방법은 Dev월드에서 "토큰 획득 이벤트"를 등록하면 발급되는 "토큰획득이벤트ID"로 간편하게 관리된다.
< Dev 월드 토큰 이벤트 생성 >
- 서비스 대시보드
- 게임 개발사의 정보 및 서비스 앱의 현황,토큰 정보 , 토큰 이벤트 내역등이 조회되는 대쉬보드를 제공한다.
< Dev 월드 토큰 이벤트 내역 조회 >
- 용어정리
- GXC SDK Process
- GXC Connect 와 GXC SDK 간의 연동 흐름
- Clinet용 GXC SDK 구성
- 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-Connet 서비스, GXC 메인넷 간의 전체흐름을 정리한다.
<그림 : GXC SDK 프로제스 >
< 게임중 토큰 획득하는 USECASE >
< GXC SDK 호출 >
< GXC SDK 로그인 화면 >
- 기존 계정이 있는 경우
< GXC Connect 로 연결 >
< GXC Connect 인증 성공하여 게임으로 다시 연결 >
< 게임에서 게임 토큰 획득 성공 >
- 신규 계정 생성하는 경우
< GXC Connect 로 신규 계정 생성>
< GXC Connect 인증 성공 >
< 게임에서 게임 토큰 획득 성공 >
GXC는 게임 개발자가 손쉽게 GXC를 적용하기 위해 다양한 SDK를 제공한다.
- 게임 엔진용 Client SDK
- 게임 제작시 대중적으로 사용되는 게임엔진에서 편리하게 사용가능한 SDK를 제공한다.
게임엔진 | 2018.3Q | 2019.1Q | 2019.3Q |
---|---|---|---|
Unity3D | 지원 | 지원 | 지원 |
Cocos2DX | 불가 | 지원 | 지원 |
Unreal | 불가 | 불가 | 지원 |
- Server to Server API
- 보안상 중요한 역활을 하는 API는 반듯이 게임서버에서 호출하게 되며, 해당 API의 호출은 개발자사이트에 등록된 IP 정보에 의해 접속이 제한된다.
- 최소버전
- Unity 5.1 이상 지원
- 권장버전
- Unity 2017.1.0 이상
파일 | 설명 |
---|---|
GXC_SDK.unityPackage | Unity 플랫폼 배포 패키지 |
SampleGame.zip | 샘플프로젝트. GameXJelly Project Full code |
APIReference.zip | API 레퍼런스 문서 |
<그림: Import 하기 - Unity3d Plug-In GXC >
< 그림 : GXC-game-SDK 파일 구성 >
< 그림 : GXC-game-SDK Editor >
키 ID | 필수 | 설명 | 예시 |
---|---|---|---|
ADMIN_KEY | Y | DevWorld에서 발급하는 인증키 | 123456789012 |
COMPANY_ID | Y | DevWorld에서 발급하는 게임사ID | 123456789012 |
APP_ID | Y | DevWorld에서 발급하는 APP ID | 123456789012 |
- 개발의 편의성을 위해 admin_key , company_id ,App_id , TokenEvent_id , user_id 정보를 입력하여 빠르게 결과를 확인할수 있는 테스트 환경을 제공합니다.
< 그림 : GXC-game-SDK 테스트 환경 >
- 토큰 획득 이벤트 테스트
- GXC Setting에 필수 데이터를 입력후 "Test:gaining Token"를 선택한후 테스트 진행
- 테스트 결과는 "Success","Fail" 로 약식 노출된다.
- 토큰 사용 이벤트 테스트
- GXC Setting에 필수 데이터를 입력후 "Test:Use Token"를 선택한후 테스트 진행
- 테스트 결과는 "Success","Fail" 로 약식 노출된다.
API 명 | 기능 | 설명 |
---|---|---|
iniGXClogIn | GXC SDK 호출 | 호출시 게임에서 사용하는 유저 고유 식별자를 parameter넣어준다. |
- 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 플랫폼의 백앤드 서비스를 호출할 수 있는 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에 대해서는 인증 실패 처리를 합니다.
zone | URL |
---|---|
게임 서비스 서버 | https://openapi.game.gxc.com:12345/service/[version]/[api명] |
- Service API 는 Request의 http header에 아래의 항목이 포함 되어야 합니다.
- 게임서버에서 사용되는 Header
Key | Description | 설명 |
---|---|---|
ADMIN_KEY | ADMIN_KEY 인증 | 설명 |
companyID | 게임사 아이디 | 설명 |
appID | 게임 앱 아이디 | 설명 |
userID | 유저 아이디 | 설명 |
Content-Type | content type | 설명 |
- Example
-
정상적으로 수행이 된 경우는 OK(200), CODE를 받고, JSON 형태의 리턴 값을 body로 받습니다.
-
오류가 발생이 된 경우는 BAD (4XX) , CODE를 받고, JSON형태의 body의 desc 에 자세한 이유가 포함됩니다.
-
Example
Content-Type: response/json;charset=UTF-8
{
"header": {
"resultCode": 406,
"resultMessage": "SUCCESS"
"successful": true
},
"desc": {
"error-desc" : "No such user(testuserId001:3823428484)"
}
}
- 필드
Key | 자료형 | 설명 |
---|---|---|
resultCode | int | 결과코드(성공:0, 그외:실패) |
resultMessage | stiring | 결과 메시지 |
successful | boolean | 성공 여부 |
desc | desc | 결과 상세 정보 |
error-desc | string | 오류 상세 정보 |
API | 기능 |
---|---|
gainingToken | 유저에게 토큰 지급 |
gainingToken | 유저에게 토큰 지급을 취소 |
gainingToken | 유저가 토큰을 사용 |
gainingToken | 유저가 토큰을 사용한것을 취소 |
- /token/token/gainingToken
게임내에서 유저에게 토큰을 지급할때 사용합니다.
GXC 연동 게임내에서 획득되는 모든 토큰은 GXC Dev World에서 미리 등록된 "토큰 획득 이벤트"에 의해서 제어됩니다.
POST
Key | Type | Mandatory | 설명 |
---|---|---|---|
ADMIN_KEY | Sting | Y | 12 자리 |
companyID | Sting | Y | 12자리 |
appID | Sting | Y | 12자리 |
userAccount | Sting | Y | 12자리, NULL일경우 계정 미소유 유저에게 지급하는 요청으로 처리함. |
Key | Type | Mandatory | 설명 |
---|---|---|---|
user-info | Sting | N | GXC계정이 없는 유저에게 토큰 지급을 할때 사용하는 필드로 게임사에서 유저를 식별할수 있는 정보를 기입한다. |
TokenEventID | Sting | Y | GXC Dev world 에 등록된 토큰 이벤트 정보 |
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 | 서비스 중단 상태( 일시 오류 및 점검등등) |
Name | Type | 설명 |
---|---|---|
logID | String | 로그아이디 |
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"
}
< 작성중 >
- /token/token/usingToken
유저에게 지급된 토큰을 게임내에서 사용하는 경우 사용합니다.
GXC 연동 게임내에서 소비되는 모든 토큰은 GXC Dev World에서 미리 등록된 "토큰 소비 이벤트"에 의해서 제어됩니다.
POST
Key | Type | Mandatory | 설명 |
---|---|---|---|
ADMIN_KEY | Sting | Y | 12 자리 |
companyID | Sting | Y | 12자리 |
appID | Sting | Y | 12자리 |
userAccount | Sting | Y | 12자리 |
Key | Type | Mandatory | 설명 |
---|---|---|---|
TokenEventID | Sting | Y | GXC Dev world 에 등록된 토큰 이벤트 정보 |
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 | 서비스 중단 상태( 일시 오류 및 점검등등) |
Name | Type | 설명 |
---|---|---|
logID | String | 로그아이디 |
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"
}
- /token/token/cancelGainingToken
사용자의 토튼 획득을 취소합니다. 블록체인에서 기록을 삭제하는 것은 불가능하며 내부적으로는 유저의 wallet 에서 개발사측의 wallet 으로 token을 이동하게 됩니다.
POST
Key | Type | Mandatory | 설명 |
---|---|---|---|
ADMIN_KEY | Sting | Y | 12 자리 |
companyID | Sting | Y | 12자리 |
appID | Sting | Y | 12자리 |
userAccount | Sting | Y | 12자리, NULL일경우 계정 미소유 유저에게 지급한 토큰을 취소하는 요청으로 처리함. |
Key | Type | Mandatory | 설명 |
---|---|---|---|
user-info | Sting | N | GXC계정이 없는 유저에게 지급한 토큰 지급을 취소할때 사용하는 필드로 게임사에서 유저를 식별할수 있는 정보를 기입한다. |
TokenEventID | Sting | Y | GXC Dev world 에 등록된 토큰 이벤트 정보 |
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 | 유저가 보유한 토큰의 양이 취소할 토큰보다 적은 경우 |
Name | Type | 설명 |
---|---|---|
logID | String | 로그아이디 |
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"
}
- /token/token/cancelUsingToken
사용자의 토튼 사용을 취소합니다.
POST
Key | Type | Mandatory | 설명 |
---|---|---|---|
ADMIN_KEY | Sting | Y | 12 자리 |
companyID | Sting | Y | 12자리 |
appID | Sting | Y | 12자리 |
userAccount | Sting | Y | 12자리 |
Key | Type | Mandatory | 설명 |
---|---|---|---|
TokenEventID | Sting | Y | GXC Dev world 에 등록된 토큰 이벤트 정보 |
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 | 개발사가 보유한 토큰의 양이 유저에게 전달할 토큰보다 적은 경우 |
Name | Type | 설명 |
---|---|---|
logID | String | 로그아이디 |
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"
}