DApp 만들기 두 번째 글을 쓰기 전에 전체를 조망해보는 글을 써볼까합니다.
(왜 첫 번째 글을 쓰기 전에 이 걸 안썼지? 하는 생각이 드는데.ㅎㅎ)
제가 연습해본 루트는 이렇습니다.
1. Dapp을 올릴 블록체인을 선택합니다. -> 이더리움을 선택
이더리움을 설치하고 geth라는 cli를 통해서 제 컴퓨터에 설치한 노드와 통신하는 법을 익힙니다. (cli는 명령어를 타이핑해서 통신하는 인터페이스를 말합니다 .도스 명령창 처럼 말이죵)
이 부분에서는 geth 의 명령어가 무엇이 있는지 옵션이 무엇을 뜻하는지를 익히는 게 중요하더라구요. 자주 사용하는 옵션 체크!!!!!!!
private network를 구동하기 위한 옵션 체크하고 계정에서 이더보내기, 채굴해보기 등등을 익혀보았습니다.
2. Smart Contract 작성을 위한 프로그래밍 언어 익히기와 컴파일
윈도우에서 돌아가는 프로그램을 만들기 위해서는 C++, C#을 사용하듯이 이더리움 위에 올라갈 Dapp을 만들기 위해서 사용해야 하는 언어가 여러 개 있습니다. 그 중에 문서가 제일 많은 solidity정하고 연습했습니다. 에디터는 VIM을 사용해서 했습니다. vim을 사용해서 solidity 소스를 작성하고 solc 컴파일러를 사용해서 컴파일 했습니다.
그런데 여기서.. 이더리움에 Dapp을 배포하기 위해서 윈도우에 프로그램 설치하는 방식과 달라서 약간 헤맸습니다. Dapp 배포를 위해서는 소스를 컴파일 후에 얻어야할 정보가 abi라는 인터페이스와 binary code 두 가지 입니다. 이 두가지를 컴파일 할 때 output으로 빼내고 private network구동후에 배포를 시킵니다. (Dapp 연습할 때 가장 헷갈리는 부분!!! -0-)
그래도 한 두 번 해보면 감이 잡힙니다. 허나 하다보면 뭐가 막 불편합니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그래서 IDE를 찾아봤더니 REMIX라는 걸 가장 많이 사용하더군요. 제작부터 배포까지 가능합니다. 그래서 REMIX 사용법을 익히고 넘어갑니다.
3. Front-end(웹)와 Smart Contract 연결해서 DApp 만들기
Web application개발할 때와 비슷합니다. web3라고 하는 자바스크립트 기반으로 만들어진 라이브러리를 사용해서 이더리움의 private network와 통신을 했구요. web3는 geth와 사용방법이 거의 비슷했습니다.
그리고 nodejs를 설치하고 express, web3를 사용해서 private network와 통신한 내용을 Front단에 뿌려주는 식으로 개발했습니다.
참! truffle이라고 nodejs기반으로 solidity를 컴파일 하고 배포해주는 라이브러리가 있습니다. 이걸 사용해서 하면 smart contract관리가 편합니다.
도움이 됐을지 모르겠네요. :)
처음 1번하고 2번 감을 잡는 게 어렵지 한 번 해보시면 금방금방 후딱후딱 갑니다 :)