이더리움 생태계에서 사용하는 클라이언트가 Geth로 집중되어 있습니다. 이에 대해서 이더리움 재단도 심각성을 느끼고 있어서 (2023/05/17 링크 추가) https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity/, https://clientdiversity.org/ 에 관련 아티클을 작성해 주었습니다.
이를 위해 erigon 클라이언트를 사용해보려고 합니다. 문서가 github와 issues에 밖에 없는 것 같습니다..
관련 자료가 많이 없어서 저도 헤매고 있습니다. 틀린점도 있을 수 있고, 잘못된 점이 있을 수 있다는 점 알아주시면 감사하겠습니다. 최대한 보완하겠습니다.
https://github.com/ledgerwatch/erigon
해당 링크에서 Getting Started
부터 시작해보겠습니다.
git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git
cd erigon
make erigon
./build/bin/erigon
이렇게 따라하면 erigon 클라이언트가 실행될 겁니다!
ergion을 전역에서 사용하기 위해서 환경 설정을 변경해 줍니다.
에 PATH를 넣어줍시다.
ERIGON_PATH="<YOUR>/<ERIGON>/<BIN>/<DIRECTORY>/<PATH>"
export PATH="$ERIGON_PATH:$PATH"
이렇게 하면 아무곳에서 erigon 명령어를 쉽게 사용 가능합니다!
저희는 sepolia 체인을 사용할 것이기 때문에 --chain=sepolia
를 사용하겠습니다.
github docs를 보면 mainnet, goerli, gnosis, chiado 네트워크는 default로 --snapshots
이 true로 되어있고 나머지 네트워크는 --snapshots=false
라고 적혀있습니다.
그렇다면 우리는 sepolia 테스트넷 네트워크를 사용할 것이기 때문에, --snapshots=true
옵션을 넣어주면 될 것 같습니다.
다운로드 속도를 높이려면 --torrent.download.rate=20mb
플래그를 사용하라고 합니다.
다운로드 시 비트토렌트 프로토콜을 사용하게 되는데 해당 프로토콜의 속도를 높이는 플래그를 사용하는 것이라 생각하시면 되겠습니다.
--datadir
플래그를 통해 어디에 저장할지 정할 수 있습니다. ex) --datadir=./
⇒ 현재폴더에 저장
http 통신을 위해서 --port=30304 --http.port=8546 --authrpc.port=8552 --http
를 추가해주자!
1,2,3,4,5 를 합쳐서
erigon --chain=sepolia --snapshots=true --datadir=./ --torrent.download.rate=20mb --port=30304 --http.port=8546 --authrpc.port=8552 --http
실행해서 snapshot을 다운로드 받아보자!
[1/15 Snapshots] Waiting for torrents metadata: 0/15
여기서 넘어가지 않는다.. 어떻게 해결할까?
torrent로 받는 포트는 default로 42068 포트로 udp를 사용한다. 열려 있는 줄 알았지만, 열려있지 않아서 해당 포트를 한번 열어봤다.
downloader
를 사용해봤다.
erigon/readme.md at devel · ledgerwatch/erigon
downloader --downloader.api.addr=127.0.0.1:9093 --torrent.port=42068 --datadir=<your data directory> --torrent.download.rate=512mb --torrent.upload.rate=512mb
[2/15 Headers] Waiting for Consensus Layer...
여기서 또 안넘어 간다… 어떻게 해결할까?
(23/05/17 자료 추가)
externalcl
옵션이 default로 내장된다.mkdir prysm && cd prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
## Optional. This command is necessary only if you've previously configured USE_PRYSM_VERSION
USE_PRYSM_VERSION=v4.0.0
## Required.
./prysm.sh beacon-chain generate-auth-secret
--authrpc.jwtsecret
--authrpc.addr
--authrpc.vhosts
erigon \
--datadir=./execution \
--chain=sepolia \
--snapshots=true \
--log.console.verbosity=4 \
--nat extip:111.111.111.111 \
--port=30303 \
--http.port=8546 \
--private.api.addr=127.0.0.1:9091 \
--http --ws --http.api=eth,debug,net,trace,web3,erigon \
--authrpc.jwtsecret ./consensus/jwt.hex \
--authrpc.addr=0.0.0.0 \
--authrpc.vhosts=*
(nat extip는 사용자 본인 ip를 적어주시면 됩니다)
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --sepolia --jwt-secret=jwt.hex --genesis-state=genesis.ssz
--internalcl
flag를 사용하라 해서 사용했었는데, 안됐었습니다!!!--internalcl
flag를 통해 다운을 받게 되었습니다.erigon \
--datadir=~/erigon-sepolia \
--chain=sepolia \
--snapshots=true \
--log.console.verbosity=4 \
--nat extip:111.111.111.111 \
--http --ws --http.api=eth,debug,net,trace,web3,erigon \
--internalcl
—log.console.verbosity=4
는 로그보기위함이니 빼셔도 됩니다.)