컨트랙트를 배포하거나 네트워크 트랜잭션을 실행하려면 사용할 각 네트워크에 전체 노드를 동기화 해야합니다.
주로 이더리움 메인넷 (mainnet)과 링키비 테스트넷(testnet)의 두 네트워크를 동기화 한다.
테스트넷은 이더리움 프로토콜을 실행하지만 토큰이 없는 네트워크라고 할 수 있습니다.
가스 비용을 지불하지 않고도 코드, 배포, 트랜잭션을 테스트하는데 유용합니다.
메인넷에서 반복 테스트를 수행하려면 상당한 비용을 써야 한다.= 진짜 돈을 사용해야한다.
네트워크 동기화
Geth에서는 세 가지 모드로 네트워크 동기화를 진행할 수 있습니다.
각각 라이트(Light) 풀 (Full) 아카이브 (archive) 모드, 3개가 있습니다.
라이트 노드
블록헤더를 동기화 하지만 트랜잭션을 처리하거나 상태 트리를 유지 관리하지 않습니다.
라이트 클라이언트는 지갑만 관리하고 이더를 주고받기를 원하는 사용자에게 유용합니다.
개발자 입장에서는 라이트 클라이언트만으로는 개발 용도를 충족하기에 부족하므로 풀 노드가 필요합니다.
풀 노드
풀 노드는 블록체인 상태 트리의 로컬 스냅숏을 유지하고 전체 블록을 다운로드하고
블록체인의 로컬 복사본에서 블록 트랜잭션을 실행하고 합의 프로세스에 참여합니다.
풀 노드는 이더리움 네트워크의 백본입니다.
토렌트에 익숙한 사람들은 풀 클라이언트와 라이트 클라이언트를 토렌트의 시드와 리치로 비유로 이해하는게 쉽습니다.
풀 노드는 다른 피어에게 네트워크 정보를 제공하지만 라이트 노드는 네트워크에서 정보를 가져올 뿐 제공하지 않습니다.
풀 노드 동기화를 수행하면 약 8시간이 걸리고 약 30GB 의 디스크 공간을 소비합니다.
아카이브 노드
아카이브 노드는 풀 아카이브 노드라고도 불립니다.
상태 트리의 현재 스냅숏뿐 아니라 제네시스 블록 이후 블록체인에서 발생한 모든 상태 전환의 복사본을 유지합니다.
풀 아카이브 노드는 이더리움 노드의 대부라고 할 수 있습니다.
2017년 12월 기준으로 350gb 의 저장 공간이 필요하며 월 30gb 속도로 필요한 공간이 증가하고 있다.
특정 기기가 풀 노드 동기화에 오랜 시간이 걸린다면 아카이브 노드 동기화는 거의 불가능하다고 본다.
표준 SSD 및 10Mbps 인터넷 연결 속도로 아카이브 노드를 동기화하려면 45일의 시간이 소요됩니다.
이러한 환경에서 가장 효율적인 방법은 아카이브 노드를 실행할때
geth의 import/export 기능을 사용해 기존 아카이브 노드의 데이터베이스 복사본을 만드는것이
동기화
메인넷 (mainnet)
geth --fast --cache=1024
fast 옵션을 통해 동기화를 진행하면 아카이브가 없는 풀 노드 동기화가 이루어집니다.
이 프로세스는 SSD 드라이브를 사용한 10Mbps 이상 인터넷 연결 시 약 8시간 소요됩니다.
HDD를 사용하면 2~3배 더 걸리며 3Mbps 이하 연결에서도 마찬가지로 더 늘어납니다.
가능하다면 동기화를 밤새 실행해야합니다.
시간을 절약하기 위해 메인넷과 테스트넷을 동시에 동기화 하는 방법이있습니다.
테스트넷
링키비 테스트넷 동기화를 통해서 알아보겠습니다.
메인넷과 테스트넷을 동시에 동기화할 것이라는 가정 하에, 테스트넷 동기화를 위한 다른 포트를 다음과 같이 할당해줍니다.
geth --rinkeby --port 31303
이렇게 하면 하룻밤 사이의 두 네트워크를 동기화 할 수 있다 - 메인넷 동기화가 끝나면 얘도 밤새켜놓고 동기화를 시켜주면됩니다.
포우셋
메인넷의 이더는 거래소에서 비트코인 또는 법정 화폐로 교환할 수 있지만,
테스트넷의 이더는 내재 가치가 없기 대문에 어느 거래서에서도 취급하지 않습니다.
이 문제를 해결하기 위해 대부분의 테스트넷에서는 포우셋을 사용합니다.
포우셋은 테스트를 위한 암호화폐를 무료로 지급하는 웹사이트 입니다.
비트코인 초창기에는 소량의 비트코인을 확보해 기술에 적응할 수 있도록 하기 위해 포우셋에서 비트코인을 지급했지만,
비트코인이 상당한 시장 가치를 인정받은 뒤에는 이러한 비트코인 포우셋이 사라졌습니다.
최근에는 주로 테스트넷의 이더를 나눠주기 위한 포우셋이 활성되 되었습니다.
기타
이더리움 스마트 컨트랙트를 개발하기 위해서 최적의 운영체제는 리눅스이며 맥 OS도 적절합니다.
윈도우 사용할 때는 GNU 를 내려받고 truffle 명령 대신 truffle.cmd 를 사용해야합니다.
'블록체인 공부 > 이더리움 개발 & 환경구축' 카테고리의 다른 글
[개발 환경설정-3]이더리움 개발 환경 셋팅 - 배포설명과 트러플 설치 및 배포해보기 (0) | 2023.01.27 |
---|---|
[개발 환경설정-2]이더리움 개발 환경 셋팅 - 이더리움 클라이언트 설명 및 Geth설치 (0) | 2023.01.27 |
[개발 환경설정-1]이더리움 개발 환경 셋팅 - 필수 사항 설치 (0) | 2023.01.26 |
댓글