Development

[KR]타이코 노드 돌리기 완벽 가이드 A to Z

타이코 노드 돌리기 A to Z 가이드
BQDeveloper
B

BQDeveloper

May, 7, 2024, 15:03
0
single

나 진짜 오래 기다렸어 타이코 노드야!!!


꿀이라고 생각하는 이유

1. 프로포저와 프루버 노드가 오픈된지 얼마 안되었음

2. 너무나도 불친절해서 아직 돌리고 있는 사람이 많지 않음 (매우 중요)

3. Taiko는 가장 최근 시리즈 A를 마감하면서 총 모금액만 $32m에 달하는 초대형 프로젝트로 성장하였음

4. OKX, Mirana (Bybit), 윈터뮤트, GSR, 해시드 등 1티어 거래소, VC, 그리고 마켓메이커까지 모두 투자한 상태. 맛은 봐야겠지!!

특히나 윈터뮤트, Flow Traders, GSR, Amber심지어 프레스토까지 세상에 있는 마켓메이커는 다 들어간 기분


Taiko Proposer 노드 돌리는 법


안녕하세요. BQ개발자입니다. 오늘은 Taiko 노드를 돌리고 Proposer 기능을 활성화하는 방법에 대해 다루려고 합니다. (생색 내기) 참고로 제가 정말 여러 문서들이랑 디스코드 뒤져가면서 시도를 했는데, 계속 안돌아가는 현상을 겪었고, 산전수전 다 겪어가면서 최종적으로 확실히 돌아가는 방법에 대해서 작성한 글이니, 한번 시도해보시는 것 추천드립니다!

컨텐츠의 반응이 좋으면 혹시나 문서만으로 쫓아가기 어려우신 분들을 위해 유튜브 영상을 찍는 것도 고려하고 있으니, 많은 반응 부탁드려요!! (텔레그램 공지에 댓글로 원한다고 써주시는 분들이 많을 경우 최우선으로 고려해볼게요~)

4/25일에 Taiko의 Hekla 테스트넷이 공개됐습니다. 현재 시간 기준(2024/5/6 14:00) 블록은 94K 정도 생성됐네요.

런칭 이후로 트랜잭션도 꾸준히 생성되고 있는 것처럼 보이고, 여러 모로 기대가 많이 되는 프로젝트 중 하나죠.

Proposer 활성화하려는 이유

노드를 돌릴 때 proposer를 활성화 하려는 이유는 뭐니뭐니해도 트랜잭션 기록들을 남길 수 있다는 점입니다. Taiko 생태계에 참여할 수 있는 방법은 컨트랙트 배포 등 다양하게 있고, 그냥 노드만 돌려볼 수 있겠지만 실제로 기록이 남는 무언가를 좀 해야 나중에 커뮤니티 활성화 기여 차원에서 에어드랍도 조금 받아볼 수 있지 않을까 싶어서 노드를 돌리고 + proposer 모드를 활성화하려고 합니다.

자 그럼 시작해보시죠!

서버 생성

일단 노드를 돌리기 위해서는 먼저 노드를 돌릴 서버(컴퓨터)를 준비해야 합니다. 서버를 돌리는 방법이야 개인 서버를 돌릴 수도 있고, AWS 등 클라우드 플랫폼을 쓸 수도 있는데 저는 퀄리티는 조금 아쉽지만 가장 저렴한 VPS를 제공해주는 Contabo를 통해 서버를 생성하도록 하겠습니다.

우선 Doc에 써져있는 서버 사양을 보면 다음과 같습니다.

최소사양

  • CPU: 2+ cores
  • Memory: 4GB RAM
  • Disk: 1TB free storage space
  • Bandwidth: 8mbps

추천 사양

  • CPU: 4+ cores
  • Memory: 16GB RAM
  • Disk: 1TB NVMe SSD
  • Bandwidth: 25mbps

