Develop

2019.06 월간 보고서 (Develop)

목차

  1. PlanetWallet

  2. GBT Protocol Website

Planet Wallet

2019 Q3

  • Planet Wallet Launching

  • Network Layer Development

PlanetWallet은 GBT Protocol 로드맵 상 2019년 3분기를 목표로 2019년 3분기에 런칭을 하는 것으로 현재 개발을 진행 중에 있습니다. 현재 개발 진행상황은 개발이 완료되어 알파테스트를 진행 중에 있습니다. 알파테스트가 종료되면 오류 수정 및 검토를 통해 비공개 베타 테스트를 진행 할 예정입니다. 베타 테스트가 정상적으로 종료되면 최종적으로 로드맵에 게시된 일정에 맞춰 런칭 될 예정입니다.

PlanetWallet은 편의성과 안전성을 중점적으로 설계된 암호화폐 지갑입니다. 좀 더 편하고 재밌게 사용하도록 노력하였고, 편하게 사용하지만 안전하도록 개발하였습니다.

1. Planet Wallet의 편의성

PlanetWallet은 여러분께 고유한 행성을 제공하는 것 으로 부터 시작합니다. 이 행성은 앞으로 여러분의 고유한 주소가 될 것이고 이 행성을 통해 코인과 토큰을 주고 받을 수 있습니다. 행성의 이름을 짓는 것은 게임의 캐릭터와 캐릭터 이름을 정하는 것과 같습니다. 이것은 재미요소와 더불어 블록체인에서 사용하는 읽기 힘들고 긴 주소로 부터 벗어 날 수 있습니다.

행성의 이름이 고유하기 때문에 단순한 이름은 먼저 선점 될 수 있습니다.

GBT Protocol의 지갑인 Planet Wallet은 Bitcoin과 Ethereum을 지원합니다. 물론 Ethereum의 토큰인 ERC20 규격의 Token 또한 지원합니다. 이후 Ripple( XRP ), Bitcoin Cash ( BCH ), Litecoin ( LTC )을우선하여 추가하고 차츰 더욱 많은 코인 및 토을 지원할 예정입니다. 최종적으로는 GBT Protocol의 코인인 GBT를 메인으로 사용하는 지갑으로 변화할 예정입니다.

PlanetView

고유한 행성을 제공하는 PlanetView는 Github를 통해 공개 되었습니다. PlanetWallet에서 만들 수 있는 행성 이미지를 다른 어플리케이션이나 웹사이트에서 똑같이 구현이 가능합니다.

Android ( Java )
iOS ( Swift )
Javascript ( es6 )
Android ( Java )

In Layout XML

<io.grabity.planetwallet.Widgets.PlanetView
android:id="@+id/planet_name_icon"
android:layout_width="170dp"
android:layout_height="170dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="80dp"
app:data="<Your Planet Address>" />

In Activity

@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
PlanetView planetView = findViewById( R.id.planet_name_icon );
planetView.setData( "<Your Planet Address>" );
}
iOS ( Swift )
@IBOutlet var planetView: PlanetView!
override func viewDidLoad() {
super.viewDidLoad()
planetView.data = "<Your Planet Address>"
}
Javascript ( es6 )
import planet from './PlaetView'
let canvas = planet.setData("<Your Planet Address>", 700);

2. Planet Wallet의 안전성

PlanetWallet의 안전성은 GBT Protocol의 파트너사이며 보안 솔루션 업체인 펜타시큐리티의 모바일 보안 모듈로 강화되었습니다. PlanetWallet은 오픈소스로 공개된 코드를 C언어로 다시 교체한 뒤 컴파일 하여 사용하도록 했습니다. 해당 방식을 통해 오픈소스의 결함을 통한 공격으로부터 안전하도록 설계하였습니다.

3. 모바일 디바이스 보안

PlanetWallet은 모바일 디바이스의 TEE 영역에 암호화 키를 저장하여 데이터의 암호화 및 복호화에 사용합니다.

Android 모바일 보안

