블록체인 개발자가 되려면 어떻게 해야 할까? — TomJeong

Tom Jeong
알쓸신블
Published in
11 min readAug 28, 2018

들어가는 말

2017년 하반기 블록체인에 전 세계가 열광을 했습니다. 2018년 상반기 “블록체인은 거품이다”라고 욕을 하고 있습니다. 블록체인 때문에 울고 웃고 하는 사람들이 많이 생겼습니다. 블록체인이 무엇이고 왜 그렇게 사람들에게 불을 지르는 걸까요?

저는 블록체인을 공부하며 제가 얻은 지식과 경험 그리고 재미를 함께 나누고, 한 치 앞도 모르는 미지의 세계를 함께 공부하고 싶었습니다. 해서 블록체인 스터디인 Unlimit Network를 만들었습니다. 많은 사람들이 블록체인에 대해 이해하고 이 철학에 대해 공감하여 함께 즐기게 만들고 싶었습니다. 현재 스터디는 자유롭고 다양한 주제의 공부를 자유롭게 하고 싶은 대로 하고 있습니다.

또한 좋은 사람들이 많이 모이고 많은 연구와 공부를 진행하면서 많은 자리에서 우리의 결과물을 보여주고 싶었습니다. 해서 블록체인 학술 연합인 Blockchain Academic Alliance Meeting(BAAM)을 주최했습니다. 뜻을 함께 한 많은 좋은 스터디들이 함께 하기로 약속했습니다. 앞으로 우리는 블록체인 업계의 최전방에서 함께 싸울 동료가 생겼습니다.

그리고 저는 지금 블록체인 태풍의 눈 한가운데에서 새로운 시작을 써 내려가려 합니다.

블록체인 개발자가 하고 싶다?

알쓸신블 질문함에 위와 같은 질문이 올라왔습니다. 블록체인 개발자의 길을 걸어가고 있고 아직 걸음마 단계이지만 나름 제가 진행 해 온 길에 대해 이야기 해보려 합니다.

블록체인 개발자는 블록체인을 개발하는 소프트웨어 개발자입니다. 먼저 소프트웨어 개발자에 대해 알아보겠습니다. 소프트웨어 개발자는 좁게는 코딩, 넓게는 설계와 프로젝트 관리 업무를 수행하는 사람까지 매우 다양합니다. 흔히 알고 있는 프로그래머는 소스코드를 작성하는 사람이지만 개발자는 소프트웨어 개발 프로세스의 좀 더 넓은 영역에 해당되는 사람입니다. 소프트웨어 개발자는 다음과 같은 업무를 수행합니다.

  • 소프트웨어 제품 정의 참여
  • 스펙 정의
  • 요구 사항 분석
  • 요구 사항을 확정하기 위한 중간 시뮬레이션, 프로토타입 개발과 개선
  • 실행 가능성과 경제성 분석, 애플리케이션 아키텍처와 프레임워크 선택
  • 설계
  • 구현(설치, 설정, 프로그래밍/커스터마이제이션, 인테그레이션, 데이터 마이그레이션)
  • 사용자와 구현 파트너가 읽을 문서 작성
  • 테스트, 테스트 케이스를 작성하고 테스트를 지원하는 업무 포함
  • 소프트웨어 배포와 배포 후 활동 참여(데모 프로그램 또는 샘플 개발)
  • 유지 보수

여기서 그렇다면 프로그래머인 제가 지금 할 수 있는 개발은 어떤 것일까요? 위에 해당하는 소프트웨어 제품에 블록체인이 포함 된다면 블록체인 개발자라 할 수 있을 것입니다. 블록체인은 하나의 소프트웨어 생태계를 구성합니다. 단순히 믿을 수 있는 탈 중앙화된 장부 거래를 위한 비트코인에서 다양한 거래를 구현할 수 있는 이더리움, 그리고 지금에 와서는 다양한 기업들 간의 생태계를 함께 할 수 있는 네트워크인 이오스, 말고도 다양한 형태의 블록체인이 존재하고 있습니다. 이런 생태계에서 함께 할 수 있는 개발자를 블록체인 개발자라고 합니다.

