개발하기좋은날

[Team Project] Final 본문

회고록

[Team Project] Final

devbi 2022. 10. 4. 11:17
반응형

# 4주간의 여정

4주라는 시간이 나에겐 길게 느껴지지 않았었다, 어떤 프로젝트를 했었을때 4주는 기본적으로 개발만 완료된 상태였다

하지만 마지막 팀프로젝트에서의 4주는 개발이 완료되고 Minimum 한 기능이 완료되고  나서 Advance한 기능들 이후 서비스에서 필요한 예외 처리, 시나리오 테스트 이후 보완 등 지속적인 장애에 관련된 부분을더 신경 쓸수있었다 

 

팀프로젝트의 가장큰 장점은 역시 퍼포먼스인거같다 서로 의지 하고 믿으면서 도움을 구했을때 문제가 생겼을경우 빠르게 문제를 해결할수있는 창구가 되기도 하고 모듈별로 개발하여 합치는 GIT의  특성떄문에 프로젝트의 완성도가 빠르게 높아짐을 느낄수가있었다 

 

확실히 개인으로 프로젝트를 진행하던 나한테 팀이라는게 얼만나 중요한지 깨달았고 그파워가 프로젝트의 완성도와 디테일의 수준을 너무 큰차이를 만든다는게 느껴졌다 에자일 방식으로 진행하던 우리팀은 믿고 서로 의지 할 수있었기에 기한내에 프로토타입이라고 내놓을수 있는 수준의 완성도를 만들게 된거같다

 

 

 

# 프로젝트 소개

JMT는 Enjoy Maple NFT의 약자?긴 하다 우리가 흔히하는 존맛탱?으로 오해하지 마시길... 

초기 기획은 ERC20, ERC721, ERC1155를 다양하게 사용하는 게임 목표로 시작되었는데 이후 팀 회의를 통해서  

토크노믹스가 필요했고 게임의 재화 유통과 사용을 위해 디파이를 접목하게 되었다 

 

 

# 나는 무엇을 했는가? 

우리 프로젝트에서 서브 과제중 하나가 팀원 모두가 Contract 코드를 작성하고 경험하는것인데 블록체인 프로젝트를 시작하고나서 Contract 코드를 제대로 작성한 경험이 없어서 반드시 이번기회에 Contract 작성에 대한 이해도와 깊이를 늘리고 싶어 Contract 지원파트에 열심히 자기 PR을 한거같다... 결과적으로 JMT 프로젝트에서 중요한 JMT Token, vJMT Token, 

Swap Contract, Router  Contract, Liquidity Pool Contract, Staking Contract 등 다양한 컨트랙트를 직접 개발했다 

 

 

# 귀여운 Token들 소개 

ERC20, 721, 1155  다 사용했다

메이플 스토리 에셋을 사용해서 굉장히 귀욥?다 내가 개발한건 ERC20과 디파이 컨트랙트다 

 

 

 

# 토큰 이코노미 그게 뭔가? 

말그대로 "토큰 경제" 이해하기 처음엔 어려운데, 직접 프로젝트를 하면서 어떤 플로우를 가지고있고 어떤걸 고려해야하는지 알수있는 영역이다 어쩌면 개발적 감각은 없어도 되는 포지션이라 누구에게는 어렵고 누구에겐 좀더 쉽게 느껴질수 있겠다 (개인적으로 경제 학문을 공부한 사람이 유리 할 거 같다 당연한 소리인가...?) 

 

우리 프로젝트에는 JMT, vJMT 토큰이 두가지가 존재하는데 각각 발행되는량이 다르고 초기 공급량이 다르다 그리고 게임 컨텐츠를 통해 추가 발행되는 토큰도 있고 한번에 발행되고 점차 Burn되어 전체 유통량을 줄이기도한다 

 

결과적으로 우리 게임 또는 디파이속에서 How? 에 대한 고민이 토큰 이코노미고 이부분에 Why? 근거가 바탕이 되어야하는 부분이다, 예를 들어 토큰 인플레이션 방지를 위해 전체 발행량에서 매주 2% Lock Up이 해제된다거나 등  이부분을 코드로 옮기고 개념화시키면 이것이 토큰 이코노미다   

 

 

# 내가 설계한 토큰 이코노미 

 

토큰 이코노미1

우리 프로젝트는 블록체인위에서 개발되었지만 P2E라는 타이틀을 최대한 벗어나고자 노력했다 그결과 게임성을 위해 좀더 기획적인 부분을 컨텐츠로 보안하고 수집욕구를 느낄수있게 게임을 구성하였고 그래서 전반적인 그림을 보면 "블록체인이 들어간 WEB3 게임" 정도로 인식할수있는 수준을 만들게 되었다

Game 과 Defi를 나누었고 Defi와 블록체인을 몰라도 게임을 플레이하는데 전혀 지장이 없게 설계를 하여 

최종적으로 Game 시스템과 디파이를 최대한 분리시켜놓고 디파이의 영역이 게임에 큰 영향이 끼치지않는선에 디파이를 구성하였다 

 

 

토큰 이코노미2

우리가 생각한 그림이 2번 그림의 캐릭터의 위치다 

어떻게 보면 캐릭터가 양쪽 모두 상호작용을 무조건 해야지만 게임을 즐길수있는것 처럼 보이지만 

