DATA Foundation 노드 문제 해결에 오신 것을 환영합니다! 이 섹션에서는 DATA Foundation 노드 실행 시 일반적인 문제와 해결책을 다룹니다.
노드 설정
~700
완전히 EVM과 호환되나요? IP 블록체인에 이미 적용된 사용자 지정이 있나요? 또는 적용 예정인 사용자 지정이 있나요?
네, EVM과 호환됩니다. DATA Foundation의 실행 클라이언트는 우리의 커스텀 precompile이 있는 Geth의 포크로, 엄격한 EVM 호환성을 유지하면서 IP 그래프의 성능을 향상시킵니다. RETH 및 Erigon과 같은 다른 이더리움 실행 클라이언트는 나중에 지원될 수 있습니다.
우리의 컨센서스 메커니즘은 CometBFT입니다.
배치 지원이 되나요? 배치 요청 제한이 있나요?
배치 RPC가 지원됩니다. Geth의 경우 1K 제한이 있고, 컨센서스 측에서는 10 요청 제한이 있습니다.
WS 연결이 가능한가요? (가능하다면, 어떻게 작동하나요)
네, WS는 실행 클라이언트에서 활성화되어 있으며, 구독 사용 사례에 권장됩니다. 포트 8546에서 열려 있습니다.
노드가 제공하는 경로는 몇 개인가요 (다른 메서드 RPC를 가진 여러 경로)?
전체 포괄적인 목록은 Geth의 최신 JSON-RPC 문서를 여기 에서 확인하세요. 향후 더 추가될 수 있습니다.
RPC 메서드에 따라 1-10분 TTL을 가진 표준 인메모리 캐싱을 사용하는 것을 권장합니다.
최신 블록을 가져오고 노드가 정상이고 동기화되어 있는지 확인하는 가장 좋은 방법은 무엇인가요?
실행 클라이언트에서 eth_syncing RPC 호출을 사용하여 노드가 동기화되었는지 확인하고, 최신 블록을 가져오려면 eth_blockNumber를 사용하세요.
가장 무거운 RPC 메서드는 무엇인가요? 이러한 메서드로 요청에 응답하는 데 시간이 얼마나 걸리나요?
eth_call / eth_getLogs / eth_getBlockByNumber
응답 시간 감을 잡기 위해 여전히 지연 시간 테스트를 진행 중입니다.
아카이브 노드 프로비저닝이 필수인가요? 그렇다면 얼마나 큰가요?
아니요, 현재로서는 그렇지 않습니다.
아직은 아니지만, 작업 중입니다.
일반적인 문제
오류: ERRO !! Fatal error occurred, app died️ unexpectedly !! err="create db: failed to initialize database:
해결책:
검증자 상태를 저장하세요:
cp $HOME /.story/story/data/priv_validator_state.json $HOME /.story/story/priv_validator_state.json.backup
🚧 이 파일은 매우 조심히 다루세요. 특히 검증자가 이미 블록을 서명하고 있는 경우에는 더욱 그렇습니다.
데이터베이스 백엔드 타입을 확인하세요. 노드는 사용 중인 스냅샷과 동일한 것을 지원해야 합니다:
cat $HOME /.story/story/config/story.toml
기본값은 app-db-backend = "goleveldb"입니다. 폴백은 CometBFT의 config.toml에 설정된 db_backend 값입니다. cat $HOME /.story/story/config/config.toml
문제: RPC 노드에서 가스 수수료를 조정해야 함해결책:
geth 시작 명령에 --rpc.txfee 플래그를 추가하세요:sudo tee /etc/systemd/system/story-geth.service > /dev/null << EOF
[Unit]
Description=Story-Geth Node
After=network.target
[Service]
User= $USER
Type=simple
WorkingDirectory= $HOME /.story/geth
ExecStart=$( which geth) --story --syncmode full --rpc.txfee 2
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
오류: ERRO Failed to send PacketPing module=p2p peer=19fa6dd52e72e4e85bbb873b705282cf73217a6b@158.220.80.96:40128 err="write tcp 139.59.139.135:26656->158.220.80.96:40128: write: broken pipe"
해결책:
노드가 동기화되어 있다면, 이 오류는 무시해도 됩니다. 클라이언트가 약간 뒤처져 있을 수 있습니다.
노드가 멈추면, 서비스를 재시작해야 합니다.
Cosmovisor: 업그레이드 정보 읽기 실패
cosmovisor를 시작할 때 오류가 발생합니다: panic: failed to read upgrade info from disk unexpected end of JSON input
해결책:
설치된 cosmovisor 버전이 최소 v1.7.0 이상이어야 합니다.
그런 다음 정보 파일을 확인하세요 (이 경우 버전 v0.13.0 편집):
cat $HOME /.story/story/cosmovisor/upgrades/v0.13.0/upgrade-info.json
없는 경우 새로 생성하세요: echo '{"name":"v0.13.0","time":"0001-01-01T00:00:00Z","height":858000}' > $HOME /.story/story/cosmovisor/upgrades/v0.13.0/upgrade-info.json
cosmovisor를 사용한 자동 업데이트에 대해 자세히 알아보려면 여기 를 참조하세요.
오류: INFO HTTP server stopped
INFO IPC endpoint closed
해결책:
포트 8551이 중지된 것으로 보이며, 백그라운드 프로세스에서 실행되는 iptables가 ip와 포트를 차단하고 posix에 접근하는 것입니다.
해결책은 ufw posix와 iptables를 제거해 보세요:
iptables -I INPUT -s localhost -j ACCEPT
오류: panic: Faile to consensus state: found signature from the same key
해결책:
create flags 검증 실패: 필수 플래그(s) 누락: moniker
오류: 4-11-26 08:42:20.302 ERRO !! Fatal error occurred, app died️ unexpectedly !! err="failed to validate create flags: missing required flag(s): moniker" stacktrace="[errors.go:39 flags.go:173 validator.go:168 validator.go:384 command.go:985 command.go:1117 command.go:1041 command.go:1034 cmd.go:34 main.go:10 proc.go:271 asm_amd64.s:1695]"
해결책:
--moniker 플래그를 누락했습니다.
새 검증자를 생성하는 명령은 다음과 같이 보여야 합니다:
./story validator create --stake ${ AMOUNT_TO_STAKE_IN_WEI } --moniker ${ VALIDATOR_NAME }
자세한 옵션은 여기 를 참조하세요.
오류: ERRO failed to process message msg_type= * consensus.VoteMessage err:" error adding vote"
해결책:
노드가 다운된 것 같습니다. 시작하려면, 여기 에서 현재 바이너리 버전을 확인하세요.
최신 바이너리를 가지고 있다면 - 피어 업데이트를 시도하세요, 이는 보통 노드가 p2p 통신을 잃을 때 발생합니다:
PEERS = "..."
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \" $PEERS \" /}" $HOME /.story/story/config/config.toml
오류: ERRO failed signing vote module=consensus height= 403750 round= 0 vote="Vote{23:B12C6AE31E8E 403750/00/SIGNED_MSG_TYPE_PREVOTE(Prevote) FA591EB1E540 000000000000 000000000000 @ 2024-11-08T16:58:10.375918193Z}" err="error signing vote: height regression. Got 403750, last height 420344"
해결책:
검증자의 priv_validator_state에 문제가 있는 것 같습니다.
🚧 이 파일은 매우 조심히 다루세요. 특히 검증자가 이미 블록을 서명하고 있는 경우에는 더욱 그렇습니다.
명령으로 상태 사본을 만들 수 있습니다:
cp $HOME /.story/story/data/priv_validator_state.json $HOME /.story/story/priv_validator_state.json.backup
검증자 상태를 확인하세요: cat $HOME /.story/story/data/priv_validator_state.json
이 오류가 발생하면, 상태를 재설정할 수 있습니다 (🚧 검증자가 아직 블록을 서명하지 않은 경우에만).
노드를 중지하세요.
sudo tee $HOME /.story/story/data/priv_validator_state.json > /dev/null << EOF
{
"height": "0",
"round": 0,
"step": 0
}
EOF
오류: ERRO !! Fatal error occurred, app died️ unexpectedly !! err="unknown flag: --home"
해결책:
잘못된 구성으로 보입니다. 시작 명령에서 --home 플래그를 제거해 보세요.
systemd 실행은 다음과 같이 보일 수 있습니다:
오류: Fatal: Failed to register the Ethereum service: incompatible state scheme, stored: path, provided: hash
해결책:
검증자 상태 또는 손상된 데이터베이스에 문제가 있습니다.
스냅샷 사용을 시도해 보세요.
🚧 이 파일은 매우 조심히 다루세요. 특히 검증자가 이미 블록을 서명하고 있는 경우에는 더욱 그렇습니다.
상태를 재설정하는 방법은 여기 에 설명되어 있습니다.
피어 재연결 실패 오류: 24-09-25 06:38:45.235 ERRO Failed to reconnect to peer. Beginning exponential backoff module=p2p addr=e0600fa5f2129e647ef30a942aac1695201ff135@65.109.115.98:26656 elapsed=2m29.598884906s
해결책:
노드가 동기화되어 있고 크게 뒤처지지 않았다면, 이 오류는 무시할 수 있습니다.
노드가 지연되거나 완전히 중지되었다면, 피어 업데이트를 시도하세요. 이는 보통 노드가 p2p 통신을 잃을 때 발생합니다:
PEERS = "..."
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers =./persistent_peers = \" $PEERS \" /}" $HOME /.story/story/config/config.toml
evm 동기화 중 finalized payload 처리가 중단됨
경고: WARN Processing finalized payload halted while evm syncing (will retry ) payload_height = ...
해결책:
이는 단지 story-geth가 동기화 중이라는 의미이므로 이 경고는 무시할 수 있습니다.
그러나 시간이 오래 걸린다면, 다음 순서로 프로세스를 하나씩 중지한 다음 나중에 다시 시작하는 것을 권장합니다:
sudo systemctl stop story-geth story
sudo systemctl daemon-reload
sudo systemctl start story-geth
sudo systemctl enable story-geth
sudo systemctl daemon-reload
sudo systemctl start story
sudo systemctl enable story
오류: ERRO error in proxyAppConn.FinalizeBlock module=consensus err="module manager preblocker: wrong app version 0, upgrade handler is missing for upgrade plan"
해결책:
업데이트를 놓친 것 같습니다.
시작하려면, 여기 에서 현재 바이너리 버전을 확인하세요.
오류: ERRO !! Fatal error occurred, app died️ unexpectedly !! err="home directory contains unexpected file(s), use --force to initialize anyway"
해결책:
이는 이미 노드를 초기화했다는 의미입니다.
$HOME/.story/story 디렉터리가 생성되었고, 그 안에 파일이 있습니다. 삭제하거나, 그것으로 시도해 보세요.
Err='create comet node: create node
오류: ERRO !! Fatal error occurred, app died️ unexpectedly ! err="create comet node: create node
해결책:
노드가 잘못된 버전을 사용하고 있는 것 같습니다.
여기 에서 현재 바이너리 버전을 확인하세요.
그리고 가장 가능성 높은 것은 현재 버전으로 바이너리를 롤백해야 한다는 것입니다.
오류: ERRO catchup replay: WAL does not contain
해결책:
AppHash 문제로 보입니다.
시작하려면, 여기 에서 바이너리의 현재 버전으로 업그레이드하세요.
버전이 현재 것보다 최신이라면, 롤백을 수행하세요.
Err='load engine JWT file: read jwt file
오류: ERRO !! Fatal error occurred, app died️ unexpectedly !! err="load engine JWT file: read jwt file: open /root/.story/geth/odyssey/geth/jwtsecret: no such file or directory
해결책:
노드가 jwtsecret을 얻을 수 없는 것 같습니다.
geth-service에서 WorkingDirectory를 확인하세요. 기본값은 WorkingDirectory=$HOME/.story/geth입니다.
모든 경로를 확인하세요. 명령으로 jwtsecret을 얻을 수 있습니다 (odyssey 네트워크의 경우):
cat .story/geth/odyssey/geth/jwtsecret
오류: ERRO Couldn't connect to any seeds module=p2p
해결책:
노드가 동기화되어 있고 크게 뒤처지지 않았다면, 이 오류는 무시할 수 있습니다.
노드가 지연되거나 완전히 중지되었다면, 시드/피어 업데이트를 시도하세요. 이는 보통 노드가 p2p 통신을 잃을 때 발생합니다 (노드를 중지하고 addrbook을 삭제하는 것을 권장합니다).
rm -rf $HOME /.story/story/config/addrbook.json
SEEDS = "..."
PEERS = "..."
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \" $SEEDS \" /}" \
-e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \" $PEERS \" /}" $HOME /.story/story/config/config.toml
finalized payload 처리 실패 err='rpc forkchoice updated
경고: WRN Processing finalized payload ; evm syncing
WRN Processing finalized payload failed: evm fork choice update (will retry ) status = "" err = "rpc forkchoice updated v3: beacon syncer reorging"
해결책:
모든 것이 괜찮습니다. 단지 story-geth가 동기화 중이라는 의미이며, 이는 시간이 좀 걸립니다.
노드가 크게 뒤처지지 않았다면, 이 경고는 무시할 수 있습니다.
Dial tcp 127.0.0.1:9090 경고: WRN error getting latest block error:"rpc error: dial tcp 127.0.0.1:9090"
해결책:
로그에 포트 9090의 연결 실패가 표시됩니다.
수신 포트를 확인하세요:
sudo ss -tulpn | grep LISTEN
다른 노드가 9090을 사용 중이라면, 다른 포트로 변경하세요.
일반적으로 이 경고는 노드의 성능에 영향을 미치지 않아야 합니다.
오류: ERRO Error in validation module=blocksync err="wrong Block[dot]Header[dot]AppHash Expected [...]
해결책:
Wrong AppHash 유형의 로그는 사용 중인 story 노드 버전이 잘못되었음을 의미합니다.
여기 에서 바이너리의 현재 버전으로 업그레이드하세요.
버전이 현재 것보다 최신이라면, 롤백을 수행하세요.
연결 실패 sendRoutine / 피어 중지
오류: ERRO Connection failed @ sendRoutine module=p2p peer=...
ERRO Stopping peer for error module=p2p peer=...
해결책:
노드가 동기화되어 있고 크게 뒤처지지 않았다면, 이 오류는 무시할 수 있습니다.
노드가 지연되거나 완전히 중지되었다면, 피어 업데이트를 시도하세요. 이는 보통 노드가 p2p 통신을 잃을 때 발생합니다:
PEERS = "..."
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers =./persistent_peers = \" $PEERS \" /}" $HOME /.story/story/config/config.toml
오류: ERRO !! Fatal error occurred, app died️ unexpectedly ! err="create comet node: create node: info.Moniker must be valid non-empty
해결책:
노드 moniker에 문제가 있는 것 같습니다.
init을 실행할 때 ""를 사용해야 합니다:
story init --network "..." --moniker "..."
설정으로 가서 moniker를 찾고 "" 안에 넣으세요:
sudo nano ~/.story/story/config/config.toml
오류: Fatal error occurred, app died️ unexpectedly ! err="create comet node: create node: invalid address (26656):
해결책:
로그에 포트 26656의 연결 실패가 보고됩니다.
수신 포트를 확인하세요:
sudo ss -tulpn | grep LISTEN
다른 노드가 26656을 사용 중이라면, 다른 포트로 변경하고 config의 P2P configuration 옵션에서 story를 위한 기본 26656을 유지하세요:
sudo nano ~/.story/story/config/config.toml
경고: WARN Beacon client online, but no consensus updates received in a while. Please fix your beacon client to follow the chain!
Served eth_coinbase eth_coinbase does not exist
해결책:
이 오류는 네트워크가 중지되었음을 나타냅니다.
경고: WARN Verifying proposal failed: push new payload to evm (will retry ) status = "" err = "new payload: rpc new payload v3: Post \" http://localhost:8551 \" : round trip: dial tcp 127.0.0.1:8551: connect: connection refused" stacktrace = "[errors.go:39 jwt.go:41 client.go:259 client.go:180 client.go:724 client.go:590 http.go:229 http.go:173 client.go:351 engineclient.go:101 msg_server.go:183 proposal_server.go:34 helpers.go:30 proposal_server.go:33 tx.pb.go:299 msg_service_router.go:175 tx.pb.go:301 msg_service_router.go:198 prouter.go:74 abci.go:520 cmt_abci.go:40 abci.go:85 local_client.go:164 app_conn.go:89 execution.go:166 state.go:1381 state.go:1338 state.go:2055 state.go:910 state.go:836 asm_amd64.s:1695]"
WARN Verifying proposal
해결책:
포트 8551이 중지된 것으로 보이며, 백그라운드 프로세스에서 실행되는 iptables가 ip와 포트를 차단하고 posix에 접근하는 것입니다.
해결책은 ufw posix와 iptables를 제거해 보세요:
iptables -I INPUT -s localhost -j ACCEPT