[BlockChain]이더리움 블록체인_Geth설치하기
이번포스팅은 Geth를 설치하는 과정에 대해 포스팅하겠습니다. 아래와 같이 따라하면 크게 어렵지 않을 것입니다.
<개발환경>개발환경>
윈도우 VMware를 이용한 OS 환경 — Linux 우분투 16.04 (기본적으로는 OS자체가 Linux이면 좋지만 대다수가 윈도우이기 때문에 Vmware를 사용한다)
Geth
Go Ethereum의 줄임말로 JSON-RPC를 이용하여 이더리움 콘솔에 접속할 수 있는 환경을 말합니다. 기본적으로 Geth를 이용하여 이더리움의 계좌정보 및 이더리움의 상태를 알 수 있죠. 이더리움의 콘솔환경에서 여러 명령어로 확인하고 싶다면 Geth로 확인하면 됩니다.
Geth 다운로드 및 Git 다운로드
$ sudo apt-get install -y build-essentail libgmp3-dev golang git tree
$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ git checkout refs/tags/v1.5.5
$ make geth
여기까지 하면 geth를 설치가 완료 됩니다.
- 프라이빗 네트워크(로컬) genesis.json 파일 생성
$ mkdir ~/test_blockchain
$ cd ~/test_blockchain
$ vi genesis.json
프라이빗 네트워크에서 genesis 파일은 직접 vi로 열어서 작성해야 합니다. 이부분이 Genesis json파일을 제공하지 않는 부분이 아쉬웠습니다. (roptsen, rinkeby 테스트 넷, 메인넷은 생성할 필요 없음)
- genesis.json
{
“nonce”: “0x0000000000000042”,
“timestamp”: “0x0”,
“parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x0”,
“gasLimit”: “0x80000000”,
“difficulty”: “0x400”,
“mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”: “0x0000000000000000000000000000000000000000”,
“alloc”: {}
}
기본적으로 genesis.json파일은 블록체인에 들어가는 기본적인 값들을 지정해줘야합니다.
제네시스블록 초기화
geth — datadir /home/minjae/test_blockchain init /home/minjae/test_blockchain/genesis.json
-
genesis init 및 tree
-
이더리움 콘솔 접속
geth — networkid 4649 — nodiscover — maxpeers 0 — datadir /home/minjae/test_blockchain/ console 2 » /home/minjae/test_blockchain/geth.log
-
networkid : 네트워크를 식별할 수 있는 Id
-
nodiscover : 생성자의 노도를 다른 노드에서 검색할 수 없게 하는 옵션
-
maxpeers : 생성자의 노드에 연결할 수 있는 노드의 수를 지정한다.
-
datadir : 데이터 디렉터리를 지정한다.
-
console : 대화형 자바스크립트를 지정.
geth에 사용하는 기본적인 개발 명령어
personal.newAccount(“계정의 패스워드”);
return -> 계좌주소 / 이더리움 계좌를 새로 생성합니다.
eth.accounts
return -> 이더의 모든 계좌주소배열 / 현재 이더리움 블록체인에 생성된 모든 계좌를 보여줍니다.
eth.accounts[0]…accounts[n]
return -> n번째 계좌주소 / 이더리움의 n번째 계좌주소를 보여줍니다.
eth.getBalance(계좌주소 or eth.accounts[0])
return -> 이더리움 / 해당 계좌의 이더리움의 잔액을 보여줍니다.
miner.start(1)
return -> true,false / 채굴을 시작. 블록생성
miner.stop(1)
return -> true,false / 채굴 중지
eth.blockNumber / eth.hashrate
return -> 현재 이더리움의 블록넘버 및 이더리움 해쉬 속도(CPU성능 및 메모리에 따라 해쉬속도는 다름)
eth.getTransaction(해쉬값), eth.sendTransaction(from, to, value), eth.pendingTransaction
트랜잭션 전송, 정보, 펜딩된정보를 얻는 명령어
ps. 그 외 나머지 명령어들은 web3 명령어와 유사하므로 web3 Documentation를 참고하시면 됩니다.