반응형


[Ethereum] - geth 명령어 및 채굴 / 이더리움 / 블록체인 / Ethereum / Blockchain / 채굴 / geth / 서버 구축







안녕하세요. 저번 포스팅에 이어 geth 명령어와 채굴에 대해 포스팅 하겠습니다.

geth 명령어는 매우 많기에 주로 쓰이는 것만 제가 간단히 소개해드리고, 필요한 부분은 공식 사이트나 github에 정리가 되어있기에 해당 사이트에 대해 링크를 올려두겠습니다.




1. geth 명령어

1-1. 자주 쓰이는 명령어

1-2. 공식 사이트


2. 채굴

2-1. 채굴이란?

2-2. 채굴






1. geth 명령어

1-1. 자주 쓰이는 명령어



여기서 자주 쓰이는 명령어는 제가 실습을 통해 자주 사용되거나 필요로 느끼는 부분들로 정리하였으며, 기타 타 블로그나 사이트에서도 주로 언급되는 명령어들로 정리하였습니다. 

(개인적인 주관이 들어간 부분이니 필요 부분만 챙겨가시고, 부족한 부분은 공식 사이트를 통해 얻어 가시길 바랍니다.)



현재 서버가 작동 중이며, 서버의 명령어를 입력하는 상태임을 알려드립니다.




personal.newAccount("이름") : 계좌 생성.



eth.accounts : 현재 등록된 계좌 확인.



첫 두개는 저번 포스팅 때 생성한 계좌이고, 세번째 계좌는 방금 전 생성된 계좌입니다.



miner.setEtherbase(personal.listAccounts[0]) : 채굴 시 보상 받는 계정.

(coinbase라고도 함)



첫 계좌에 정상적으로 실행된 것을 확인할 수 있습니다.




eth.getBalance(eth.accounts[0]) : 계정 잔액 조회.

(계좌가 순서대로 저장되어 있기에 [n]에 해당하는 n번째 계좌를 입력하시면 됩니다.)



저번 포스팅때 이 정도의 wei를 입금해둔 상태이기에 초기에 이 정도의 잔액이 존재합니다.

조회 시 그림과 같이 wei 단위로 표시되고 있는데 이를 ether 단위로 변환하여 출력할 수 있습니다.


web3.fromWei(eth.getBalance(eth.coinbase), "ether")

(coinbase : 현재 지정된 보상을 받는 계정. 채굴 시 보상 받는 계정입니다.)





eth.blockNumber : 생성된 블록 수 조회.




eth.getBlock(0) : 0번째 블록의 정보 출력.









personal.listWallets[0].status  : 계정의 상태를 출력. Locked or Unlocked.




계정의 Locked 해제 방법에는 여러개가 있는데 그 중 3가지 정도만 알려드리겠습니다.


web3.personal.unlockAccount(eth.coinbase)


web3.personal.unlockAccount(eth.coinbase, "계정명") 


personal.unlockAccount("주소")




다음과 같이 계정의 Locked가 해제되었습니다.



계정의 상태는 트랜젝션을 위해 필요합니다.

트랜젝션은 계좌 간의 거래인데 이때 Locked 상태이면 트랜젝션이 발생할 수 없기 때문에 해제를 우선적으로 해야 합니다.




eth.pendingTransactions : 처리해야 할 트랜젝션 목록.




현재 아무런 트랜젝션이 없기 때문에 공백으로 나타납니다.



eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:web3.toWei(2,'ether'),data:web3.toHex("send messge")})

: 트랜젝션 명렁어. (from : 누가, to : 누구에게, value : 전송할 금액, data : 전송할 메세지)


현재 명령어는 첫번째 계좌가 두번째 계좌에게 2이더와 "send message"라는 데이터를 같이 전송하겠다 라는 명령어입니다.





트랜젝션 발생으로 트랜젝션에 해당하는 해쉬가 생성됩니다.

이 해쉬에 대한 정보는 다음과 같이 트랜젝션 목록에서 확인이 가능합니다.

(eth.getTransaction("해쉬")

input = data, value = 전송할 금액을 확인할 수 있습니다.




자주 쓰이는 명령어는 이 정도로 정리를 마치고, 공식 사이트에 대해 알려드리겠습니다.

(채굴에 관한 부분은 아래에 이어서 포스팅됩니다.)






2-2. 공식 사이트




https://github.com/ethereum/wiki/wiki/JavaScript-API



해당 사이트는 github에 wiki에 명령어에 대한 대부분의 설명이 기입되어 있습니다.

장점이 원시 소스 코드도 같이 확인을 할 수 있어 쉽게 이해할 수 있습니다.

(소스 코드이해는 전공자들에 한해서 입니다. ㅠㅠ)





https://web3js.readthedocs.io/en/1.0/web3-eth.html




해당 사이트는 web3js와 연동하여 geth에 관련된 명령어들이 정리되어 있습니다.

geth자체서버에서 구동하는데에 관련된 자료와 웹 서버의 코드에서 실행 가능하도록 명령어가 구성되어 있습니다.








2. 채굴

2-1. 채굴이란?



채굴 혹은 마이닝이라 불리는데 블록 체인 서버 내의 블록이 계속해서 생성되는데, 이 블록에 해당하는 해시를 찾아내는 작업을 채굴이라 합니다. 이에 대한 보상으로 코인을 지급하며 채굴의 난이도가 높아지거나 블록의 수가 많아질수록 블록에 대한 해시를 찾아내는데 많은 시간이 걸리기에 코인의 가치는 상승하게 됩니다.



ps.

블록에 대한 해시를 찾아낼 경우 해당 블록에 대한 정보 즉, 트랜젝션을 알 수 있습니다. 

따라서 51% 공격이라 하여 모든 블록의 51%이상의 해시를 얻어내면 공격이 가능하다는 공격 기법이 있습니다.


코인이 큰 가치가 있다 보니 채굴기에 대한 영향력도 커졌습니다.

이로 인해 많은 채굴기가 발생하였고, 많은 사람들이 채굴에 뛰어들어 큰 파장을 일으키기도 했습니다.

올해 초부터 망해가고 있지만.....






2-2. 채굴


geth 서버에서 채굴을 해보도록 합시다.


miner.start(n) : 채굴 시작. n은 쓰레드 개수를 의미합니다.



miner.stop() : 채굴 종료.


eth.mining : 채굴 여부 확인. true or false.







이상으로 geth 명령어 및 채굴에 대한 포스팅은 끝이 났습니다.

다음 포스팅으로는 안드로이드를 이용하여 geth 서버에 접속한 후 트랜젝션을 발생 시켜 보도록 하겠습니다.

즉, 모바일을 통해 생성된 정보들이 블록 체인에 저장되어 좀 더 안정된 정보를 가질 수 있다고 생각합니다.



전공자 입장에서도 생소하고 어려운 부분들이 많습니다.

천천히 따라오시면 좋은 성과가 있을 거라 생각합니다.


궁금하거나 이상한 부분이 있으면 댓글 달아주세요!!









반응형

+ Recent posts