이더리움 (Ethereum) 개발 기초 #1 – Geth 설치, 계정 생성

1
이더리움 개발을 시작해보자.

블록체인 프로젝트에서 가장 많이 사용되는 이더리움(Ethereum)에 대한 기본기부터 이해하는 시간을 가져보고자 한다.
이번에 소개하는 내용은 이더리움 프로젝트 개발 관련 용어들의 정리, 그리고 Geth 설치와 테스트에 관한 것이다.

이더리움 재단에서 개발한 오픈소스 프로젝트

블록체인이 P2P의 안전한 계약을 기반으로 두고 있기에, 이더리움은 개발에 대한 이해가 있는 개발자라면 쉽게 블록체인 기술을 구현할 수 있도록 만든 플랫폼이라고 보면 된다.

Geth로 클라이언트 구축

이더리움은 우리에게 익숙한 다양한 언어(C++, Python, JavaScript 등)부터 이더리움 재단에서 개발한 Go 등으로 클라이언트를 구축할 수 있다.
그 중에서 가장 활발하게 개발이 진행되고 있는 것은 Go로, go-ethereum(줄여서 Geth)를 설치하여 작업이 가능하며, 여기서도 Geth에 대해 설명할 것이다.

Ether의 화폐단위

가상화폐에 대해 어느정도 이해가 있는 사람이라면 화페의 단위가 비교적 작게 쪼개진다는 것을 알 수 있을 것이다. 이더(Ether) 또한 웨이(wei)와 이더(ether)로 나누어지는데, 1 ether는 10에 18승 wei와 같다.
그래서, 1 ether는 1,000,000,000,000,000,000 wei이고, 3승 단위로 milliether(finney), microether(szabo), Gwei(shannon), Mwei(lovelace), Kwei(babbage) 등으로 구분되고 있다.

이더 계약 수수료 Gas

이더의 송금 또는 계약을 실행하기 위해서는 그에 따른 수수료가 발생되는데, 그것을 Gas라고 부른다.
지불되는 Gas는 요구하는 자원의 양과 복잡성에 따라 결정되는데, Gas Fee라고 부르는 수수료는 현재 Gas의 가격에 의해 결정된다.

GAS 가격 변동을 웹사이트에서 확인할 수 있다.

Geth를 설치해보자.

이제 대략적인 이더리움의 명칭들을 살펴보았으니, 본격적인 Geth 설치를 시작해보자.
실제 개발자들은 리눅스 등의 환경을 사용할 수 있겠지만, 가장 쉽게 접근할 수 있는 윈도우 환경에서 설치하는 것을 살펴보고자 한다. 설치 후에는 Geth 콘솔 명령어는 동일하므로 큰 무리는 없을 것이다.
먼저, Geth 파일을 다운로드 해보자. 다운로드는 이더리움 다운로드 웹사이트를 이용할 수 있다.

이더리움 다운로드 : https://geth.ethereum.org/downloads/

Ethereum 다운로드 사이트에서 각 운영체계에 맞는 Geth를 다운받을 수 있다.

이 중에 [Geth 1.7.3 for Windows]를 다운받으면 되며, 압축파일 형태이므로 실행 시 폴더를 작업하기 쉬운 곳으로 위치하면 좋다. 참고로 필자는 D:\Geth\ 폴더 안에 압축을 풀었다.
압축을 풀면 여러 실행파일들이 Geth 폴더 안에 생성되는 것을 확인할 수 있다. 여기까지 했다면 일단 첫 시작은 된 것이다.

초기 설정 및 계정 생성

이번 시간에는 Geth의 초기 설정 작업 및 계정(account)의 생성까지만 다룰 예정이다. 여기까지 진행하였다면, Geth 콘솔에 들어가서 첫 작업을 할 수 있다.
초기 설정은 진행하지 않아도 되지만, 설정을 원할 경우 genesis.json 파일을 만들어 초기값을 넣을 수 있다. Geth 1.7.3 버전의 genesis.json 파일의 내용은 아래와 같다.