좀더 넓게 보면 캐릭터는 어느한쪽만 선택해도 전혀 문제가 없다는걸 보여주고 싶기도 하다 

디파이만 해도 문제가 없으면 게임만 해도 문제가 전혀 없다 

 

# 폴리곤 네트워크를  갑자기 선택한 이유는?

폴리곤은 처음부터 고려되지않았다.

하지만 개발을 지속적으로 해오면서 우리팀은 항상 고민이 있었다  그것은 "속도" !!

속도의 문제는 심각 했는데 유저 인터랙션 대부분이 블록체인 지갑을 불러와서 소통을 하고 동기적으로 동작하기 때문에 속도에 불편한 우리나라 사람은 아마 게임을 하다 답답해서 그만두시는분도 계실거라 생각이든다.

게임 속 7할이상의 컨텐츠는 반드시 컨트랙트콜로 구성되어있기에 개발을 하던중에서도 테스트하는 과정이 답답하게 느껴졌다.

이러한 문제를 항상 하던 우리는 프로젝트를 진행중 사이드체인에 대한 언급을 계기로 각자의 팀원들은 사이드체인에 대해 각자공부를 하고 자료를 수집하여 서로 공유하였고  현재 상황에서 기존을 유지한상태에서 가장 빠르게 확장할수있는 레이어2 솔루션인 폴리곤으로 선택 하게 되었다 

 

# 프로젝트를 진행하면서 어려웠던 점은?

담당 업무로는 자동화된 마켓 메이커(CPMM)을 구현하는것이였다, 그리고 아래 항목이랑 조금 중복이 되는데 

컨트렉트 코드는 디버깅 또한  비교적 쉽지않아 복잡함이 추가될수록 난이도가 상승하는걸 느꼈다.

오라클 문제는 게임에서 가장 중요시되는 문제였다 랜덤성이라는게 반드시 존재해야했는데 온체인에서 해결할수있는 방법이 거의 전무했다 기한은 한정적이고 많은양은 살펴 볼수없었던 우리는 첫번째 대안으로 keccak256 함수로 난수 문제를 해결하려 했다. 하지만 해당 함수는 보안성이 중요한 블록체인에서 예측가능한 영역이 존재하기에 안전하다 할 수 없었다 

이어서 체인링크나 다른 플랫폼을 사용하여 해당 문제를 해결하려 했지만 시간 관계상 해당 문제는 이후 해결할 과제로 남게되었다.

지금 프로젝트가 끝난후에도 랜덤성을 해결할수있는 방법이 무엇인지 조사해 보았는데 괜찮은 아이디어가 떠올라서 다음 블로그에 포스팅 해볼려고한다.

 

# 컨트랙트는 생각보다 어렵다 

코딩을 안해본 사람, 개발을 안해본사람이 컨트랙트 코드를 짠다면 어떤 느낌인지 모르겠지만 상대적으로 컨트랙트 코드를 작성하는건 기존 프로그래밍에 비해 어렵다, 이게 컨트랙트 코드는 한번  작성하면 라이브에서 수정하기가 굉장히 힘들다 그래서 예외 처리를 위한 Require문 작성 사전 처리 Modifier 작성등 최대한 가능한 모든 시나리오를 생각하여 작성해야한다 그리고 라이브 배포하는것 또한 가스비문제 떄문에 기존 개발처럼 코드를 수정하고 배포하고를 반복할수없다 

가장큰 이유는 "Gas" 떄문인데 수수료가 EVM 보다 저렴한 Polygon 이라면 좀 덜한데 우리 프로젝트에서 ETH 에서 한번 배포할때마다 2.5 ETH를 가스비로 지불했었다 이게 실제 Main Net 배포 였다면 한번에 500만원씩 수수료로 지불한다는거다 그래서 항상 컨트랙트 작성할떄는 Local -> TestNet -> Live 순서를 반드시 지켜주면서 시나리오 테스트를 충분히 오랜기간동안 잘 거쳐야함을 느꼈다 

결과적으로 어렵다는 표현이 신중해야 한다로 포장이 될수있는거같다 그만큼 집중해야하고 최소한 EVM 기반에서 개발되는 컨트랙트는 코드의 최적화에 포커싱을 맞춰야함을 느꼈다 

 

 

# 결과적으로 난 너무 좋았다

아쉽지만 좋은건 사실이다 

좀더 구현하고 고려하고 싶었던 기능들도 많았지만 시간이라는 자원은 한정적이기에 우리는 후회하지않을만큼 포기하지않고 프로젝트를 우리가 그리고 싶은 그림만큼 그릴수있었다. 기술적으로 예외처리, 여러 시나리오를 세우고 테스트를 거쳐 시스템 문제점도 파악을 더 했어야했지만 팀 원들이 밤낮 안가리고 노력한 모습을 보면 후회는 없다.

개인적으로 나한테는 큰 성장을 가져왔다. 팀 프로젝트를 제대로 해본경험이 없던 나에게 있어서 너무 소중한 경험이였고 

왜 협업이 중요한지 크게 깨닫는 순간이였다.

역시 혼자 보단 둘 이상이 더 다양하고 창의적이다. 그 이유는 커뮤니케이션의 중요성 ..!

 

project video : https://youtu.be/5RCWVM8WV0o

반응형

'회고록' 카테고리의 다른 글

[Team Project] 회고록  (0) 2022.09.01
Comments