본문으로 바로가기

블록체인 앱 개발 기초(채굴/송금)

category 블록체인 2018. 8. 16. 20:29

채굴/송금

 

이번에는 생성된 제네시스 블록으로 채굴을 하고 송금을 해보도록 하겠습니다.

우선 채굴을 해야합니다. 전 시간에 했던 제니시스블록 생성 후  환경에서 시작해주시면 되겠습니다.

miner.start(스레드수) 명령어로 채굴을 시작합니다.

eth.mining은 채굴 상태를 확인하는 명령어입니다.

우선 채굴을 시작해보도록 하겠습니다.

 

 

처음에 null이 나오는 것은 정상입니다.

 

eth.mining으로 현재 true가 나와서 진행중이라는 겁니다.

 

그렇다면 잔액이 들어오는지 한번 보죠. 코인베이스 계정으로 잔액을 확인해봅니다. ( 코인베이스 계정: 돈이 들어오는 계정)

 

 

자!! eth.getBalance(eth.accounts[0])으로 잔액을 확인해보면 들어온걸 알 수 있습니다. 채굴 성공입니다.

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

 

이 들어온 잔액으로 송금을 해보도록 하겠습니다. 송금을 하기위해서는 우선 계정잠금을 해제를 해야합니다.

이부분 중요합니다.

원래 personal.unlockAccount(eth.accounts[0])으로 계정잠금을 해제하는데 번거롭습니다.

따라서 애초에 초기설정으로 잠금을 해체하고 진행하는게 훨 낫습니다.

우선 ctrl+D버튼으로 geth를 나갑니다.

계정 비밀번호들을 password.txt에 아래 형식과 같이 적습니다.

저는 세 계정 모두 1234여서 저렇게 적었답니다.

이파일을 private_net파일에 넣습니다.

 

접속을 위해 이 명령어를 칩니다. 원래 명령어에서 뒤에 추가만 해주시면 됩니다.빨간색 글씨가 추가된 부분입니다.

--unlock 뒤에는 세 계정 주소를, --password에는 password.txt있는 경로를!!

 

 

C:\Users\USER>geth --networkid "10" --nodiscover --datadir C:\Users\USER\pri_ljc --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" --rpcapi "eth, net, web3, personal" --targetgaslimit "20000000" console 2>> C:\Users\USER\pri_ljc\error.log --unlock 0xaeaa3c0bf70ea01b47ca897c10711f6f1ad28cf8, 0x9f6a1c1196475355d067a57fa21c2d83b05647e7, 0x1b4c9f650b9a2ea3848b8066588401e7c399117f --password C:\Users\USER\pri_ljc\password.txt

이 명령어를 치고 들어가시면 처음에 비밀번호를 칩니다.

그러면 접속이 됩니다.

이제 접속이 돼셨다면 송금이 가능하시게 된겁니다.

송금을 해보도록 하죠!!

 

우선 fromWei명령어로 잔액을 받을 계정의 잔액확인을 합니다.

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[2],value:web3.toWei(5,"ether")})

위 명령어를 쳐서 세 번째 계정에 송금합니다.!!

성공하신 다면 16진수 해시값이 나옵니다. 이것은 매번 다르니 신경안쓰셔두 됩니다.

그렇다면 거래가 성사 됐는지 한번 봐야겠죠 ??

 

eth.getTransaction(위의 해시값)으로 확인해보겠습니다.

이런 식으로 나옵니다.

from에는 첫 번째 계정 to에는 세 번째 계정일겁니다.

blockNumber가 null인 것은 아직 블록에 저장되지 않았다는 뜻입니다.

블록에 저장이 돼야 거래가 완료되는 겁니다.

따라서 아직 송금이 완료된 상태는 아닌겁니다.

블록에 저장하기위해서는 채굴을 다시 시작하고 시간을 좀 둡니다.

아래와 같이 miner.start(1)로 채굴 후 10초뒤에 eth.getTranscation명령어로 확인해봅니다. blockNUmber가 null이 아니지요? 블록에 저장된겁니다.

마지막으로 web3.fromWei 명령어로 accounts[2]의 계정의 잔액을 보면 들어온 것을 알 수 있습니다.!!!

이것으로 송금을 완료했씁니다 감사합니다.