Android의 TEE인 Keystore를 사용하여 암호화 키를 생성 및 저장하도록 구현되었습니다.

KeyGenerator keyGenerator = KeyGenerator.getInstance( KeyProperties.KEY_ALGORITHM_AES, KEYSTORE_PROVIDER );
KeyGenParameterSpec keyGenParameterSpec =
new KeyGenParameterSpec
.Builder( keystoreAlias, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT )
.setBlockModes( KeyProperties.BLOCK_MODE_CBC )
.setEncryptionPaddings( KeyProperties.ENCRYPTION_PADDING_PKCS7 )
.setRandomizedEncryptionRequired( false ).build( );
keyGenerator.init( keyGenParameterSpec );
keyGenerator.generateKey( );

iOS 모바일 보안

iOS의 Secure Enclave인 Keychain을 이용하여 암호화 키를 저장하도록 구현되었습니다.

func put(alias:String, value: Data) {
let query: CFDictionary = [
_kSecClass: _kSecClassGenericPassword,
_kSecAttrService: secAttrService,
_kSecAttrAccount: alias,
_kSecValueData: value,
] as CFDictionary
SecItemDelete(query)
SecItemAdd(query, nil)
}
func get( alias:String ) -> Data? {
let query: CFDictionary = [
_kSecClass: _kSecClassGenericPassword,
_kSecMatchLimit: kSecMatchLimitOne,
_kSecAttrAccount: alias,
_kSecReturnData: kCFBooleanTrue as Any
] as CFDictionary
var buffer: AnyObject?
let status = SecItemCopyMatching(query, &buffer)
if status == errSecSuccess {
if let data = buffer as? Data {
return data
} else {
return nil }
} else {
return nil
}
}

4. 플랫폼 지원

PlanetWallet은 모바일 지갑으로 Android와 iOS를 지원합니다.

Android
iOS
Android

Android는 API Version 24이상의 단말기를 지원합니다. ( Nougat ) 2018. 10. 27 까지 수집된 내용을 기반으로 약 57.9%의 단말기가 사용 가능합니다. ( Android Dashboard )

https://developer.android.com/about/dashboards?hl=ko
iOS

iOS는 iOS11 Version 이상의 단말기를 지원합니다. 2019. 05. 30 까지 수집된 내용을 기반으로 약 94%의 디바이스를 지원합니다. ( iOS Dashboard )

https://developer.apple.com/support/app-store/

Planet Wallet은 Github를 통해 오픈소스로 공개되어있습니다.

단, 암호화 및 보안적으로 이슈가 있을 수 있는 코드는 공개 되지 않습니다.

GBT Protocol Website

1. GBT Protocol

기존의 Grabity에서 GBT Protocol로 이름을 변경 하면서 기존의 사이트가 가지고 있던 아이덴티티인 우주를 벗어나 전문적이고 기술적은 느낌의 사이트로 변경할 예정입니다. 앞으로 GBT Protocol에서 진행할 프로젝트들은 서로가 다른 성향을 가지고 있고 또한 다른 최종 목적지를 향해 달리고 있습니다. GBT Protocol 사이트는 이 서로 다른 프로젝트들을 하나로 통합할 수 있도록 수정되었습니다.

2. 가독성과 접근성

메인 채널은 중요한 이슈만 다루어 가독성이 높은 사이트로 변경됩니다. GBT Protocol의 현재를 최대한 쉽고 빠르게 보실 수 있습니다.

기존의 사이트 설명이 복잡하였다면 변경되는 사이트는 저희가 가진 기술력과 앞으로 진행할 프로젝트, 서비스, 개발과 더불어 지금 까지 진행한 내용을 한 눈에 쉽게 보실 수 있습니다.

웹사이트 개발 상황은 현재 PC버전과 모바일 버전을 동시에 개발을 진행 중에 있습니다. 7월 16일에 오픈 예정입니다.

외부 일정으로 인하여 오픈 일정이 변경되었습니다. 7월 26일에 오픈 합니다.