근데 위 사양은 Taiko 노드 뿐만 아니라 이더리움 Holesky노드를 돌린다는 전제하의 사양이기 때문에 스토리지의 경우 100GB만 돼도 충분하다고 생각해서 100GB만 돌렸는데, 안전하게 하고싶으신 분들은 Doc에 써져있는 최소사양을 맞추시길 바랍니다.

Contabo VPS를 통해 서버 사용하는법

링크 : Contabo

개인적으로 Contab를 쓰는 이유는 가격이 일단 다른 회사들에 비해 파격적으로 저렵하다는 점이에요.. 메이저 플랫폼만 쓰다가 처음 여기 가격을 봤을 때 정말 놀랐습니다. 일단 저는 속는셈 치고 가입해서 써봤는데, 나름 설립된지 오래되기도 했고, 잘 동작하는 것 같아 애용중이에요.

월 $12.5에 6 vCPU Core, 16GB RAM, 200GB 스토리지 ㄷㄷ

무튼 저는 추천사양인 Cloud VPS 2를 사용해서 돌려보겠습니다.

첫 달에는 셋업 비용 8.5$이 추가로 들긴하지만, 이 사양에 이 가격은 말이 안되니 한번 진행해보겠습니다.

스토리지를 선택

저는 여러 가지 추가 설치가 필요없는 App & Panels에서 우분투와 도커가 함께 설치된 버전을 골랐어요!

나중에 SSH 로그인을 위한 패스워드를 입력합니다. (이거 꼭 잘 기억해두세요!)

밑은 그냥 그대로 두고 이제 서버를 생성합니다. 그럼 한 30분 정도 뒤면 서버가 생성되고, IP 주소가 날아올꺼에요

나중에 로그인하시고, VPS control누르시면 확인 하실 수 있어요!

자 그럼 이제 접속을 해보면 되겠죠? 저는 Mac OS를 사용하고 있어서 Mac을 사용하겠지만 Window 쓰시는 분들은 동일한 커맨드를 윈도우 터미널에서 사용하시면 됩니다.

VPS에 접속

이렇게 IP주소를 입력하게 되면 password를 입력하라고 나오면, 위에 생성할때 사용했던 패스워드를 입력해줍니다.

ssh -lroot -p22 {ip 주소}

자 그럼 위 화면이 터미널에 뜨게 될 테고, 이제 부터 Taiko노드를 실행할 준비를 마쳤습니다!


Holesky 엔드포인트 받아놓기

자 그런데, Taiko L2 프로토콜이기 때문에 연결할 L1 네트워크에 연결이 필요한데요, 쉽게 말해서 이더리움 노드에 요청을 보낼 주소가 필요합니다.

Holesky를 제공해주는 여러 플랫폼들이 있기는 하지만 저는 BlockPI를 사용했구요

Ethereum | BlockPI Network*BlockPI is a global distributed blockchain API service network. The fast, scalable, robust multichain RPC…*blockpi.io

위 링크에 접속해서 가입하신 뒤에 API Key를 생성하시면 됩니다.

대쉬보드에서 이 부분을 찾으시고

API Key를 생성합니다.

그리고 생성된 https, wss 엔드포인트를 복사해둡니다.

Holesky Test넷 Faucet받기

제가 이것저것 faucet을 받기 위해서 시도를 해봤는데, 결국 PoW로 이더리움을 받아놓는게 제일 빠르더라구요? 아래 링크에 가셔서 사용하실 이더리움 계정에 faucet을 받아두시기 바랍니다.

https://holesky-faucet.pk910.de/

사용법은 간단해요

여기에 메타마스크에서 사용할 이더리움 계정 주소를 입력해주시고 한동안 돌려두시면 이더리움을 조금 받을 수 있습니다.

본격적으로 시작

자 이제 준비물은 모두 준비가 됐습니다.

  1. 노드를 돌릴 VPS 서버
  2. 이더리움 Holesky 네트워크 엔드포인트
  3. Proposer역할을 할 이더리움 주소

이제 VPS 서버를 켜두었던 터미널에 가서 다음 커맨드를 입력합니다.

한줄 한줄씩 입력해주세요!

docker-compose 설치

