바빌론 노드 작업하는데 계속 에러나요! 어떻게 해야돼죠?

250x250
반응형
728x90

이번 시간에는 바빌론 노드 작업하는데 발생하는 에러를 해결하러 왔습니다.

그 해결책을 정리할 겸 이렇게 바빌론 후속느낌으로 글을 작성하게 되었는데요.

이 글은 바빌론을 이미 하고 있다는 전제하에 말씀드리는 것이기 때문에 기본적인 바빌론 세팅은

2024.02.25 - [크립토 에어드랍 작업/노드 운용하기] - 바빌론 테스트넷 업데이트하기! 안하면 보상 안받아집니다~

 

바빌론 테스트넷 업데이트하기! 안하면 보상 안받아집니다~

지난 번에 바빌론 테스트넷을 설치해서 노드를 운용하는 방법에 대해 설명드렸었죠? 이번엔 그 바빌론 테스트넷의 마이그레이션 작업 즉, 업데이트를 해줘야됩니다. 바빌론은 설치가 되어있어

metaboo.tistory.com

 

위 게시글을 참조해주시면 감사드리겠습니다.


1. 커넥션 에러 / lastest_block_height 안올라가는 이슈 - Connection refused

제일 많은 분들이 겪는 에러입니다.

대부분 노드를 설치해서

분명 여기서 노드동기화도 다 되서 false 뜨는거 기다리는 중이었고

babylond status | jq .sync_info

이 명령어 입력했는데!!!

왜 이렇게 나오냐고!!! 라고 생각하실 수 있지만..

사실 저거 true뜨는데,

babylond status | jq .sync_info

위 명령어계속치다보면

이렇게 에러 뜨다가

다시 명령어 쳐주면 위 내용처럼 true뜨고 그래요.. 반복됩니다.

☞그래서 lastest_block_height보면 에러떴지만 다시 블록높이 올라간게 보이실겁니다.

 

근데 만약 lastest_block_height도 안올라간다. 고치고싶은데!!!

ERR failure when running app err="post failed: Post "localhost:26657": dial tcp 127.0.0.1:26657: connect: connection refused" anyone else with this error

라는 생각과 함께 위와 계속 jq .sync_info 치다보면 또 위와 같은 에러가 나타나고 있을거에요.

babylond start

이유를 살펴보시려면 서버에서 위와같이 입력하셔야 되는데요.

아마 이렇게 데이터베이스 초기화 실패라는 에러가 뜰겁니다. 99.9%는 이 이유에요. 

☞이 이유는 사실 서버와 순단되서 나타나는 에러랍니다.

 

그니까 왜 저 이유냐!

기존의 노드와 현재의 노드가 충돌났을 수도 있고, 서버 용량이 부족해서 데이터가 더이상 쓰이지 않다보니 DB가 초기화가 안되서 더이상 블록 동기화가 안되서 그럴수도 있고..등등인데..

제일 유력한건 서버와 순단되서..

서버와 순단된건 로그 조회하시면

이런거 나오죠? 이거 때문이에요.

그 외에도 이유는 뭐 다양합니다만..

아무튼 일단 해결하려면 본인의 가상서버의 용량을 확인해보셔야겠습니다.

저 처럼 최소 80GB로 늘려놔주세요.

그럼 어떻게 늘리냐! 궁금하실텐데요.

 

일단 이 명령어부터 입력한 뒤 따라와주세요.

sudo systemctl stop babylond

바빌론을 잠시 중단하겠습니다.

 

그리고

cp $HOME/.babylond/data/priv_validator_state.json $HOME/.babylond/priv_validator_state.json.backup

위 명령어를 통해 priv_validator_state 파일을 백업해줍니다. 꼭 해주세요


● Hetzner 서버를 이용하는 사람

위에 보이듯이 바빌론을 돌리는 서버로 오신 뒤 Rescale을 해주셔야 됩니다.

 

자세히 보시면

Volume이라고 있긴한데요.

이건 하드용량을 추가하는 개념이라 사실상 SSD 2개 장착한 것과 똑같다고 보시면 됩니다. 

 

