채굴
이더리움에서 채굴보상은 coinbase 계정으로 들어가게 되며 coinbase 계정을 따로 지정해주지 않을 시 0번째 계정이 coinbase 계정으로 지정됩니다.
miner.start(스레드의 수)를 명령어로 두고 실행을 하게 되면 채굴을 하게 됩니다.
miner.stop()은 채굴을 멈춥니다.
miner.start(1)로 하여 하나의 스레드로 채굴을 해보겠습니다.
우선 geth console을 실행합니다.
geth --rpc --rpcport "8485" --rpccorsdomain "*" --datadir . --port "30303" --nodiscover --maxpeers 0 --rpcapi "eth,net,web3" --networkid 8585 --nousb console 2>> ~/eth/geth.log
이더리움의 miner.start()는 비트코인의 generate와 달리 genesis.json에서 설정한 값과 해당되는 난이도로 채굴을 진행합니다.
처음에 miner.start()를 하고 다른 리눅스에서 /home/ethereum/eth/geth.log 파일 로그를 확인해보면 아래와 같이 로그가 찍히고 있습니다.
해당 로그에서 percentage=100까지 채워져야 채굴이 가능합니다.
percentage=100까지 채워졌다면 miner.stop()을 한 다음 다시 miner.start()를 진행하고 로그를 확인하면 아래처럼 채굴을 진행합니다.
로그를 보니 7번 블록까지 채굴되었습니다. geth console에서 명령어를 통해 확인해보겠습니다.
송금
송금을 하기 위해서는 트랜잭션에 서명을 해야 합니다.
트랜잭션에 서명을 하기 위해서는 비밀키가 필요하고 미리 생성해둔 keystore 파일로부터 비밀키를 알아내기 위해서는 계정생성 당시 설정한 암호를 입력하여 계정의 잠금을 풀어야 합니다.
* geth console에서 personal.newAccount("luna")로 만들었다면 암호는 luna입니다.
따라서 luna 계정의 비밀키로 서명하기 위해 unlock을 해야합니다.
geth console에 접근할 때 아래와 같이 명령어를 사용하면 됩니다.
geth --rpc --rpcport "8485" --rpccorsdomain "*" --datadir . --port "30303" --nodiscover --maxpeers 0 --rpcapi "eth,net,web3" --networkid 8585 --nousb --allow-insecure-unlock --unlock 0,1,2 console 2>> ~/eth/geth.log
현재는 private 네트워크이므로 allow insecure unlock을 옵션으로 부여한 후 unlock 0,1,2를 하여 0번, 1번, 2번 계정을 unlock시켜줍니다.
필자는 0번 계정(luna), 1번 계정(pine), 2번 계정(kim) 이렇게 총 3개를 갖고 있어서 3개를 unlock 시켰습니다.
geth console에 접속했으니 luna, pine, kim 변수에 각 계정을 대입해줍니다.
현재 각 계정별 잔액을 알아봅시다.
kim 계정에서 pine 계정으로 0.5 이더(500000000000000000 wei)만 송금해보겠습니다.
eth.sendTransaction 명령어를 통해 해시된 TX 값을 얻어냈습니다.
miner.start()를 통한 블록을 새로 만들기 전까지는 tx는 pending 상태이므로 eth.pendingTransactions 명령어를 통해 펜딩을 확인할 수 있습니다.
현재 블록 넘버는 26입니다.
이제 miner.start(), miner.stop()으로 블록 1개를 추가해보겠습니다.
블록 1개를 추가했으니 kim 계정에서 pine 계정으로 보낸 tx는 컨펌이 되었는지 확인해보겠습니다.
각 계정별 잔액을 확인해보겠습니다.
코인베이스 계정인 luna 계정이 채굴을 했으므로 채굴 보상 + kim의 송금수수료까지 받은 것을 확인할 수 있습니다.
pine 계정은 kim으로부터 0.5 이더를 받은 것을 확인할 수 있으며 kim은 0.5 이더 + 수수료(42000 wei)까지 차감된 것을 확인할 수 있습니다.
참고
https://www.youtube.com/watch?v=mV7YCZeShaU&list=PLZwFtgKc35I_ROUsSev0xcy5poVH486CV&index=14