우선 docker-compose 설치를 위래 아래 커맨드들을 차례대로 실행

sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

버전은 저랑 달라도 크게 상관은 없어요!

타이코 프로젝트 깃헙 레포지토리 클론

git clone https://github.com/taikoxyz/simple-taiko-node.git

타이코 노드를 실행하기 위해 필요한 코드들이 적힌 깃헙 코드를 서버에 가져오는 커맨드입니다.

코드가 저장된 폴더로 이동

cd simple-taiko-node

env 파일 설정

이제 타이코 노드를 돌리기 위해 필요한 환경 변수들을 설정해줍니다. 노드가 돌아갈 때 이 파일에 있는 정보를 읽어서 돌아가는거구요, 여기에 이제 내 이더리움 주소 등등 설정들이 들어가기 때문에 이 부분 잘못 입력하시면 나중에 내가 돌린게 돌린게 아니게 될 수도 있으니 꼭 잘 쫓아오시길 바랍니다.

먼저 샘플로 있는 env파일을 복사해서 .env 파일을 생성합니다.

cp .env.sample .env

.env 파일 수정

저는 vim으로 사용하는데, 기본 커맨드는 다음과 같습니다.

  1. 편집 모드 진입: 기본적으로 Vim은 명령 모드로 시작합니다. 텍스트를 입력하려면 수정하고자 하는 줄에 커서를 옮기고 i (삽입 모드)를 누릅니다. 왼쪽 하단에 INSERT가 보인다면 이제 텍스트를 자유롭게 입력할 수 있습니다.
  2. 저장하고 종료하기: 편집을 마쳤다면, 먼저 편집 모드에서 나가려면 Esc 키를 누릅니다. 그 다음, :wq를 입력하고 Enter를 누르면 파일이 저장되면서 Vim이 종료됩니다.
  3. 저장하지 않고 종료하기 Esc 키를 누릅니다. 그 다음, :q!를 입력하고 Enter를 누르면 파일이 저장되면서 Vim이 종료됩니다.
vim .env

입력시 다음과 같이 .env 파일의 내용물이 보일거에요

여기서 이제 다음 부분들을 잘 수정해주어야 합니다.

엔드 포인트 수정

L1_ENDPOINT_HTTP= // 위에서 생성한 blockpi https 주소 입력
L1_ENDPOINT_WS= // 위에서 생성한 blockpi https 주소 입력
L1_BEACON_HTTP=http://unstable.holesky.beacon-api.nimbus.team/

참고로 BEACON_HTTP 주소는 디스코드에서 관리자들이 뿌려준 주소를 사용했습니다. 그대로 사용하세요!

프로포저 활성화

ENABLE_PROPOSER=true
BLOCK_PROPOSAL_FEE=30

메타마스크에서 지갑 주소 추출

계정 설정에 들어가서 private key를 추출하시면 됩니다.

L1_PROPOSER_PRIVATE_KEY= 메타마스크에서 지갑 주소의 Private Key 추출
L2_SUGGESTED_FEE_RECIPIENT= 메타마스크의 이더리움 지갑 주소 복사

BOOT_NODES 값 추가 아래로 변경

  • 이거 해주셔야 돼요.. 안그러면 블록을 못 쫓아가더라구요..
BOOT_NODES=enode://2f7ee605f84362671e7d7c6d47b69a3358b0d87e9ba4648befcae8b19453275ed19059db347c459384c1a3e5486419233c06bf6c4c6f489d81ace6f301a2a446@43.153.55.134:30303,enode://c067356146268d2855ad356c1ce36ba9f78c1633a72f9b7f686679c2ffe04bab6d24e48ef6eefb0e01aa00dff5024f7f94bc583da90b6027f40be4129bbbc5fd@43.153.90.191:30303,enode://acc2bdb6416feddff9734bee1e6de91e684e9df5aeb1d36698cc78b920600aed36a2871e4ad0cf4521afcdc2cde8e2cd410a57038767c356d4ce6c69b9107a5a@170.106.109.12:30303,enode://eb5079aae185d5d8afa01bfd2d349da5b476609aced2b57c90142556cf0ee4a152bcdd724627a7de97adfc2a68af5742a8f58781366e6a857d4bde98de6fe986@34.66.210.65:30303,enode://2294f526cbb7faa778192289c252307420532191438ce821d3c50232e019a797bda8c8f8541de0847e953bb03096123856935e32294de9814d15d120131499ba@34.72.186.213:30303,enode://0b310c7dcfcf45ef32dde60fec274af88d52c7f0fb6a7e038b14f5f7bb7d72f3ab96a59328270532a871db988a0bcf57aa9258fa8a80e8e553a7bb5abd77c40d@167.235.249.45:30303

