#2. ethereum 기초 - geth/node/console/계정 unlock

sjee·2021년 8월 11일
0

ethereum

목록 보기
2/3

geth console 띄우기 - 노드 실행


여기서는 터미널이 2개가 필요하다! 한개는 geth 를 실행 시켜야 하고, 한개는 attach 로 geth에 붙어야한다.
물론 한 터미널로 할 수있지만, 난 두 개로 해서 나누는게 편해서 해당 글에서는 두개의 터미널로 나누어서 진행할 것이다.

terminal 1

예시 1 - 옵션을 하나도 안주는 기본적인 방법

geth -nodiscover --nousb --datadir .

예시 2

geth --http --http.addr "localhost" --http.port "8545" --http.corsdomain "*" --http.api "eth,net,web3,personal" --datadir ~/eth --nodiscover --networkid 10 --allow-insecure-unlock --nousb

예시 3

geth --networkid 4386 --mine --miner.threads 2 --datadir "./" --nodiscover --rpc --rpcport "8545" --rpccorsdomain "*" --nat "any" --rpcapi eth,web3,personal,net --allow-insecure-unlock

  • 위와 아래에서 --rpc == --http, --rpc,api == --http.api , --rpcport == --http.port 으로 같은 역할을 한다고 생각하면 된다.
  • 현재까지는 rpc 도 지원하고 있지만 공식 문서에는 http 위주로 돼 있고 http 로 바뀔 수도 있다.
  • rpc나 http의 역할 : 외부 접근을 허용하면 remix에서 web3 provider로 연결하여 deploy 할수 있다.

위와 같이 geth 실행에는 여러 옵션이 있으며 원하는 옵션을 넣어 진행하면 된다!


--miner.threads : 몇개의 스레드에서 채굴할것인지 숫자를 정하는 파라미터 → 컴퓨터 코어에 맞게 설정
--nousb : usb 형태로 된 지갑을 쓰지 않을 때 설정하는 값

--datadir : 이더리움 정보를 저장할 위치를 지정

--nodiscover : 같은 제네시스 블록과 ID 에 있는 블록에 대한 연결을 방지해주는 명령어
--mine : 으로 바로 채굴 시작하라는 명령어
--rpcapi :rpc의 end point 에서 어떤 api를 command로 사용하기 위해 파라미터를 넣어줌 → 나중에 노드에서 언급한 api 들을 라이브러리처럼 사용할 수있음




terminal 2

geth attach ipc:/ geth 폴더가 있는 경로 /geth.ipc

작동중인 geth 에 붙어 콘솔을 연다.
이렇게 나오면 성공한 것!
앞으로 계정을 다루고 node 에 내리는 명령은 이 콘솔에서 진행한다.







eth API

eth.coinbase 가 keystore 에 저장된 첫번째 게정 주소와 같은지 확인한다.

-> 이더리움에서 채굴보상은 coinbase 로 들어가고, 따로 지정해주지 않으면 0 번째 계정이 코인베이스 계정으로 지정된다.

coinbase 는 추후 디앱 개발에서 중요한 것으로 개념을 잘 알아 두어야 한다!!



eth.accounts

노드에 등록된 모든 계정 확인

eth.getBalance(계정)

계정에 들어간 ehter 양 확인! 금액은 wei 로 나온다.

web3.fromWei(wei 값, 'ether')

wei 를 ether 로 변환해서 볼 수 있다.

miner.stop( )

채굴 멈추기

miner.start(thread 값)

안에 값은 쓰레드값임 / 클수록 채굴이 빠르지만 파워를 많이 잡는다.
geth 할때 --mine 옵션을 안넣어준 경우 콘솔에서 이를 통해 채굴을 시작 할 수있다.





유의사항

1. 계정 unlock

  • 계정의 private key(개인키)를 열어서 트랜잭션에 서명할 수 있게 하는 것이다.
  • default 로 private key 는 잠겨있고, 그 계정의 비밀번호도 알아야 unlock 가능

    personal.unlockAccount(eth.accounts[0], "비밀번호")

  • coinbase 계정은 열어두어야 트랜잭션을 생성할 수 있으므로 unlock 을 해야 위의 실습을 포함한 이더 거래를 진행 할 수있다.
  • 비밀번호는 이전 게시글 계정 생성할때 등록했던 것을 입력한다.
  • 세번째 인자는 optional로, 일시적으로 열어둘때 사용하며 unlock 할 초가 들어간다.
profile
블록체인/ 보안 / 해킹

1개의 댓글

comment-user-thumbnail
2022년 9월 8일

eth.coinbase 치니까
Error: etherbase must be explicitly specified
at web3.js:6365:9(45)
at get (web3.js:6265:66(12))
at :1:1(1)
에러가 나와용

답글 달기