웹 개발 메모장

[Geth] 계정 생성하고 채굴 및 송금하기 본문

옛날../블록체인 어플리케이션 개발 실전 입문

[Geth] 계정 생성하고 채굴 및 송금하기

도로롱주 2018. 10. 21. 15:39







Go-Ethereum 계정 생성 > 채굴 > 송금




Geth 콘솔에서 명령을 통해 계정을 생성하기


personal.newAccount("패스워드") 명령으로 계정을 만들 수 있고

만들어진 계정은 eth.accounts 명령으로 확인할 수 있습니다.



계정 전체가 eth.accounts 배열에 들어있고 각각의 계정은 eth.account[0], eth.account[1] 과 같이 개별로 접근할 수 있습니다.





채굴하기


계정들의 잔액을 eth.getBalance(계정) 명령으로 확인할 수 있습니다.



코인을 획득하기 위해서 miner.start(스레드 개수) 명령을 통해 채굴을 시작하고 miner.stop() 명령으로 채굴을 그만둘 수 있습니다.


> miner.start(1)

null

> miner.stop()

null


채굴을 하게되면 블록들이 생성되고 보상으로 가상화폐인 Ether를 획득할 수 있습니다.


보상을 받을 계정은 eth.coinbase 로 확인할 수 있고 miner.setEtherbase(계정)을 통해 변경할 수 있습니다.




채굴을 하고난 후 잔액을 확인해 보면 코인이 생겨있는 것을 확인할 수 있습니다.





송금하기


송금을 하기 위해서는 personal.unlockAccount(송금할 계정) 명령으로 unlock을 먼저 해주어야 합니다.


(Passphrase: 여기에 계정 생성할 때 만든 패스워드를 입력합니다.)


계정1에서 계정210 Ether를 송금하는 명령은 아래와 같습니다.


> eth.sendTransaction( { from:계정1, to:계정2, value:web3.toWei(10, "ether") } );

"0xf0c9d...."

( "0xf0c9d....": 송금을 처리하는 트랜잭션의 ID)



계정들의 잔액을 조회해 보니 송금이 아직 이루어지지 않았습니다.




eth.getTransaction(트랜잭션ID) 명령으로 위의 트랜젝션 상태를 확인해 볼 수 있습니다.



blocknumbernull로 나올텐데 블록이 없어서 blocknumber를 할당받을 수 없는 상태이기 때문입니다.



채굴을 통해 블록을 생성해서 그 블록을 할당받아야 송금이 이루어질 수 있습니다.


miner.start(1) 명령을 통해 채굴을 시작하고 시간이 지나 다시 트랜잭션 상태를 확인하면 blocknumber에 값이 들어있는 것을 확인할 수 있습니다.



송금에 관한 트랜잭션이 성공적으로 처리된 것을 잔액 확인을 통해 확인할 수 있습니다.







수수료 GAS


위의 송금 예제에서 받은 사람정확하게 10 Ether를 받았지만 보낸사람10 Ether 보다 조금 더 큰 값이 빠져나갔습니다.


계정간 송금이 이루어지면 송금자가스라고 부르는 수수료를 지불하게 되기 때문입니다.


수수료를 받게되는 대상은 누가될까요?


송금이 이루어지기 위해서는 송금 내역을 저장하는 블록이 필요하고 그 블록은 채굴을 통해 생성됩니다.


따라서 해당 블록의 채굴자수수료를 획득하게 되는 구조입니다.


eth.coinbase 를 통해 채굴자 계정을 확인하고 송금이 발생한 뒤 해당 계정의 잔액을 조회하면 확인할 수 있습니다.




Comments