무지개곰
article thumbnail
반응형

geth를 설치하였다면 geth를 이용하여 network에 연결을 하거나 private network를 생성할 수 있습니다. geth에서 사용하는 기본 명령어와 명령어를 통한 network 작업등을 알아보도록 하겠습니다.

 

geth를 설치하지 않았다면 아래의 글에 설치방법이 나와있습니다.

 

[geth] geth란 무엇인가? (geth 설치)

오픈 소스 프로젝트인 Geth는 이더리움 생태계에서 중요한 역할을 수행하며 사용자들이 이더리움 네트워크와 상호 작용할 수 있도록 합니다. 이번 글에서 Geth에 대하여 이론적인 설명을 하고 그

rainbow96bear.tistory.com

목차

geth 시작 시 옵션

genesis 블록 설정

private 네트워크 생성


geth 시작 시 옵션

CLI 창에서 geth를 실행시킬 때 geth명령어와 함께 아래와 같이 여러 가지 옵션을 추가하여 시작할 수 있습니다.

geth --networkid {네트워크 ID} --datadir . --http --http.port {포트 주소} --http.api "admin,eth,miner,net,txpool,personal,web3" --allow-insecure-unlock --nodiscover --snapshot=false console

위에서 사용되는 옵션들이 제일 기본적인 옵션입니다. 위에 나와있는 옵션들을 설명하겠습니다.

--networkid : 네트워크 ID 값으로 접속합니다.

--datadir : 제네시스 블록으로 생성한 프라이빗 네트워크 폴더를 지정합니다.

--http : http-rpc 서버를 활성화하기 위한 옵션입니다.

--http.port : 사용할 port 번호를 사용합니다.

--http.api : admin, eth, miner 등 http-rpc 인터페이스를 통해 제공되는 API를 설정합니다.

--allow-insecure-unlock : 비밀번호 없이 개인 키를 잠금해제하기 위한 옵션입니다. 보안에 취약할 수 있으므로 신중하게 사용해야 합니다. 

--nodiscover : 다른 클라이언트가 네트워크를 찾지 못하도록 설정합니다.

--snapshot=false : 스냅 샷 데이터베이스 모드를 비활성화합니다.

위의 옵션 이외에 몇 가지 알아두면 좋은 옵션은 아래와 같습니다.

attach : 로컬 노드에 접속하거나 특정 url에 접근할 수 있습니다. 

geth attach http://localhost:8080

--syncmode : 동기화 방법을 설정합니다.(light, fast, full 등)

--dev console : 개발자 네트워크를 식별합니다.

--identity : geth를 시작할 때 노드의 식별자를 설정합니다. 단순히 노드를 식별하는 메타데이터 역할을 합니다.

--rpc : 노드에서 JSON-RPC 인터페이스를 활성화합니다.

--rpcapi : 위의 --http.api처럼 제공되는 API를 설정합니다.

--maxpeers : 노드에서 서용하는 최대 피어 수를 설정합니다.

 

아래의 주소는 공식 사이트의 document사이트로 설명 이외의 명령어들이 나와있으므로 참고하시면 좋은 정보입니다.

 

Command-line Options | go-ethereum

A list of commands for Geth

geth.ethereum.org


genesis 블록 설정

private network를 만들기 위해서는 네트워크를 시작하는 block에 대한 정보가 필요합니다. 네트워크를 시작하는 block을 genesis block이라 하며 이런 genesis block에 어떠한 내용이 포함되어야 하는지 각 요소들이 어떤 의미인지 알아보도록 하겠습니다.

 

genesis block

{
  "config": {
    "chainId": 1234,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },

  "nonce": "0x0000000000000013",
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x8000000",
  "difficulty": "0x100",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {
    "0x0b220b02cbac64506f105a4bccb11cb63c1cd2e0": {
      "balance": "1000000000000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}

config

네트워크의 구성과 하드 포크 관련 설정을 정의합니다.

chainId 이더리움 네트워크를 식별하는 값으로 사용하고자 하는 네트워크 번호를 입력하면 됩니다.

homesteadBlock Homestead프로토콜 업그레이드를 적용하는데 필요한 블록 번호를 나타냅니다.

****Block(eip155Block, byzantiumBlock 등) : 각 프로토콜 업그레이드를 적용하는데 필요한 블록 번호를 나타냅니다.

clique : Proof of Authority 알고리즘을 사용하는 프라이빗 네트워크에서 사용됩니다.

period : 채굴자가 새 블록을 생성하는 데 걸리는 시간 간격을 나타냅니다.

epoch : 블록의 유효성을 확인하는 데 사용되는 블록 수를 나타냅니다.


difficulty : 채굴의 난의도를 정의합니다.

gas Limit : 가스 한도는 블록에서 수행할 수 있는 트랜잭션의 총 가스 양을 제한합니다.

alloc : genesis block에서 초기 계정을 할당할 수 있습니다. 좌측은 할당할 계정주소를 입력하고 우측에는 중괄호 안에 얼마만큼 할당할 것인지 balance의 값으로 wei단위로 입력합니다. 위의 예시는 10,000 이더와 12,000를 할당합니다.

timestamp : 블록의 생성 시간을 나타내는 값입니다. 주로 현재 시간으로 설정됩니다.

extradata : genesis block에 추가 데이터를 포함할 수 있습니다. 사용자 정의 데이터나 특정 네트워크 식별자 등을 포함할 수 있습니다.


private 네트워크 생성

genesis block 생성

cmd 창에서 아래와 같은 명령어를 작성합니다.

geth --datadir ./Rainbowbear/ init genesis.json

현재 cmd 위치에서 Rainbowbear 폴더 안의 genesis.json 정보로 블록이 생성됩니다. 만약 cmd에서 genesis.json 파일 위치로 이동하였다면 아래와 같이 작성하여도 됩니다.

geth --datadir . init genesis.json

private network 접근

위에서 설명한 옵션들을 통하여 네트워크에 접근합니다. 위의 genesis.json에서 설정한 chainId가 1234이므로 아래의 명령어로 네트워크에 접근합니다. 위의 경우와 마찬가지로 --datadir의 경우 genesis.json이 존재하는 폴더로 설정되어야 합니다.

geth --networkid 1234 --datadir . --http --http.port 8808 --http.api "admin,eth,miner,net,txpool,personal,web3" --allow-insecure-unlock --nodiscover --snapshot=false console

위의 방식으로 접근을 하거나 다른 cmd 창에서 attach를 이용하여 접근할 수 있습니다.

geth 실행 화면

geth를 실행하면 위와 같은 정보가 나오고 그중 url을 확인하면 \\.\pipe\geth.ipc라는 정보를 볼 수 있습니다. 따라서 아래와 같이 접근을 할 수도 있습니다.

geth attach ipc:\\.\pipe\geth.ipc

또는 network를 생성 시 설정한 port를 이용하여 접근할 수도 있습니다.

geth attach http://localhost:8880
반응형

'BlockChain > geth' 카테고리의 다른 글

[geth] RPC란 무엇인가?  (0) 2023.05.31
[geth] geth란 무엇인가? (geth 설치)  (0) 2023.05.25
profile

무지개곰

@무지개곰

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!