[dApp] 진짜 쉬운 이더리움 은행 만들기 1편 with Truffle

in #ethereum7 years ago (edited)

Ethereum_Truffle

할 것



가상의 클라이언트를 생성하고 이더리움을 입출금 가능한 은행 스마트 컨트랙트를 작성해 콘솔 환경에서 실습해봅니다.

이 프로젝트는 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 생성 및 작성

  • MigrationDeploy

  • 실행하기

2편 이어보기

Sort:  

:0 어떻게 입문해야하나 많이 고민했는데
따라하기 쉬워서 너무 좋네요! 감사합니다~