아하토큰(AHT) ERC-20 컨트랙트 구현부터 배포까지 A to Z (2편)

Philip Lee
aha.official
Published in
6 min readFeb 1, 2019

--

안녕하세요? 지식커머스플랫폼 아하(Aha) 프론트엔드 및 컨트랙트 개발자입니다.
아하(Aha)는 질문자, 답변자, 큐레이터 모두 커뮤니티에 기여한 만큼 매일 토큰 보상을 분배 받는 암호화폐 보상형 Q&A 플랫폼입니다.

아하 (Aha) 둘러보기 : https://www.a-ha.io/?from=medium
AHT token contract github: https://github.com/aha-official/AHT

1편에서 생성한 Truffle project 폴더를 visual studio code로 열어봅시다. 터미널에서 해당 폴더로 이동한 뒤, code . 이라고 입력하시면 visual studio code에 해당 폴더가 오픈될 겁니다. 혹시 안되시는 분들은 View → Command Palette… (Mac 단축키 cmd+shift+p) 에서 ‘Shell Comand: install ‘code’ command in PATH’ 를 찾아서 실행하시면 됩니다.

PATH 환경변수에 code 등록

좌측에 Explorer 탭을 보면 project 디렉토리 구조가 한눈에 보입니다. 컨트랙트 구현을 할 거니까 contracts 폴더를 오픈합니다.

그런데, Migration.sol 이라는 파일이 포함되어 있네요? 파일 내용을 보면, Migrations라는 contract 가 하나 포함되어 있습니다. 이 컨트랙트는 배포 시에 더 자세히 들여다보기로 하고, 지금은 중복으로 배포가 되는 것을 방지하기 위한 용도의 관리용 컨트랙트라고만 생각하고 넘어가셔도 좋습니다. 특별한 목적이 없다면 수정할 필요가 없고, 삭제하시면 안됩니다.

Visual Studio Code 에디터 설정

Migration.sol 파일을 오픈해보면, 아래처럼 syntax highlighting 이 전혀 안됩니다. 에디터가 아직 .sol 파일의 syntax를 모르는 것이죠. visual studio code는 추가로 설치해서 사용할 수 있는 extension 이 매우 많습니다. 우선 Solidity 를 위한 extension을 깔아봅시다.

Solidity extension

못생겼다…

Code → Preferences → Extensions로 가서 ext:sol 이라고 검색하시면, solidity 관련 extension들이 표시됩니다. 다운로드 수가 제일 많은 순서대로 보여주는 것 같네요. 가장 상단의 Juan Blanco의 solidity를 설치합니다. 설치가 완료되면 Reload 버튼을 누르고 다시 Migrations.sol 파일을 열면,

..뭐.. 뭐지?

앗.. syntax highlighting이 되면서 키워드에 아름답게 색칠이 되었는데, 뭔가 빨간줄이 엄청나게 많습니다. 이것은 방금 설치한 solidity extension에서 default로 linting을 지원해주기 때문입니다. linter default option에 tap 간격이 4가 아니면 에러로 표시하는 룰이 포함되어 있고, 위 코드는 tap 간격이 2로 되어 있어서 에러가 표시되고 있는 것이지요. 일종의 시어머니인 셈입니다..

애미야.. 2칸?…

Solidity Linter

solidity linter 는 ethlint, solhint 2가지가 있습니다. solium이라는 것도 있었는데 ethlint의 구버전입니다. 개발자가 작명 당시 이름이 겹치는 브랜드가 있었던 걸 몰랐나봅니다..

2019년 4월 이후부터는 solium package는 업데이트가 되지 않는다고 하니 참고하시면 좋을 것 같습니다.

다른 언어는 몰라도 solidity 는 블록체인에서 구동되는 컨트랙트를 설계하기 위한 언어이므로 보안이 생명입니다. ethlint든, solhint든 코드로 인해 발생할 수 있는 security issue를 미연에 잡아주기 때문에 귀찮더라도 linter 를 꼭 사용하시기를 권장 드립니다.

저희가 방금 설치한 solidity extension은 linter로 solium 또는 solhint를 쓸 수 있습니다. 환경설정 패널(Code → Preferences) 에서 solidity 로 검색해보시면 현재 linter 설정을 아래와 같이 확인할 수 있습니다.

"solidity.linter": "solium"

특별히 변경하지 않고 그대로 solium을 쓰도록 하겠습니다. (깃헙을 보니 solium이 star를 훨씬 많이 받았네요.) solium 에서 linting rule은 solidity 공식 문서의 스타일 가이드를 엄격하게 따르지는 않는다고 합니다.

https://solium.readthedocs.io/en/latest/user-guide.html#list-of-style-rules,
https://www.npmjs.com/package/solium-plugin-security#list-of-rules
각각 style rule, security rule 입니다. linting 에러 때문에 고통받으실 때마다 찾아보시면 됩니다.

Icon theme

추가로, vscode에서 .sol 파일 아이콘을 더 이쁜 걸로 보고 싶으시면 Material Icon Theme을 추가로 설치해주시면 됩니다. 중요한 부분은 아니지만 우리의 눈은 소중하니까 설치해줍시다.

이쁘쥬?

마무리를 해보죠. Migration.sol 에서 빨간줄이 그어진 곳 마다 문장 앞에 tab을 박아줍시다. 그러면 이제 정말 봐줄 만한 환경이 마련되죠.

이제 개발 환경 세팅은 얼추 마무리 되었고, 다음편은 우리가 개발하려는 ERC20 기반 토큰에 대해서 이야기를 이어가보도록 하겠습니다.

--

--