그러니까 효용이 없기 때문에 Volume은 사용하지 않는 것이구요. Rescale을 해야되는 것이죠.

서버를 끄는 방법은 Power에 들어오신 뒤 Shutdown을 눌러주시면 됩니다.

하지만, Rescale을 하려면 먼저 사전에 서버를 잠깐 꺼줘야됩니다.

☞끈다고 데이터가 날라가지는 않지만 혹시 작업 중인게 있으면 날라갈 수 있기 때문에 노드에서 무언가 작업 중이라면 잠시 중단을 해주시거나 저장한 뒤 따로 백업을 해두세요.

백업은 Filezilla를 통해 옮기시면 됩니다.

2024.02.25 - [크립토 에어드랍 작업/노드 운용하기] - 바빌론 테스트넷 업데이트하기! 안하면 보상 안받아집니다~

 

바빌론 테스트넷 업데이트하기! 안하면 보상 안받아집니다~

지난 번에 바빌론 테스트넷을 설치해서 노드를 운용하는 방법에 대해 설명드렸었죠? 이번엔 그 바빌론 테스트넷의 마이그레이션 작업 즉, 업데이트를 해줘야됩니다. 바빌론은 설치가 되어있어

metaboo.tistory.com

위 게시글에 Filezilla를 통해 백업하는 방법 설명해놨으니 참고하세요!

 

이제 서버를 껐다면

Rescale에 들어와서 동그라미 친 CPIU and RAM only를 꺼주세요.

그래야 용량만 늘어나는 것도 보입니다.

그럼 동그라미친 부분이 용량이기 때문에 본인이 원하는 것에 맞게 선택하시면 좋겠습니다.

 

저는 CPU와 RAM은 크게 중요하지 않기 때문에 80GB의 제일 싼 걸로 선택했습니다.

이후 위 Rescale 버튼이 활성화가 될텐데 눌러주시면 됩니다.

그리고 다시 서버에 접속해주세요!


● Contabo 이용자

Contabo는 일단

https://my.contabo.com/vps/

 

Customer Control Panel - Contabo

During the login process, we perform various security checks. We ask for your understanding for the long login time - it increases your security drastically. You have activated the 2-factor authentication for your access to the customer control panel. To l

my.contabo.com

위 사이트를 통해 로그인해주시구요.

 

보시면 VPS Control이라고 있을겁니다. 여기를 눌러주시구요.

 

Manage를 눌러서

Extend SSD Storage를 클릭해주시고

이런거 나오는데 200GB가 한 번에 추가된다고 하니 읽어보시고 yes를 눌러서 추가해주시면 되겠습니다.

 

그리고 서버에 다시 접속해주세요!


이제 용량도 추가 되었으니 다시 돌아와주시구요.

sudo apt update
sudo apt install snapd -y
sudo snap install lz4

서버에 위 명령어를 한 줄씩 입력해주세요.

 

그리고 노드는 잠시 중지시켜놨으니 아래의 작업을 시작해주시면 됩니다.

wget -O babylon_77632.tar.lz4 https://snapshots.polkachu.com/testnet-snapshots/babylon/babylon_77632.tar.lz4 --inet4-only

위 명령어를 통해 파일을 새로 설치해줍시다. 

만약 위와 같은 404 NOT FOUND 에러가 나타난다면

https://www.polkachu.com/testnets/babylon/snapshots

위 링크에 접속해서

동그라미 친 Download the snapshot 부분이 변경된거니

저 아래의 wget -O라고 적힌 부분 복사해서 명령어 입력해주시면 됩니다.

파일 크기는 무려 약 24GB입니다. 설치에 5분~10분정도 걸립니다.

주의할 점은 1번에서 설명했듯이 서버의 용량입니다!!

서버의 사용가능 총 용량은 최소 40GB이상은 되어야 됩니다.

아니면 무조건 실패하고 설치했던 노드도 복구 불가능할 수 있습니다.

lz4 -c -d babylon_74720.tar.lz4  | tar -x -C $HOME/.babylond

그 다음 설치된 파일을 압축해제하는 명령어를 입력해주신 뒤

