크립토게임은 왜 개발자의 머리를 아프게 하는가

Park Juhyung
GoCryptobot
Published in
4 min readMay 10, 2018

크립토 게임을 만들기로 결심한다면, 기존 게임들과는 다른 고민들을 하게됩니다. 이 글은 저와 고크립토봇의 팀원들이 함께 고민했던 내용들입니다.

트랜잭션을 어디서 할 것인가

이더리움을 사용하는 블록체인 게임이라면, 제일 먼저 하는 고민입니다. 게임 클라이언트에서 직접 컨트랙트 콜을 날릴 지, 게임 서버에서 날릴 지 결정해야합니다. 이 결정에 따라서, 게임의 특징이 매우 달라지게 됩니다. 게임 클라이언트에서 직접 트랜잭션을 날리는 방식은, 분산화된 이상에 더 가까운 방식입니다. 하지만, 트랜잭션 비용과 시간의 문제가 생깁니다. 반면, 게임 서버에서 트랜잭션을 날리는 방식은 더 효율적으로 게임을 처리할 수 있지만, 분산화의 특징이 줄어들게 됩니다.

트랜잭션을 게임 클라이언트에서 날리기로 결심하셨다면, 아래 글을 보시면 도움이 됩니다. 아래 글은 유니티에서 Nethereum이라는 라이브러리를 사용하여 Ethereum의 기능을 쓰는 방법에 대한 글입니다.

트랜잭션을 게임 클라이언트에서 직접 날리기로 결정했다면, 다음 고민을 마주치게 됩니다.

“어떻게 해야 이더리움 full node가 아닌 상황에서 트랜잭션을 안전하게 사용할까?”

이더리움은 기본적으로 참여하는 유저들이 모든 역사를 다 알고있는 full node라는 가정이 있습니다. Ethereum의 기본 커넥터인 web3 라이브러리에서도 한 개인이 full node를 운영한다는 가정이 API기반에 깔려있죠.

하지만 모든 유저가 full node를 운영하는 서비스는 불가능합니다. 따라서 full node가 아닌 유저들이 안전하게 transaction을 처리할 방법이 필요합니다. 아래 글은 그 방법에 대한 내용입니다.

거래소를 만들기

게임의 종류에 따라 달라지겠지만, 클라이언트에서 이더리움에 직접 접속하는 게임은 할 수 있는 게 매우 한정적입니다. 수수료와 트랜잭션에 걸리는 시간이 문제입니다. 하나의 행동을 할 때마다 수백~수천원이 소모되는 게임을 만드는 건 불가능에 가깝죠. 따라서 타협안으로 게임서버를 “소규모 거래소”로 만들어 처리하는 방법이 있습니다.

아래 글은 “소규모 거래소”가 어떤 건지, 왜 필요한 건지에 대한 글입니다.

“소규모 거래소”를 만들면, 다양한 계정을 관리해야합니다. 수 많은 계정의 private key를 안전하게 관리하는 건 쉬운 일이 아닙니다. 이 때 비트코인의 HDWallet을 사용하면 수 많은 계정을 단 하나의 private key로 안전하게 관리할 수 있습니다. 아래 글에 그 방법을 정리했습니다.

출시

이런 고민들을 거쳐 고크립토봇이 탄생하게 되었습니다. 아래 마켓에서 지금 바로 플레이 가능합니다.

--

--