본문 바로가기
  • 인공지능
  • 블록체인
  • 정보보안
신기술분석/블록체인

블록체인 Dapp 만들기 #1

by nathan03 2021. 6. 25.
반응형

블록체인 기반 탈중앙형 플랫폼 비즈니스 서비스를 만들어 보고자 합니다.

블록체인은 매일 큰 이슈를 불러오고 있는데 정작 그 기술과 쓰임새를 제대로 이해하는 사람들은 없는 것 같아 아쉬움이 많이 남습니다.  

워낙에 어려운 기술이고, 지금까지 혼자서 공부하던 배운 내용들을 공유하고, 토론하고 싶습니다.  

또한 정리하면서, 실제로 블록체인 기반의 플랫폼이 성공하는 작품을 하나 만들고 싶습니다.

혹시 블록체인 기술에 관심이 많으신 분들, 개발하고자 하는 분들은 아래 공개 오픈 채팅방을 만들었으니, 

활발하게 공유하고, 기술 논의 하면서 성장하고픈 분들이 계시다면 아래 공개 채팅방에 편하게 오시면 좋을 것 같습니다. 

들어오시면 가볍게 인사와 자기소개 부탁 드리겠습니다. 

※ 다만, 코인을 광고하고 상업적/의도적 목적을 가지고 오시는 분들은 정중히 사양합니다. 
    자동 광고 봇들로 인하여 비번을 설정했습니다. => 채팅방 참여코드 확인하시고 **** 맞는 값을 넣으면 됩니다. 

https://open.kakao.com/o/g18kXKkd

 

블록체인전문가모임

블록체인, 블록체인개발

open.kakao.com


가. 블록체인 Dapp 정의 

디앱(DApp) 또는 댑이란 Decentralized Application의 약자로서, 이더리움, 큐텀, 이오스 같은 플랫폼 코인 위에서 작동하는 탈중앙화 분산 애플리케이션을 말한다. 간략히 분산앱이라고도 한다.

나. 환경설정

1) 이더리움 DAPP 개발환경 셋업 (Geth 설치) ※ Geth : Go Ethereum 약자 (Go 언어로 작성)
- Full Ethereum 노드를 내 로컬 환경에서 커맨드 라인 인터페이스로 실행시키는 프로그램이다. 

https://geth.ethereum.org/downloads/

 

Downloads | Go Ethereum

Retrieving packages from release server...

geth.ethereum.org

윈도우즈 환경에서 설치를 진행할 것이므로, Geth 1.10.18 for Windows 를 선택하여 설치한다. (용량: 52.4MB)

인스톨 옵션에서 "Geth, Development tools" 를 꼭 선택하고, 설치하도록 한다. 

설치가 완료 됐다면, 윈도우즈 Powershell or cmd 창에서 geth version 명령어를 통해  잘 설치 됐는지 확인한다. 

C:\> geth version

Geth 가 실행이 되지 않는다면, Path 설정이 안되었으므로, 윈도우 > 시스템 > 고급시스템 설정 > 환경 변수 > 시스템 변수 > 환경 변수 편집을 통해 Geth 설치 경로를 설정 해준다.

 

2) 이더리움 DAPP 개발환경 셋업 (가나슈 설치)

가나슈는 스마트컨트랙 개발에 있어서 편한 인터페이스를 제공한다. 예전 TestRPC 업그레이드 버전이다. 가나슈는 이더리움노드를 인메모리로 실행시켜 빠른 속도로 트랜잭션을 처리하고, 10개의 테스트 계정이 100개의 이더가 미리 탑재 되어 생성이 되어 있다. 

https://www.trufflesuite.com/ganache

 

Ganache | Truffle Suite

Deploy contracts, develop your decentralized applications (dapps), and run tests on smart contracts. Available as a desktop application & command-line tool.

www.trufflesuite.com

윈도우즈 환경에서 설치를 진행 할 것이므로, Downloads(Windows) 를 선택하여 설치한다. (용량:186 MB)