개발자라는 직업은 한국에서 선호 직업이 아닙니다. 높은 연봉을 보장하지도 않고, 더 나은 근무환경을 보장하지도 않습니다. 하지만 자신의 능력대로 생각한 것을 창조해 낼 수 있는 크리에이터라고 생각합니다. 현재의 환경에서는 많은 어려움이 있습니다. 하지만 블록체인 생태계에서는 다양한 방법으로 더 나은 조건과 대우를 받으며 새로운 걸 창조해낼 수 있습니다. 그래서 블록체인 개발자에 대해 많은 학생들과 기존의 개발자들이 관심을 가지고 이 업계로 몰리고 있습니다. 제가 이 생태계에 대해 어디서부터 어떻게 되어있다고 모든 걸 가이드를 하는 글은 아닙니다. 제가 블록체인 개발자를 목표로 공부를 어떻게 해 왔고, 어떤 방식이 자기한테 어울릴 수 있는지 한번 생각을 해 볼 수 있는 글이라 생각하여 이렇게 써봅니다. 함께 고민을 하는 글이라고봐주시면 감사하겠습니다.

블록체인 개발자가 되려면?

블록체인에 대해 어디서부터 어떻게 공부를 해야 할지 모르는 사람들이 많고, 저 또한 그랬습니다. 사람들이 가장 많이 이야기하는 비트코인과 이더리움의 이론을 공부하면서 더욱 개발을 해보고 싶다는 생각이 들었습니다. 지금 내가 당장 할 수 있는 것은 소프트웨어 구현 및 분석이라 생각하여 해당 부분부터 찾아서 하기로 했고, 바로 실천으로 옮겼습니다.

이더리움 솔리디티 프로그래밍 : 제일 먼저 시작을 한 것은 이더리움 솔리디티를 이용한 스마트 컨트랙트 프로그래밍이었습니다. 새로운 언어지만 기존에 사용하던 프로그래밍 언어들과 커다란 차이점은 없어 배우기 쉬웠습니다. 이를 통해 토큰 생성 방법 및 ICO 진행 방법과 각종 다양한 함수 구현에 대해 공부했고, 여러 툴을 다루어 보고 테스트 넷과 로컬 넷을 통해 이것저것 구현을 해보았습니다.

하이퍼레저 패브릭 : 공부를 하다 보니 퍼블릭 블록체인, 프라이빗 블록체인에 대해 차이점과 각기 장단점에 대해 궁금해졌고, 대표적인 프라이빗 블록체인인 하이퍼레저 패브릭에 대해 공부를 시작했습니다. 마침 IBM에서 공개적으로 하이퍼 패브릭에 대해 자료를 제공해주었고, 이를 보고 많은 공부를 했습니다.

이더리움 프로그래밍 심화 : 하이퍼레저 패브릭의 공부 이후 이더리움 개발에 대해 많은 고민이 생겼고 이것으로도 다양한 공부를 할 수 있겠다 생각하여 더 깊은 연구를 시작을 했습니다. 이때부터 저와 뜻을 함께한 개발자 두 명과 같이 개발팀 DevTooth를 시작했습니다. 해외에서 유명한 프리마블록 스마트 컨트랙트를 역기획하여 개발, 에스크로 시스템을 스마트 컨트랙트로 개발, 멀티시그 월렛을 익스텐션 지갑에 적용 가능하도록 개발, 토큰 ICO를 유연하고 관리하기 쉽도록 비주얼적으로 개발을 진행했습니다. 이 프로젝트 이름을 SafeShare(Reverse Primablock), Jericho(Multisig Wallet), JYL-1(Total ERC-20 ICO) 프로젝트로 이름을 지칭하고 개발 진행 중에 있습니다. 해당 프로젝트들에 대해 문의하실 분들은 글 하단의 오픈톡으로 연락 주시면 됩니다.

