GroundX의 월렛 #1: Kaikas

Tech at Klaytn
10 min readSep 16, 2021

전체 포스팅 목록은 여기에서 확인하세요.
English: GroundX Wallets #1: Kaikas

GroundX는 퍼블릭 블록체인 Klaytn을 중심으로 다양한 제품을 개발해 왔는데요, 여기에는 자체 지갑 서비스도 포함됩니다. 이번 포스팅에서는 Klaytn의 지갑 Kaikas의 기능을 간략하게 소개해 보겠습니다.

Kaikas란

Kaikas는 Klaytn에서 제공하는 암호화폐 지갑으로, 계정을 편리하게 관리해주며 트랜잭션 서명, 토큰 전송, 거래 내역 조회 기능 등 기본 지갑 기능을 제공합니다. 현재 브라우저 익스텐션과 모바일 버전으로 제공되고 있습니다. 브라우저 익스텐션은 여기서 다운로드할 수 있으며, 모바일은 앱스토어나 구글 플레이스토어에서 다운로드할 수 있습니다.

모바일에 대해

Kaikas는 현재 브라우저 익스텐션과 모바일로 제공되고 있습니다. 계정 관리라는 기본적 기능은 공통으로 지원하지만, 모바일 Kaikas에서는 현재 정책상의 이유로 토큰 전송은 일시 중단된 상태이며, NFT 보관/전송 만이 가능합니다. 두 제품의 기능이 통일되어 11월 초 새로운 모습으로 선보여질 예정입니다.

사용자 기능

안전한 계정 관리

지갑이라는 이름 때문에 실제 자산을 넣는 공간을 상상하기 쉽지만, 암호화폐 지갑은 사실상 계정 관리 도구에 가깝습니다. 주소와 키를 보관하면서 자산에 접근하게 해줄 뿐, 자산 자체를 저장하고 있는 것은 블록체인입니다. 그리고 이 자산에 접근할 수 있게 해주는 열쇠가 바로 키입니다.

Kaikas는 단일 시드로 다수의 키를 생성할 수 있는 HD(hierarchical deterministic) 주소 형식의 월렛입니다. 즉, 다양한 계정에 대응하는 키를 일일이 기억할 필요없이 시드 구문 하나만 안전히 관리하면 됩니다. 이 시드는 계정 복구에 사용되니 잘 보관해주세요.

시드 구문은 아래와 같이 생겼습니다. 실제 계정의 시드 구문이니 계정이 털리는 과정을 직접 재현해보세요! 😘

또 여러분이 주의해서 보관해야 하는 것은 지갑키, 즉 개인키와 Klaytn Wallet Key입니다. 지갑키는 아래와 같이 계정 정보에서 찾을 수 있습니다.

지갑키는 아래와 같이 다른 계정을 가져오는 데 사용되기 때문에 잃어버렸을 경우 계정 복구가 어렵습니다. 그러니 조심히 관리해야 합니다.

토큰 거래

지갑을 이용해서 물론 토큰을 전송할 수 있습니다. 좀 더 자세히 보자면 토큰 전송은 블록체인에 트랜잭션을 보냄으로써 수행되는 행위이기 때문에 필연적으로 서명이 필요한데요, 서명은 개인키를 사용해서 이루어집니다. 따라서 주소, 개인키 등 계정 정보를 보관하는 Kaikas를 사용하여 KLAY, KIP-7, KIP-17, KIP-37, NFT를 주고 받을 수 있으며, 트랜잭션 상태나 히스토리도 조회할 수도 있습니다.

Note: 참고로 현재 NFT는 브라우저 익스텐션에서는 “보이지” 않으며, Kaikas 모바일 또는 KlaytnScope에서 확인하고 전송할 수 있습니다.

커스텀 토큰 추가

아래와 같이 Klaytn 기반 커스텀 토큰을 등록할 수도 있습니다. 이를 위해서는 첫화면의 [토큰 목록]을 클릭하고 [토큰 추가] 버튼을 누르면 됩니다. 그러면 다양한 BApp에서 사용되는 KCT들을 검색하고 추가하여 전송 및 보관할 수 있습니다.

이 외에 여러분이 직접 만든 토큰도 추가할 수 있는데요, 아래 예시에서는 테스트넷 Baobab에서 KAS Console을 이용해 발급한 사용자 정의 G1 토큰을 추가했습니다.

블록체인 서비스 BApp 연결

최근 Klaytn 기반으로 다양한 서비스들이 등장하고 있는데요, 이 중 대부분이 Kaikas와 연동되어 있습니다. Kaikas는 프론트엔드에서 사용자들을 서비스와 연결시켜 주는 인터페이스 역할을 합니다. 따라서 앞서 살펴본 로그인, 트랜잭션 서명, KLAY 사용 등 사용자 기능이 Kaikas를 통해서 간편하게 이루어집니다.

Kaikas가 사용되는 예시를 몇 가지 살펴보자면 우선 Klaytn 기반 대표 DeFi 서비스인 KLAYSwap이 있습니다. KLAYSwap을 통해 KLAY 및 Klaytn 호환 토큰을 예치하거나 교환하기 위해서 Kaikas를 사용할 수 있습니다. 참고로 이종 체인의 자산으로 KLAYSwap에 참여하려면 Klaytn 호환 자산으로 변환시켜야 하는데요, Orbit Bridge에서 ETH 등을 K-Bridge 자산으로 변환시킬 때도 Kaikas가 사용됩니다.

