don't stop believing

채굴하기 (on Local TestNet) 본문

Ethereum

채굴하기 (on Local TestNet)

Tongchun 2018. 8. 24. 15:27

Geth를 설치했다면 Ether를 구하기 위해 채굴해 보겠습니다.

채굴은 로컬 테스트넷에서 합니다.


먼저 geth를 실행합니다.

$ geth --networkid 45 --nodiscover --maxpeers 0 --datadir /home/ngle/data_testnet console 2>> /home/ngle/data_testnet/geth.log
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.14-stable-316fc7ec/linux-amd64/go1.10.1
coinbase: 0x26a43bc3dcef48f91b77df47dd353d9f34c163c4
at block: 0 (Thu, 01 Jan 1970 09:00:00 KST)
 datadir: /home/ngle/data_testnet
 modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> 


geth console에서 계정을 확인해 보겠습니다.

> eth.accounts
["0x26a43bc3dcef48f91b77df47dd353d9f34c163c4", "0x6a6ea6d5128554638b138a5331529989fcde4271", "0x7208e3ca69793ec72d6b08a3497edf8e447c5304"]

3 개의 계정이 있습니다.

이제 Ether를 얻기위해 채굴을 해보겠습니다. 이더리움을 채굴해 보상받을 계정을 Etherbase라고 합니다. Etherbase는 기본적으로 eth.account[0]이 설정됩니다.

eth.coinbase 명령으로 Etherbase를 확인할 수 있습니다.

> eth.coinbase
"0x26a43bc3dcef48f91b77df47dd353d9f34c163c4"

Etherbase는 miner.setEtherbase 명령으로 변경할 수 있습니다.

> miner.setEtherbase(eth.accounts[1])
true
> eth.coinbase
"0x6a6ea6d5128554638b138a5331529989fcde4271"

다시 eth.accounts[0]으로 변경해 보겠습니다.

> miner.setEtherbase(eth.accounts[0])
true
> eth.coinbase
"0x26a43bc3dcef48f91b77df47dd353d9f34c163c4"


Ether 잔고 확인인 getBalance 명령으로 확인할 수 있습니다. 인수로는 계정의 주소를 전달합니다.

> eth.getBalance(eth.accounts[0])
0
> eth.getBalance(eth.accounts[1])
0
> eth.getBalance(eth.accounts[2])
0


블록체인의 블록 수도 확인해 보겠습니다.

블록 수는 eth.blockNumber 명령으로 확인할 수 있습니다.

> eth.blockNumber
0


확인과 준비가 되었다면 이제 채굴을 하겠습니다.

miner.start(thread_num) 라는 명령으로 개시합니다. thread_num은 채굴할 때 사용할 thread 수입니다. 

thread 수를 1로 하고 채굴을 수행해 보겠습니다.

> miner.start(1)
null

현재 버전에서는 minier.start()명령을 하면 true/false가 아닌 null이 리턴되고 있습니다.


채굴되고 있는지는 eth.mining 명령으로 확인할 수 있습니다.

> eth.mining
true

채굴은 되고 있네요.


eth.hashrate 명령으로 해시 속도를 확인할 수 있습니다.

> eth.hashrate
0

해시 속도는 채굴하는 데 사용하는 연산력을 나타내는 값으로 단위는 hash/s(초) 입니다.

현재 0으로 리턴되고 있습니다. mining이 되고있는 상태에서 정상적인 값이라면 1 이상이 나와야 합니다.


예를 들어 172022 hash/s라면 1초당 172,022번 해시 값 연산이 가능하다는 뜻입니다.


blockNumber도 확인해 보겠습니다.

> eth.blockNumber
89

block은 증가하고 있습니다.


이제 miner.stop() 명령으로 채굴을 중지합니다.

그리고 eth.mining, eth.hashrate, eth.blockNumber로 상태를 확인해 봅시다.

> miner.stop()
true
> eth.mining
false
> eth.hashrate
0
> eth.blockNumber
121

채굴 보상을 받는 계정인 Etherbase의 잔고를 확인해 봅니다.

> eth.getBalance(eth.coinbase)
605000000000000000000
> eth.getBalance(eth.accounts[0])
605000000000000000000

현재 eth.coinbase는 eth.accounts[0]로 되어있으며 동일한 잔고를 확인할 수 있습니다.

getBalance로 확인한 잔고는 wei(웨이)입니다. 

1 Ether는 10^18 wei 입니다. (1,000,000,000,000,000,000 wei)

wei를 Ether로 변환해서 확인해 봅시다.

> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")
605

현재 채굴로 받을 수 있는 보상은 1블록에 5 Ether 입니다.


여기까지 로컬 테스트넷에서 Ether 채굴이었습니다.


Comments