{

“nonce”: “0x0000000000000042”,

“mixhash”:

“0x0000000000000000000000000000000000000000000000000000000000000000”,

“difficulty”: “0x400”,

“alloc”: {},

“coinbase”: “0x0000000000000000000000000000000000000000”,

“timestamp”: “0x0”,

“parentHash”:

“0x0000000000000000000000000000000000000000000000000000000000000000”,

“extraData”: “0x”,

“gasLimit”: “0xffffffff”,

“config”: {

“chainId”: 4224,

“homesteadBlock”: 0,

“eip155Block”: 0,

“eip158Block”: 0

}

}

설정파일은 버전마다 조금씩 다르기 때문에 github.com 등에서 찾아보면 되겠다.
이 내용을 genesis.json 파일에 저장한 후 사용하고자 하는 데이터 폴더에 넣어두고 아래와 같은 명령어로 초기화 시킨다.

d:\Geth\geth –datadir D:\Geth init d:\Geth\genesis.json

정상적으로 초기화 되었다면 d:\Geth 폴더 안에 geth, keystone 등의 폴더가 생성되었을 것이다.
이제는 Geth를 실행해 보자.

d:\Geth\geth –networkid 1185 –nodiscover –maxpeers 0 –datadir d:\Geth console

각 명령어는 아래와 같은 의미를 가진다.
–networkid 1185 : 네트워크를 식별할 수 있는 id의 생성으로, 0~3을 제외한 임의의 정수를 사용한다. 여기서는 1185라는 숫자를 썼다. 각자 다른 숫자를 이용해 테스트를 해보자.
–nodiscover : 생성자의 노드를 다른 노드에서 검색할 수 없게 하는 옵션이다.
–maxpeers 0 : 생성자의 노드에 연결할 수 있는 노드의 수다. 0을 지정하면 다른 노드와 연결하지 않는다.
–datadir d:\Geth : 데이터 폴더를 지정하는 것으로, 지정하지 않으면 기본 폴더를 사용한다.
–console : 실행 후 자바스크립트 콘솔을 기동한다.

명령어를 입력한 후 > 표시의 프롬프트가 떴다면 정상적으로 실행된 것이다.
이제는 처음으로 계정(account)를 만들어 보자.
계정에는 EOA(Externally Owned Account)와 Contract 두가지 종류가 존재한다. EOA는 일반 계정으로 Ether를 송금하거나 계약을 실행할 수 있다. Contract 계정은 계약을 블록체인에 배포할 때 만들어지는 계정으로 블록체인에 존재하며, 다른 계정으로 메시지를 수신해 코드를 실행할 수 있다.
EOA 계정을 만들 때는 personal.newAccount(“비밀번호”) 명령어를 사용한다.

> personal.newAccount(“pw0001”)

위의 명령어를 넣어보면 계정의 주소가 만들어지며, 해당 이더리움의 노드 주소가 된다.
newAccount(“비밀번호”) 명령어에 비밀번호를 넣게 되는데, 잊어버릴 경우 복구가 되지 않으므로, 반드시 기억하고 있어야 한다.
personal.newAccount(“pw0002”) 명령어(비밀번호는 편의상 pw0002로 넣었다)로 하나의 계정을 또 생성해보자. 그리고, 각 계정의 주소를 확인하고 싶을 때는 eth.accounts 명령을 넣으면 된다.
하나씩 주소를 보고 싶을 때는 eth.accounts[0] 등의 시리얼 순번을 넣어주면 볼 수 있다.

exit 명령어로 콘솔을 빠져나올 수 있으며, Geth 프로세스도 함께 종료된다.
이제 D:\Geth 폴더로 이동하여 확인해보면 keystore 폴더 안에 2개의 파일이 생성된 것을 볼 수 있을 것이다.

이번 시간에는 여기까지 Geth 설치와 계정 생성이라는 초기 단계에 대해 알아보았다. 각자 시스템에 맞게 윈도우 뿐 아니라 리눅스 등에서도 실행해 본다면 실전에 더욱 편리할 수 있을 것이다.
다음 시간에는 채굴과 송금, 그리고 수수료에 대한 내용을 다룰 예정이다.

이더리움 개발 2편 바로가기
채굴과 송금 : https://crosswave.net/?p=2785

 

1 COMMENT