[BlockChain]이더리움 블록체인_Web3설치하기

2 minute read

이더리움 Web3는 우리가 더 쉽게 이더리움 블록체인에 접근할 수 있도록 제공하는 하나의 API입니다. 즉 Web3를 이용하여 블록체인을 제어 및 접근이 가능합니다.

<개발환경>

윈도우 VMware를 이용한 OS 환경 — Linux 우분투 16.04 (기본적으로는 OS자체가 Linux이면 좋지만 대다수가 윈도우이기 때문에 Vmware를 사용한다)

Node js, Web개발

Web3로 누구나 Dapp을 개발할 수 있습니다. 이번 포스팅에는 Web3를 npm으로 설치하는 방법과 몇몇 API 함수의 기능에 대해 소개할 예정입니다. 보통 Truffle을 통해서 DAPP을 만들지만 이 포스팅은 Truffle을 사용하지 않고 Web3와 Nodejs만으로 DAPP웹페이지를 구성하는 방법을 소개할 예정입니다. (참고로 Truffle을 사용해서 이더리움 Dapp을 개발하는 방법이 더 쉽고 개발하기 편합니다. 그 이유는 여러 스마트컨트랙트를 작성한 경우 컴파일 코드를 작성할 필요 없이 자동으로 컴파일 해주는 등 프로젝트 관리 면에서는 편한 툴입니다.)

먼저 Web3을 설치해봅시다.

  • Web3

Web3는 JavaScript용 API로 DAPP을 만들기 위한 가장 기본이 되는 API라 할 수 있습니다.

Web3 1.0 Documentation Image Alt 텍스트

Web3 구조

Web3는 API를 이용하여 이더리움 네트워크에 접근합니다. 즉 JSON-RPC:8545의 통신을 통해서 직접적으로 노드에 접근하죠. 때문에 Web3 함수만으로도 이더리움 DAPP개발이 가능하도록 하였습니다.

  • Web3 설치

Web3를 설치하기 전에는 여러작업이 필요합니다. npm을 통해서 쉽게 설치가 가능하기 때문에 web3를 설치하기전 작업들을 살펴봅시다.

먼저 nodejs와 npm을 설치해봅시다. 아래 순서대로 리눅스 명령어를 치면 됩니다. nodejs와 npm을 알고 설치된 분은 아래의 과정을 건너 뛰고 바로 npm install web3의 명령어를 통해 설치하시면 됩니다.

(1) nodejs 설치

sudo apt-get install update
sudo apt-get install nodejs
sudo apt-get install npm

(2) web3 설치 (여기서부터 중요!!)

nodejs와 npm을 설치완료하였으니, 이제 web3를 설치해봅시다. 그전에 먼저 nodejs의 프로젝트를 생성해봅시다.

  • nodejs 프로젝트 생성

적당한 위치에 프로젝트를 만든 후 npm init을 칩니다. 그러면 아래와 같이 프로젝트가 생성됩니다.

Image Alt 텍스트

package.json파일이 생겼다면 프로젝트가 성공적으로 생성된 것입니다. 해당 프로젝트에 Web3를 설치해봅시다.

npm install web3

위 그림과 같은 오류가 나온다면 sudo apt-get install node-legacy 의 명령어를 추가로 입력하여 설치하셔야 됩니다. 설치 후 다시 재설치 하면 이상없이 설치가 완료가 됩니다.

정상적으로 설치되었다면 node_module이라는 폴더하나가 생겼을 겁니다. 보통 npm을 통해서 모듈을 설치하게 되면 이처럼 node_module이라는 폴더가 생기게 되요.

Web3 API에서 개발 시 가장 많이 사용하는 또는 중요한 Function

web3.eth.estimateGas(callObject[,callback])

스마트컨트랙트를 블록체인에 Deploy시 해당 스마트컨트랙트의 대한 가스량에 대해서 계산하는 함수입니다. 실제 메인넷에서는 스마트컨트랙트에 대한 가스량을 정확하게 알아야 하므로, 이 함수는 매우 중요합니다.

web3.eth.getGasPrice([callback])

현재 이더리움 블록체인의 가스가격을 Return 해주는 함수입니다. 이더리움 블록체인 실행시 가스가격와 가스량은 매우 중요합니다. 가스량 * 가스가격이기 때문에 이 함수 또한 메인넷이나 테스트넷에서 운영시 중요한 함수입니다.

web3.eth.sendSignTransaction(TransactionData, [, callback])

이더리움 블록체인에 실제로 트랜잭션을 발생시키기 위한 함수이다. 이 함수는 프라이빗 네트워크(로컬)에서는 실제 많이 사용하진 않지만 메인넷과 테스트넷에서는 이 함수는 필수적이죠. 우리가 트랜잭션을 발생시키기 위해서는 개인키의 Sign이 필요합니다.

web3.eth.Contract

스마트컨트랙트를 관리하고 실제 블록체인에 스마트컨트랙트를 올릴 때 이 함수를 많이 사용합니다. 실제 스마트 컨트랙트는 Solidty 작성 -> 컴파일 ABI(bytecode) -> JSON 형태 변환 -> Deploy -> SignTransaction -> Contract Address 생성 순으로 생각하면 됩니다. 이는 Web3를 이용한 스마트컨트랙트를 작성하는 부분에서 더 자세히 알아보도록 하겠습니다.

그외 다양한 Function은 자기 개발에 맞게 사용하면 됩니다. (다 알려드리고 싶었지만 너무많아서 기본적으로 필요한 것만 알아보았습니다.)