다음 라인 추가

  • 이것도..
# P2P
DISABLE_P2P_SYNC=false

Prover 엔드포인트 변경

기본적으로는 그냥 이 사이트에 있는 주소 입력하시면 되는데요. https://dojonode.xyz/tatami 제가 그냥 다 드릴게요!!!

PROVER_ENDPOINTS=http://kenz-prover.hekla.kzvn.xyz:9876,http://hekla.stonemac65.xyz:9876,http://taiko.web3crypt.net:9876,http://198.244.201.79:9876,http://hekla.prover.taiko.coinblitz.pro:9876,http://148.113.17.127:9876,http://146.59.55.26:9876,http://taiko-a7-prover.zkpool.io,http://198.244.201.79:9876,http://146.59.55.26:9876,http://kenz-prover.hekla.kzvn.xyz:9876,http://hekla.stonemac65.xyz:9876,http://148.113.9.122:9876,http://taiko.web3crypt.net:9876,http://148.113.17.127:9876,http://hekla.prover.taiko.coinblitz.pro:9876,https://prover-hekla.taiko.tools,https://prover2-hekla.taiko.tools,http://taiko-testnet.m51nodes.xyz:9876,http://148.113.16.26:9876,http://taiko-a7-prover.zkpool.io/

자 이러면 이제 .env 파일 수정을 마쳤습니다!

vim을 사용하셨다면 ESC -> :wq를 입력해서 저장을 마치시고

이제 돌리기만 하면 됩니다.

저희는 docker가 설치된 VPS 서버를 사용하고 있기 때문에

터미널에서 Taiko 노드 도커 컨테이너 실행

docker compose --profile l2_execution_engine up -d && docker compose --profile proposer up -d

다 실행이 되고 나면 이제 로그를 확인해볼 수 있습니다. 근데 저희가 Contabo를 쓰다보니 네트워크 속도가 좀 느려서요.. Block을 다 쫓아가는데 1일정도 걸리는 케이스도 있다고 합니다. 혹시 너무 느리시거나 하시면 Contabo말고 다른 플랫폼 서버를 사용해야 할 수도 있어요. 저도 어떤건 잘 되는데 어떤건 너무 느리더라구요..ㅠ (이건 제가 해결해드릴 수 있는 문제는 아닙니다. 싸게 쓰는 만큼 리스크도 있어요)

각각 실행해보시고, 에러가 출력되는건 없는지 한번 확인해보세요!

docker-compose --profile l2_execution_engine logs -f
docker-compose --profile proposer logs -f

최종으로 잘 돌아가는지 확인

터미널에서 블록 번호 확인Doc에서는 Grafana보는법도 알려주긴 하는데, 저는 그냥 이거로 확인했어요!

curl http://localhost:8547 \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'

여기 나오는 블록번호랑 https://explorer.hekla.taiko.xyz/ 이 주소의 최신 블록번호랑 맞아야 합니다!

grafana로 보고싶으신 분들은 브라우저에

이렇게 입력하시고 접속하시면 됩니다! https아니에요 http 입니다!

저는 아래처럼 슝슝 잘 돌아가고 있네요!!


혹시나 질문등이 있으시다면 편하게

비큐 텔레그램 공지방: https://t.me/BQTelegram

비큐 텔레그램 소통방: https://t.me/BQKoreaChat

에서 질문해주세요!