mv $HOME/.babylond/priv_validator_state.json.backup $HOME/.babylond/data/priv_validator_state.json

위 명령어를 통해 백업해뒀던 priv_validator_state 파일을 복구해줍니다.

rm -v babylon_74720.tar.lz4

위 명령어로 설치했던 그 파일은 용량이 크니까 지워주시고

sudo systemctl restart babylond && sudo journalctl -u babylond.service -f --no-hostname -o cat

위 명령어로 블록 동기화 다시 해주시면 됩니다!


근데 만약 위에 방식대로 했는데 안먹히면

curl -o - -L https://snapshots.polkachu.com/testnet-snapshots/babylon/babylon_74720.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.babylond

위 명령어를 입력해서 해보시구

sudo systemctl restart babylond && sudo journalctl -u babylond.service -f --no-hostname -o cat

위 명령어를 실행하시면 됩니다.


그래도 안된다면

curl https://testnet-files.itrocket.net/babylon/snap_babylon.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.babylond

위 명령어를 입력하시고 

sudo systemctl restart babylond && sudo journalctl -u babylond.service -f --no-hostname -o cat

위 명령어를 실행하시면 됩니다.

☞여기까지 했는데도 안되면... 밀고 다시해야됩니다.... 노드 자체가 잘못설치됐단 뜻이라서요..ㅠㅠ

 

그리고 지난번과 동일하게

babylond status | jq .sync_info

위 명령어를 입력해주셔서

그리고 이렇게 블록 동기화 다시 확인해주세요!

false만 뜨면 됩니다.

그 다음엔

sudo systemctl start babylond

위 명령어 입력해주시고

 

그 동안 혹시 바빌론 토큰을 더 모아두셨다면

babylond tx epoching delegate $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-test-3 --gas-adjustment 1.2 --gas 500000 --fees 10ubbn -y

위 명령어 입력한 번 해주시고

screen -S babylon

위 명령어로 screen 생성해주신 뒤

sudo journalctl -u babylond.service -f --no-hostname -o cat

입력해주시고 Ctrl+A+D로 빠져나오시면 됩니다!

 

https://babylonscan.io/validators

 

Babylonscan - Validators

BTC Timestamping Testnet

babylonscan.io

위 사이트에 접속해서 inactive에 본인의 이름을 검색하시면 출력되는 것을 확인해주시고

 

3번 내용처럼 

https://testnet.babylon.explorers.guru/validators

 

Validators Overview - Babylon (BBN) Blockchain Explorer

Meet the validators powering the Babylon (BBN) blockchain. View their performance, staked amount, and rewards.

testnet.babylon.explorers.guru

 

위 사이트에 접속하신 뒤

inactive로 바꾸고 moniker에 본인의 moniker를 입력해주셔서

블록이 동기화된거 확인해주시면 끝!


2. RPC error

두 번째 이슈로는 RPC error 인데요.

ERR failure when running app err="rpc error: code = NotFound desc = rpc error: code = NotFound desc = account myacc not found: key not found

 분명 저렇게 지갑주소 잘 넣었는데... rpc 에러가 뜨면서 지갑주소와 함게 key not found라고 뜨시죠?

아주 간단합니다

babylond keys list

위 명령어를 입력해서

여기 네모친 name의 별명이 wallet으로 잘 설정되어있는지를 확인하시면 됩니다.


● 1차적인 이유

이 부분은 name을 wallet으로 별명설정을 안해줘서 그런건데요.

제 가이드를 보시면

위 부분에서 밑줄친 $wallet 부분이

위의 babylond keys list에서 설정된 name의 부분을 가져오는 것이기 때문이죠.

 

그래서 확인했는데 지갑주소도 잘 되어있다!?


● 2차적인 이유

이미 이렇게 설명했었답니다?

즉, 노드가 inactive 되어있는지와 같은 status를 확인해보시면 되겠습니다!

 

이렇게 해도 안되어있다면 특수케이스라 밀고 재설치하시거나 디스코드에 문의해보시면 좋겠습니다!

저도 이 이외의 해결방법은 모르겠네요ㅠㅠ


3. in Jail

마지막은 In Jail 이슈입니다. 

