
할 것
가상의 클라이언트를 생성하고 이더리움을 입출금 가능한 은행 스마트 컨트랙트를 작성해 콘솔 환경에서 실습해봅니다.
이 프로젝트는 github에 등록되어 있습니다.
준비물
Node.js
홈페이지에 접속해 LTS 버전을 설치해주세요. Truffle 을 설치하는데 사용합니다. (Node.js 5.0 상위 버전을 추천합니다.)
Truffle
> npm install -g truffle
Truffle 은 이더리움 dApp 개발 프레임워크입니다. 스마트 컨트랙트 작성, 빌드 및 배포를 제공하며 유닛 테스트에 용이합니다.
Ganache
홈페이지에 접속하면 쉽게 다운로드 및 설치 할 수 있습니다.
Ganache 는 가상의 이더리움 클라이언트를 만들어줍니다. 마음껏 테스트 가능한 지갑, 계정, 화폐를 제공합니다. 이번 예제에서 Ganache 에 있는 이더리움을 사용합니다.
프로젝트 생성
준비물을 모두 설치했다면 이제 프로젝트를 생성해봅시다.
먼저 빈 폴더를 생성합니다:
> mkdir bank
> cd bank
truffle init 을 입력하여 Truffle 프로젝트 뼈대를 생성합니다:
> truffle init
Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!
Commands:
Compile: truffle compile
Migrate: truffle migrate
Test contracts: truffle test
Windows 환경에서 truffle 명령어 실행시 네이밍 충돌로 올바르게 작동하지 않는 경우가 있습니다. 이는 truffle.cmd 명령어로 대체합니다. 만일 계속해서 문제가 생길시 여기에서 해결하세요.
디렉토리 구조를 살펴봅시다:
├── contracts
│
├── migrations
│
├── test
├── truffle-config.js
└── truffle.js
/contracts
Solidity 소스 코드를 담고 있는 폴더입니다. 이곳에 컨트랙트를 직접 작성합니다.
/migrations
이 폴더는 Truffle 에서 매우 큰 의미를 가집니다. migrations 폴더 여러분이 작성한 컨트랙트(Contract)를 이더리움 네트워크에 Deploy 하는 방식 JavaScript 로 작성합니다.
/test
Truffle 은 여러분이 작성한 Contract 의 Unit Test 를 가능케합니다. /test 폴더에 테스트 케이스를 작성하고 truffle test 로 테스트를 실행합니다.
/truffle.js,/truffe-config.js
두 스크립트 모두 Truffle Configuration 파일입니다. 프로젝트 생성시 기본적으로 생성되며 일반적으로 /truffle.js 를 사용합니다. /truffle-config.js 는 네이밍 충돌시 사용합니다.
프로젝트 설정
앞서본 /truffle.js 를 수정합니다:
module.exports = {
networks: {
development: {
host: '127.0.0.1',
port: 7545,
network_id: '*',
}
}
};
Truffle 은 이 모듈을 읽어 실행 환경을 조성합니다.
networks: 현재 dApp 의 네트워크 환경을 정의합니다.
live-(이더리움 메인 네트워크)development-(개발용)ropsten-(Ropsten 네트워크)...
등 접속할 네트워크를 설정합니다.
host: 이더리움 클라이언트 주소를 가리킵니다. 우리는 로컬에서 작업하므로 127.0.0.1 입니다.
port: 포트는 Ganache 의 기본 포트 7545 입니다.
network_id: 이더리움 네트워크는 고유의 Network ID 를 가지고 있습니다. 대표적으로 1 번은 Main Ethereum Network 를 가리킵니다. 우리는 사설(Private) 네트워크를 사용하므로 * 로 설정합니다.
마무리
지금까지 Truffle 프로젝트 설치 및 환경설정을 마쳤습니다. 다음 포스팅은 아래 내용을 포함합니다.
Contract생성 및 작성Migration및Deploy실행하기
:0 어떻게 입문해야하나 많이 고민했는데
따라하기 쉬워서 너무 좋네요! 감사합니다~