Klaytn의 NFT 발행 서비스인 KrafterSpace에서도 Kaikas를 사용합니다. 아래와 같이 로그인할 때도 Kaikas의 계정 정보가 사용되어 서명합니다.

또한 웹 익스텐션에서는 보이지 않던 NFT를 KrafterSpace에서는 아래와 같이 확인할 수 있습니다. NFT를 전송할 때도 오른쪽과 같이 서명합니다.

Network

Baobab 네트워크를 사용하면 실제 KLAY 없이도 Kaikas의 기능을 테스트 해볼 수 있습니다. Kaikas 윈도우 좌측 상단에서 Baobab 테스트넷을 선택한 뒤 전송 버튼 아래에 있는 링크를 클릭하거나, https://baobab.wallet.klaytn.com/faucet에 바로 접속해서 개인키나 Klaytn 월렛키를 입력하면 됩니다.

개발자 기능

Klaytn Provider

여러분이 블록체인 어플을 만드는 개발자라면 바로 앞서 살펴본 사례들과 같이 여러분들의 서비스에도 Kaikas의 지갑을 연동시켜 다양한 트랜잭션을 구현할 수 있습니다. 이를 위해 Kaikas는 Klaytn Provider의 기능을 제공합니다.

Klaytn Provider라는 것은 Kaikas로 `window.klaytn`를 통해 JavaScript의 전역 객체 `window`를 사용할 수 있음을 뜻합니다. 이를 통해 브라우저 상에서 이루어 지는 다양한 상호작용을 구현할 수 있습니다. 앞서 살펴본 Kaikas 적용 BApp에서 제공하는 기능들을 구현할 수 있는 것입니다. 구체적으로 서비스 사용자의 네트워크 버전이나 현재 주소, Kaikas 설치 여부 등을 확인할 수 있는 프로퍼티와, 권한 설정, 토큰 등록, 페이지 새로고침 등을 위한 다양한 메서드가 제공됩니다. Klaytn Provider에 대한 자세한 설명은 이 링크에서 확인하실 수 있습니다.

앞서 언급한 예시 중 하나를 살펴 보자면, `klaytn.networkVersion` 프로퍼티를 사용하여 현재 사용자가 어느 네트워크를 사용하는 지 확인할 수 있습니다. 아래와 같이 각 네트워크를 나타내는 숫자가 반환됩니다.

‘1001’: Baobab Test Network
‘8217’: Cypress Main Network

아래는 KrafterSpace 로그인 시 뜨는 창인데요, Kaikas를 Baobab 네트워크로 설정해 놓으면 자동으로 인지해서 알림을 띄웁니다.

Caver

Kaikas는 Klaytn 노드를 대신하여 네트워크와 통신을 가능하게 해주는데요, 이에 따라 Klaytn의 SDK인 Caver를 사용할 수도 있습니다. 직접 Caver를 다운로드해 Klaytn으로 래핑하거나, (window.)caver.xxx의 형태로 Kaikas에서 제공하는 Caver 1.4.0을 사용할 수도 있습니다. Caver에 대한 자세한 내용은 caver documentation을 참고하세요. window.caver.xxx 의 형태로 사용하시려면 이 문서를 참고하세요.

Custom RPC

RPC는 네트워크 간의 통신을 위한 프로토콜로, 블록체인과의 상호작용을 가능하게 해주는 인터페이스라고 보시면 됩니다. 개발 과정에서 테스트 목적으로 로컬 컴퓨터에서 운영되는 네트워크를 구성하게 될 수 있는데요, Kaikas를 이용하면 이런 사용자 지정 네트워크도 추가할 수 있습니다.

아래는 개인적으로 로컬 EN(Endpoint Node)을 생성한다는 가정 하에 지정 네트워크를 추가하는 예시입니다.

|Network Name
원하는 이름을 입력합니다.

|New RPC URL
기본값은 http://localhost:8551 이지만, 변경할 수 있습니다.

|Chain ID
Klaytn의 EN을 구성하여 Kaikas에 연결하는 상황이므로, 해당하는 EN과 연결된 네트워크의 chain ID를 입력합니다. Cypress와 연결하였다면 8217, Baobab이라면 1001을 입력하면 됩니다. 그 외에도 별도의 네트워크를 설정할 수 있는데요, 그런 경우 그 네트워크에서 설정한 chain ID를 입력하면 됩니다.

|Symbol
KLAY 등 해당 네트워크의 토큰 심볼을 입력합니다.

|Block Explorer URL
Cypress의 경우 scope.klaytn.com, Baobab의 경우 baobab.scope.klaytn.com을 입력합니다. 별도의 네트워크를 설정한 경우, 그 네트워크에 해당하는 block explorer의 URL을 적어주세요.

아래 링크에서 Kaikas가 실제 사용된 예제를 보고 싶다면 https://github.com/klaytn/kaikas-tutorial을 확인하세요.

Kaikas 개발에 대한 자세한 내용은 https://docs.kaikas.io/에서 확인할 수 있습니다. 개발 중 궁금한 점이 생기면 언제든 Klaytn 개발자 포럼 http://forum.klaytn.com에 질문을 남겨주세요!

글을 마치며

이번 포스팅에서는 Klaytn의 지갑 Kaikas에 대해 간략히 알아보았습니다. 앞서 언급했듯, Kaikas 모바일은 올해 하반기 새로운 기능 및 모바일과 웹 익스텐션 간의 통일성을 바탕으로 새로운 모습으로 출시될 예정입니다. 앞으로도 많은 관심 부탁드리며, 다음에는 Klip에 대해 알아보겠습니다. 감사합니다.

--

--