이 부분은 노드로 확인하는 것이 아니라 노드구루를 통해 확인해야되는데요.

https://testnet.babylon.explorers.guru/validators

 

Validators Overview - Babylon (BBN) Blockchain Explorer

Meet the validators powering the Babylon (BBN) blockchain. View their performance, staked amount, and rewards.

testnet.babylon.explorers.guru

 

위 사이트에 접속하신 뒤

inactive로 바꾸고 moniker에 본인의 moniker를 입력해주시면

 

이렇게 감옥에 가있다고 나오는 건데요.

해결방법은 노드그레이님이 설명을 일부 참조했습니다!

☞출처: https://graychoi.xyz/442

 

일단

babylond tx slashing unjail --from wallet --chain-id bbn-test-3 --gas-adjustment 1.5 --gas-prices 0.025ubbn

위 명령어를 입력해주시면 되는데요.

그러면 상태가 No로 바뀔겁니다

근데 만약 안바뀌었다면 블록이 동기화가 안되서 그런건데요.

블록이 동기화가 되어있는 상태인지 확인하기 위해선

아래의 이 Uptime by lastest blocks를 보시면되는데

초록이 아니라 위 화면처럼 빨간색일 경우 블록동기화가 안된겁니다.

그 경우엔

sudo systemctl stop babylond

일단 babylond 도커를 먼저 멈춰주신 다음

cp $HOME/.babylond/data/priv_validator_state.json $HOME/.babylond/priv_validator_state.json.backup

위 명령어를 통해 priv_validator_state 파일을 백업해줍니다. 꼭 해주세요

rm -rf $HOME/.babylond/data $HOME/.babylond/wasmPath

그리고 위 명령어를 통해 이전 data폴더와 wasm폴더를 삭제해서 

 

다시 1번에도 설명해드렸던

위 부분부터 진행해주시면 되겠습니다.

 

그 다음

babylond tx slashing unjail --from wallet --chain-id bbn-test-3 --gas-adjustment 1.5 --gas-prices 0.025ubbn

위 명령어를 다시 입력해주시고

위 화면처럼 비밀번호 입력하고, y 누르고 엔터!

 

지난번이랑 똑같죠?

 

이번에도 1~2시간정도 기다려주셔서 Validator 등록기다려주시면 되구요.

 

https://babylonscan.io/validators

 

Babylonscan - Validators

BTC Timestamping Testnet

babylonscan.io

위 사이트에 접속해서 inactive에 본인의 이름을 검색하시면 출력되는 것을 확인하시면 됩니다.

 

그리고 만약 

이런식으로 나온다면

블록 멈춘 예시

블록넘버가 동기화 안되고 있는거 뿐이니 안나와도 에러는 아닙니다.

저 부분 때문에 로그 찍어보면

이런식으로 신호가 죽었다고 나오는데 그게 저 이유입니다.

아까 명령어 입력해서 나왔으면 동기화 잘 된거임!!

그리고 본인의 노드에 토큰을 다시 한 번 위임(추가위임)하기 위해

babylond tx epoching delegate $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-test-3 --gas-adjustment 1.2 --gas 500000 --fees 10ubbn -y

를 입력하시면 됩니다.

 

확인되셧으면 이제

screen -S babylon

입력해 주시고

sudo journalctl -u babylon.service -f --no-hostname -o cat

입력하신 다음

Ctrl+A+D를 입력해서 빠져나와주시면 노드를 꺼도 계속 실행됩니다.

 

그 다음 블록 동기화가 완료되었는지 다시 확인해주시면 끝!


여기까지 바빌론 노드 돌리면서 많이들 에러나는 3가지 정리였습니다.

에러가 많이들 나서 답답하신 것 같은데,

그래도 많이들 물으신 에러가 위 3가지니까.. 해결되시면 좋겠습니다!

그리고 작업하다 막히거나 모르시는 부분이 발생한다면 댓글이나 텔레그램을 통해 질문주시면 알려드릴게요!

 

소식과 내용을 빠르고 다양하게 접하고 싶으시다면 아래 그림(텔레그램)을 클릭해주세요!!

Designed by JB FACTORY