BlockChain/Geth설치 & 사설망 네트워크 구축

2. Geth 메인네트워크, 테스트네트워크 구축하기

seongduck 2022. 8. 14. 03:35

Geth 메인 네트워크란?

  • 메인 네트워크는 발생하는 거래가 모두 기록이 되고 누구에게나 공유되는 환경이다.
  • 하지만 주의할 점은 사설망이나 테스트네트워크와 달리 Ether가 유통되기 때문에 잘못하면 화폐가 손실될 수 있다.
  • 데이터나 코드를 올리는데 화폐(gas)가 필요하다.
  • 완전히 기술을 습득하고 메인 네트워크를 써야한다. 물론 암호화폐 거래소를 통해 거래할 수 있다.

1. 메인 네트워크

접속 및 동기화 <파이썬>

  • 동기화가 먼저 필요하다.
  • 메인 네트워크의 블록체인 규모가 커지고 있어 동기화하려면 시간이 꽤 걸릴 수 있다.
  • 동기화 방식은 3가지 방식이 있는데 full, light, fast방식이 있다.
  • full node를 선택하면 동기화에 cpu와 메모리를 상당히 소모해서 컴퓨터를 사용하려면 매우 불편하다.
  • 메인 네트워크는 130gb를 넘고, 테스트 네트워크는 그보다 적지만 수십 GB를 내려 받아야 한다.
  • light node는 헤더 정보만 동기화할 수 있다. 모바일 폰에서 적합하다.

 

>> geth —syncmode fast —cache=1024
  • 메모리 cache는 16MB단위로 증가할 수 있고, RAM크기에 따라 설정할 수 있다.
  • 따로 data directory를 명시하지 않으면, 디렉토리가 생성되고 keystore, chaindata 등의 관련 데이터가 생성된다.
  • 생성되는 디렉토리는 운영체제 별로 다르다.

 

  • 중간(14번 째줄 config = )에 ChainID : 1이다
  • 1번은 메인 네트워크이기 때문에 이렇게 1번이 나와야 정상적으로 잘 된 것이다.

 

>> geth —syncmode fast —cache=1024 console
#빠르게 동기화 하는 syncmode fast
#메모리도 제한할 수 있다. 단말형태로 컨솔을 줄때 console을 써준다.
  • 콘솔을 사용하여 설정해보겠다.
  • console의 경우 맨 아래 ">" 라고 프롬포트가 생긴다.
  • 로그가 계속 발생되므로 프롬포트가 씹히게 되는데 이는 ctrl + c 대신에 exit를 쳐서 종료한다.

 

  • 다시 접속해서 이와 같이 입력해보자.
>> geth —syncmode fast —cache=1024 console
#이렇게 프롬포트가 뜨면
> admin.nodelnfo
  • 잘 설정이 되었다.
  • 이제 이더리움의 디렉토리를 살펴보자

 

  • 본인의 설치된 이더리움(Ethereum)경로를 찾는다.
  • 필자는 AppData\Local에 있다.
>> cd AppData\Local\Ethereum
>> dir

여기서 dir로 디렉토리를 확인한다. 본인의 keystore(비밀키)가 잘 있는 것을 확인했다.


2. 테스트 네트워크

  • 방금 전까진 메인 네트워크에 대해서 한 거고 테스트 네트워크는 메인의 복사본 쯤이다.
  • 말 그래도 어플리케이션을 테스트하는 네트워크이다.
  • 2.2 메인네트워크, 테스트 네트워크 5 현재 사용할 수 있는 테스트 네트워크는 Ropsten, Kovan, Rinkeby이다.
  • 메인 네트워크 Homestead에 대응되는 테스트 네트워크인 Ropsten은 —testnet으로 접속할 수 있다.

 

접속 및 동기화

별도로 명시하지 않으면 데이터베이스는 홈디렉토리 아래 .ethereum/testnet/에 만들어 진다.

 

테스트넷을 실행하려면 이와 같은 명령어를 입력한다.

>> geth —testnet

geth —testnet을 실행하면 나는 에러가 발생한다..

아마 버전차이 인것같다. 도움말에서 도움을 받아보자.

 

> geth -h

여기서는 ropsten이 대체 키워드이다. 이를 사용하자

 

> geth --ropsten
> #구 버전은 geth --testnet

잘 실행이 됐다.

 

  • ChainID : 3이게 중요하다. 메인에 대한 테스트이기 때문에 3이 나와야한다.
  • 로그가 쭉 나오는 거는 동기화를 실행하고 있다는 것이다. 쓰지 않으면 꺼놓는것이 편하다.
  • 왜냐하면 메모리등 많은 자원이 할당되기 때문에 느려진다.

 

블록체인을 빠르게 동기화하려면 다음과 같이 —syncmode fast와 —cache를 늘려 잡는다.

 > geth --testnet --syncmode "fast" --cache=1024 console

원격접속

rpc 옵션을 넣어줘야 원격접속을 허용한다.

> geth --identity "tjtjd" --verbosity 3 --rpc --rpcport "8444" --rpccorsdomain "*" --port "30444" --rpcapi "db,eth,miner,net, web3" --networkid 3

 

 

#버전떄문에 rpcdomain을 http.corsdomain으로 변경
> geth --identity "tjtjd" --verbosity 3 --rpc --rpcport "8444" --http.corsdomain "*" --port "30444" --rpcapi "db,eth,miner,net, web3" --networkid 3
  • verbosity = 속도
  • rpcdomain = 모두다 (‘*’ 와일드 카드를 통해 모든 접속자 에게 허용)
  • port = 임의의 포트

 

> dir

dir로 디렉토리를 검색하고 _geth_testnet.txt파일이 있는지 확인한다.

 

> type _geth_testnet.txt

내용도 동일한지 확인한다.

 

이렇게 뜨면 정상적으로 된 것이다