이오스 스마트 컨트랙트 프로그래밍 : 이더리움 솔리디티 프로그래밍을 하다 보니 많은 한계에 도달했습니다. 내부에서 할 수 있는 것도 적고, 수수료도 FCoin 사태(https://steemit.com/busy/@c1h/feat-fcoin-gmp) 때 너무 감당을 할 수 없었습니다. 그래서 다음으로 공부한 것은 이오스였습니다. 거버넌스나 펀더멘탈이나 문제가 많다고 사람들이 안 좋은 이야기가 많은 프로젝트였지만, 많은 돈이 몰리고 많은 사람들과 기업들이 몰리며 아주 세련된 코드를 가진 블록체인 프로젝트였고, 퍼블릭 블록체인 중 가장 빠른 속도와 많은 내용을 코딩을 할 수 있는 플랫폼이었습니다. 해서 이오스를 같이 공부할 스터디인 UnlimitNetwork를 만들었고, 이 인원들과 함께 이오스 이론에 대해 먼저 공부하고 스마트 컨트랙트 개발을 진행했습니다. 세 팀으로 나누어 이오스 토큰을 자유롭게 컨트롤할 수 있도록 만든 프로젝트인 Caseos, 이오스 내부 함수를 이용한 작동과 랜덤 함수 구현을 위한 게임 프로젝트인 CryptoHero, ERC-721을 이오스에 적용시킨 *** 프로젝트 이렇게 세 프로젝트를 스터디 내부에서 진행을 하고많은 결과물을 만들었습니다. 그중 CryptoHero 프로젝트와 스터디 내부에서 개발을 하며 많은 어려움이 있었기에 새로운 프로젝트 개발을 편하게 작업하기 위한 이오스 통합 개발 환경(IDE) 프로젝트 두 개는 개발 진행 중에 있습니다. 해당 프로젝트들에 대해 문의하실 분들은 글 하단의 오픈톡으로 연락 주시면 됩니다.

블록체인 코어 개발자가 되려면?

위 프로젝트들을 진행을 하면서 저는 블록체인의 생태계와 디앱의 작동 방식, 오픈소스 스마트 컨트랙트 플랫폼에 대한 이해가 늘었습니다. 이후 이런 블록체인을 직접 개발을 해보고 싶어졌습니다. 블록체인 코어 개발에 대해 공부를 하고 싶었습니다.

먼저 우리 Unlimit Network 스터디에 계신 Owen님께서 비트코인, 라이트코인 소스 분석을 모두 해주시면서 블록체인 코어 개발에 대한 조언을 해주셨습니다.

비트코인 코드 분석 : 가장 먼저 기본이 되는 비트코인 코드 분석 및 UML 시퀀스 다이어그램을 만들기로 했습니다. 각 함수별 작동 방식과 지갑에 대한 이해를 모두 한 후 프로그램 동작 방식 및 구현 방법에 대해 공부를 했습니다. 꽤나 분량이 큰 양이고 이를 통해 코어 개발에 한걸음 다가가고 있습니다.

라이트코인 코드 분석 후 포크 코인 제작 : 비트코인에서 필요 없는 부분이 제거되어 좀 더 라이트한 라이트코인에 대해 현재 이해 및 한글 주석을 통해 구현하고 개발을 하는 것까지 Unlimit Network 코드뷰팀에서 진행 중입니다. 이를 통해 1세대 코인의 구조를 가진 나만의 알트코인을 제작할 수 있고, 기본적인 이해와 비트코인보다 가볍고 보기 좋은 코드를 제작할 수 있습니다.

  • 라이트코인 참고 자료 제작 중

현재는 라이트코인 코드 분석 및 포크 코인 제작을 진행 중이고 앞으로 이더리움, 이오스 코드 분석 후 자체 포크 코인 제작에 대한 공부를 할 예정입니다. 이렇게 먼저 현재 작동하는 블록체인 중 자신이 마음에 드는 코인을 분석하고, 그대로 따라 해보는 것으로 먼저 블록체인 코어 개발자로 한걸음 다가간다고 생각합니다. 이를 숙지하고 익히고 현재 Unlimit Network의 Daniel님은 자신의 스타일로 Python을 이용하여 이더리움 코드의 문제점을 해결해 재현하고 블록체인을 개발을 하고 있습니다.

위와 같이 현재 블록체인 개발을 공부하는 방법을 세 가지로 생각하여 공부를 하고 있습니다.

  • 실 사용 가능한 블록체인 스마트 컨트랙트 개발
  • 실 사용 가능한 블록체인 코드 분석
  • 실 사용 가능한 블록체인 수정 및 자신의 스타일로 변경

이후 Architect 팀에서 현재 트렌디한 컨센서스 알고리즘 및 구현에 대한 방법을 연구하여 우리만의 스타일로 변경한 블록체인 위에 올릴 수 있도록 연구하고 있습니다. 이를 통해 블록체인을 개발을 하고 있으며, 추후 오픈소스 프로젝트로 모두가 참여할 수 있는 블록체인 프로젝트 기획을 생각하고 있습니다.

마치며

아직은 블록체인 개발자라는 꿈에 다가가고 있는 중이며, 많은 연구와 많은 개발 실력이 뒷받침되어야한다고 생각합니다. 자신이 주력으로 생각하는 언어에 대해서는 누구보다 자신 있게 코딩을 할 수 있어야 하고, 알고리즘과 자료구조에 대해 숙지하고 사용 가능해야 하며, 기본적으로 서버 구조와 DB 구조에 대해 이해를 하고 있다면 정말 도움이 많이 됩니다.

이 글을 통해 더욱 발전할 수 있는 블록체인 개발자를 꿈꾸는 친구들에게 조금이나마 도움이 되었으면 좋겠습니다.

블록체인 개발팀 DevTooth : http://devtooth.com

블록체인 스터디 Unlimit Network : http://unlimit.network ( 준비중 )

문의 TomJeong 오픈 카톡 : https://open.kakao.com/o/swBT5RP

--

--