QuickStart 실행 시키면 아래와 같은 화면이 나온다. 

  • Current Block : 노드에서 채굴한 마지막 블록 Number
  • GAS Price : 노드가 트랜잭션을 채굴하기 위한 최소한의 가스 가격
  • GAS LIMIT : 트랜잭션을 무사히 마치기 위해 필요한 최대한의 가스량 
  • Hard Fork : 사용할 하드포크를 나타낸다. (default : 상트페테르부르크)
  • Network ID : 가나슈 서버의 내부 블록체인 식별 ID가 5777 로 초기 설정되어 이더리움 노드를 실행함 
  • RPC Server : Geth 나 MetaMask 에서 이 주소로 연결하면 가나슈 환경을 사용할수 있게 해줌
  • MINING Status : 새로운 블록을 채굴하는 속도를 보여줌 (default 자동 생성으로 설정되어 있어 몇초만에 채굴됨)
  • MNEMONIC : 연산기호, 여러 단어들의 조합으로 계정 생성시 사용하는 비밀 문자이다. (이 문장을 가지고, 메타마스크에서 계정을 쉽게 옮길수 있다.)

본인이 사용할 연산기호를 설정할 수 있다. 본인이 개발에 사용하기 편한 문자를(예: shaft clap gun expire course crouch magnet funace grant shop used vaca)입력하고, SAVE AND RESTART 버튼을 누른다. 

  • TX Count : 이 계정주소에서 몇번 트랙잭션을 처리 했는지 숫자를 의미
  • INDEX : 10개의 계정 중에 몇번째 위치하는를 나타낸다.

키 열쇠 모양을 클릭하면, 계정의 개인 비밀키를 확인할 수 있다. 

BLOCKS 를 누르면 현재 노드가 채굴한 블록이 몇개인지 볼수 있으며, 설치 후면 제네시스 블록(최초 블록)만 보여진다. 

TRANSACTIONS 를 누르면, 노드에서 진행한 트랜잭션의 목록을 볼수 있다. 

LOGS 를 누르면, 현재 노드의 모든 로그를 보여준다.

 

서버는 호스트이름과 포트넘버, 네트워크 ID를 설정할수 있으며, 채굴 간격 시간을 AUTOMINE 을 중지하고 간격 시간을 조절할 수 있다.

어카운트&키는 가나슈 내에서 쓸수있는 계정 수를 조절하거나, 초기 이더리움양을 조절 할수 있다. 

 

3) 이더리움 DAPP 개발환경 셋업 (노드 설치)

https://nodejs.org/ko/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

4) 이더리움 DAPP 개발환경 셋업 (트러플 설치)

트러플은 스마트컨트랙를 컴파일하고, 테스트하며 배포도 할수 있는 프레임워크이다.
node(ver.16.15.1)가 설치 되었다면, 간단하게 npm install -g truffle 를 통해 설치 가능하다. (Python 설치 필수)
truffle은 ver 4 이상을 반드시 설치 해야 한다. 이전 버전이 설치 되었다면, npm uninstall -g truffle 을 통해 삭제 후 다시 설치 한다.

주의, 트러플 설치 시 파이썬, visual C++ 등이 설치가 안되면, 트러플 설치가 진행이 되지 않는다. 

개발 노트북에서는 npm install -g truffle 로 한번에 설치가 가능했지만, 새 PC에 새롭게 셋팅하려니, 트러플 설치가 잘 안된다. 필요한 개발 환경들은 오류를 통해, 일일이 컴파일에 필요한 SDK 들을 확인하고 설치해줘야 한다...-,.- 상당히 괴롭다. 

 

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

https://visualstudio.microsoft.com/ko/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false 

 

Visual Studio를 다운로드해 주셔서 감사합니다. - Visual Studio

Visual Studio를 처음 사용하시나요? 새로운 개발 도구를 학습하는 것은 어려울 수 있습니다. 이 단계별 학습 여정을 통해 원하는 언어로 간단한 앱을 성공적으로 만들 수 있습니다. 시작하겠습니다

visualstudio.microsoft.com

오류를 하나씩 잡아서 설치 하기 어렵다면, 다음 방법도 사용해보자. (단점,, 설치시 막대한 시간이 소요됨)

