문과생의 Solidity 도전기 — Cryptozombies

저는 대학에서 철학(혹은 그 비스무리한 무언가)을 공부 했고 아이폰을 포함한 모든 기기(하드웨어) 사용에 미숙하며 카카오톡과 같은 앱(소프트웨어)과도 그리 친하지 않은 기술 문외한입니다. 그런데 어찌하다 암호화폐의 분야에 들어와서 제대로 공부 하려다 보니 기술에 대한 이해가 필요한 상황이 종종 있어서 곤혹을 치르고 있습니다. 그래서 지난 6개월 동안 거의 매일 프로그래밍 언어를 해야지 해야지 하면서 차일피일 미루다가 이제서야 [Cryptozombies](https://cryptozombies.io/)를 통해 Solidity 언어를 배우기 시작했습니다.

제가 프로그래밍 언어를 공부하는 이유는 프로젝트 진행에 있어 원활한 소을 할 수 있기 위해서입니다. 제가 뛰어난 프로그래머가 될 수 있는지에 대해서는 모를 일이지만 최소한 저보다 뛰어난 프로그래머와 같이 일을 할 때 저도 그 사람과 동일 선상에서 이해를 공유할 수 있는 수준에 도달하고 싶습니다. 타인과 대화하기 위해서는 그 사람과 같은 언어로 소통해야 하는데 프로그래머와 소통하려면 프로그래밍 언어를 알아야 하기 때문에 이를 배우고 있는 것입니다.

저는 책을 읽는 것을 좋아하기 책을 읽는 것과 동일한 방법으로 프로그래밍 언어를 접근하고 있습니다. 하나의 책에는 그 책을 구성하는 단어, 문장, 문단 그리고 문맥이 있고 이를 이어주는 문법이 있습니다. 프로그래밍 언어도 이와 비슷한 모습을 보입니다. 예를 들어 [Solidity](http://solidity.readthedocs.io/en/v0.4.24/)는 정수(uint), 문자열(string) 등 다양한 변수(variable)로 단어를 구성하고 컨트렉트(contract), 함수(function)로 상태를 선언(declare)하여 문장을 구성합니다. 이러한 문장이 모여 기능을 가진 모듈(Module)의 문단이 되고 다시 하나의 거대한 프로그램(글)이 탄생합니다. 이처럼 하나의 프로그램에는 그 구성요소들이 거미줄처럼 연결되어 있는 걸 볼 수 있습니다.

처음 프로그램을 배우는 사람에게 기술이 어려운 가장 큰 이유 중 하나는 그 내부의 연결성을 이해하기 전에 빨리 자신이 원하는 기능을 구현하고 싶어하기 때문일지도 모릅니다. 하지만 기타를 일주일 배우고 난 후 자신이 원하는 곡을 치고 작곡을 해서 자신만의 멜로디를 만들 수 있기를 바라는 건 너무 과한 욕심일 수 있습니다. 차근차근 손에 기타를 익히면서 음을 익히고 코드를 쳐서 멜로디를 만들고 곡을 익히는 과정이 필요합니다. 이처럼 프로그래밍을 배우는 과정도 차근차근 변수와 함수를 엮어 하나의 프로그램을 만들고 프로그램을 조합해 프로젝트를 이루는 작업이 필요합니다.

이렇듯 차근차근 프로그래밍을 배우는데 있어 Cryptozombies는 좋은 시작점일 수 있습니다. CryptoZombies는 게임을 개발하는 방법으로 solidity 학습법을 지원합니다. 게임이 문학이라면 CryptoZombies의 접근법 문학을 통해 언어를 배우는 방법으로 이해할 수도 있을 것입니다.

Cryptozombies는 총 5개의 레슨으로 구성되어 있습니다.
1. 좀비 공장 만들기- name과 dna를 가진 좀비를 생성하는 zombieFactory contract 구현
2. 좀비가 희생물을 공격하다 — 좀비가 먹이를 먹고 새로운 DNA를 생성할 수 있는 zombiefeeding contract를 구현하고 그 안에 Cryptokitty를 생성하는 함수를 불러와 kitty를 섭취한 좀비의 dna를 99로 표시
3. 고급 솔리디티 개념- zombiefactory contract가 Openzepplinlibrary의 Ownable Contract를 상속하여 함수를 modify 하고 좀비에 level과 cooldown을 추가하며 level에 따라 기능을 추가하는 zombiehelper contract 작성
4. 좀비 전투 시스템 — zombiehelper contract에 levelup을 할 수 있는 기능을 구현하고 modifier를 통해 기존 함수를 refactoring하며 zombieattack contract를 통해 공격한 좀비의 승패를 정함
5. ERC721 & 크립토 수집품 — 토큰의 거래에 사용되는 ERC721 contract를 이용하여 zombieownership contract를 작성하고 좀비 소유권을 이전할 수 있는 기능을 구현

프로그래밍을 처음 접하시는 분이면 위와 같은 설명이 조금 어려울 수도 있을 것입니다. 그렇지만 각 레슨은 15개의 챕터로 구성되어 있기 때문에 차근차근 따라가다 보면 어느새 간단한 게임 기능을 구현하고 있는 자신을 발견할 수 있을 것입니다.

저는 이러한 게임 개발 학습법을 제공 해준 Cryptozombies팀에게 감사의 말을 전하고 싶습니다. 초보자가 프로그래밍을 처음 배울 때는 무작정 따라하다가 자신이 무엇을 하고 있는지 알기 어려울 때도 많습니다. 그런데 Cryptozombies는 세부적인 챕터의 상세한 설명을 통해 자신이 게임의 어떤 기능을 개발하고 있는지 보여줍니다. 이렇듯 초보자가 처음에 접근하기는 힘든 게임 개발을 초보자의 눈높이에 맞춰 세분화해서 설명할 수 있게 만드는 건 정말 쉽지 않은 일이었으리라 생각됩니다. 만약 Solidity 언어를 배우고자 했으나 아직 엄두를 내지 못하시는 분들이 계시다면 Cryptozombies를 추천해 드리고 싶습니다.

커뮤니티를 만들고 운영합니다

커뮤니티를 만들고 운영합니다