npm install -g npm@latest // Install with the latest npm. (Currently released to 5.8.0.)
npm install -g production windows-build-tools

# 트러플 오류 모음 

트러플 사용으로 스마트 컨트랙트 사용시 반드시 버전 문제가 발생한다. 
단순히 npm install -g truffle 를 통해 설치하게 되면, 가장 최신 버전으로 설치가 되기 때문에
기존 예제들이나 Remix 배포 호환 문제가 발생한다. 따라서 따라하고자 하는 예제들의 버전을 체크하고, 버전을 낮추거나 조정하는 것이 좋다. 또한 truffle 낮은 버전 설치시 현재 설치된 NVM 버전도 낮추는 것이 좋다.  

truffle version // 트러플 버전 확인
npm uninstall -g truffle  // 트러플 삭제
npm install -g truffle@5.0.4 // @ 뒤에 버전 체크 후 재설치
nvm list available // 버전 확인

nvm install v14.17.3 // 해당 버전 설치

nvm use v14.17.3 // 사용하고자 하는 버전 옵선 사용

 

https://www.trufflesuite.com/truffle

 

Truffle | Truffle Suite

Open source framework for rapid Dapp development and Smart Contract Life Cycle Management. Truffle is the most popular dev framework for Ethereum and makes your life easier!

www.trufflesuite.com

npm install -g truffle@v5.1.61

휴 드디어 설치 완료 ~ 말씀드리지만, 기존 개발 노트북에서는 단순 명령어로 쉽게 설치가 됐는데, 새로운 PC (non-개발환경) 상황에서는 상당히 ... 많은 버전 문제들이 발생하네요. 다들 성공적으로 설치 하시기 바랍니다. :) 

 

5) 이더리움 DAPP 개발환경 셋업 (Visual Studio Code)

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

비쥬얼 스튜디오 설치 이후, extenstion 에서 solidity 언어를 Support 하는 라이브러리를 추가 설치 하자. 


6) 이더리움 DAPP 개발환경 셋업 (메타마스크)

이더리움 개인 지갑 / 크롬이나 파이어폭스 브라우저에 extension 환경에서 제공 함 

https://metamask.io/

 

MetaMask

A crypto wallet & gateway to blockchain apps

metamask.io

7) 이더리움 DAPP 개발환경 셋업 (메타마스크지갑과 가나슈 연결)

i) 가나슈 환경 셋팅에서 SERVER 설정 
   hostname : localhost / Port number 1337

ii) 메타마스크 지갑 설정 > 네트워크에서 가나슈 네트워크 설정 정보를 셋팅해준다. 

iii) 생성된 가나슈 계정을 메타마스크 지갑으로 연동 
    -  메타마스크 계정 가져오기  (유형선택 : 비공개키, 문자열은 가나슈의 계정의 Private Key를 복사해서 가져오기)

기존 테스트하면서 Account 1, 2, 3 이 있어서, Account 4 에 가나슈 첫번째 계정이 등록됨 (0xf361A8F7751fe5d03990BC360C1Bd58876eB5F23)

Account 이름을 이전 버전에서는 변경이 가능했으나, 메타마스크 최신 버전에서는 계정 이름 변경이 안됨 !! 

똑같은 방법으로 가나슈 두번째 계정도 등록해보자.
Account 5 : 0x4404B38B47638277d823B32Ce6f4274e990EA8F0

잘 등록이 됐다. 이제 가나슈 첫번째 계정에서 두번째 계정으로 송금을 해보자. 

몇초 후에 첫번째 계정에서 두번째 계정으로 돈이 송금되었다. 메타마스크 지갑에서도 확인하고, 가나슈에서도 확인해보자.

트랜잭션에서도 확인해보자.

로그에서도 정상적으로 트랜잭션이 발생한 부분을 확인할 수 있다.

여기까지 셋팅을 하면 가나슈의 계정과 메타마스크 지갑과의 연동이 완료 됐다. 

확인해야할 사항 기존 가나슈의 MNEMONIC 주소를 통해 일괄 계정 가져오는 부분이 메타마스크 업데이트 되면서 등록하는 부분이 없어진 것 같다. 

반응형

댓글