401 Unauthorized: Signature Invalid
op-node에서 다음과 같은 로그가 표시되는 경우:
op-node가 JWT secret을 사용하여 execution client의 인증된 RPC에 인증할 수 없다는 의미입니다.
해결 방법
- 두 서비스 모두에서 JWT secret이 올바른지 확인하십시오.
execution client의 인증된 RPC가 활성화되어 있고 URL이 올바른지 확인하십시오.
P2P 구성 로드 실패
op-node에서 다음과 같은 로그가 표시되는 경우:
op-node에 P2P discovery 또는 peerstore 디렉터리에 대한 쓰기 권한이 없다는 의미입니다.
해결 방법
op-node에 P2P 디렉터리에 대한 쓰기 권한이 있는지 확인하십시오. 기본값은/p2p입니다.--p2p.discovery.path및--p2p.peerstore.path파라미터를 통해 P2P 디렉터리를op-node가 접근할 수 있는 위치로 설정하십시오.--p2p.discovery.path및--p2p.peerstore.path파라미터를 통해 discovery 경로를memory로 설정하여 영속성을 비활성화하십시오.
잘못된 체인
op-node에서 다음과 같은 로그가 표시되는 경우:
op-node가 잘못된 체인을 가리키고 있다는 의미입니다.
해결 방법
op-node의 L1 URL이 해당 네트워크의 올바른 L1을 가리키고 있는지 확인하십시오.op-node의 rollup 구성/--network파라미터가 올바른 네트워크로 설정되어 있는지 확인하십시오.op-node의 L2 URL이 올바른execution client인스턴스를 가리키고 있으며,execution client가 해당 네트워크에 맞게 올바르게 초기화되었는지 확인하십시오.
오류: eth_sendRawTransaction이 존재하지 않음
실행 클라이언트(op-reth, Nethermind 등)에 대한 RPC 호출이 다음과 같은 응답을 반환하는 경우:
-32601 JSON-RPC 오류는 구성한 sequencer 엔드포인트가 eth_sendRawTransaction을 제공하지 않는다는 의미입니다. 요청 경로는 다음과 같습니다.
op-node는 rollup 전용 RPC 메서드만 제공하며 eth_* 네임스페이스가 없으므로, raw 트랜잭션 제출을 받을 수 없습니다. 실행 클라이언트가 트랜잭션을 op-node URL로 전달하면 즉시 -32601 오류와 함께 실패합니다.
이 상황은 거의 항상 op-reth의 --rollup.sequencer(별칭 --rollup.sequencer-http, --rollup.sequencer-ws)가 체인의 실제 sequencer가 아닌 자체 op-node를 가리키도록 잘못 구성된 경우에 발생합니다.
해결 방법
- op-reth가 HTTP API에서
eth네임스페이스를 제공하는지 확인하십시오(표준 설정은--http.api=eth,net,web3,debug입니다).eth가 비활성화되어 있으면 raw 트랜잭션이 sequencer에 도달하기 전에 거부됩니다. - sequencer와 통신하는 모든 구성 요소(
op-node,op-reth,op-batcher,op-proposer, 스크립트)의 CLI 플래그와 환경 변수를 점검하십시오.--rollup.sequencer플래그는 자체op-node가 아니라 체인의 공개 sequencer 엔드포인트(예:https://mainnet-sequencer.optimism.io)를 가리켜야 합니다. - sequencer를 직접 운영하는 사용자 배포 L2의 경우, op-reth가 로컬로 전달하고
op-node엔드포인트로 대체되지 않도록--rollup.sequencer를 설정하지 마십시오. - 플래그를 수정한 후 영향을 받은 서비스를 재시작하여 새 엔드포인트가 적용되도록 하십시오. 올바른 sequencer RPC에 연결되면 즉시 오류가 사라집니다.
비정상 종료
비정상 종료(unclean shutdown)는 실행 클라이언트가 정상적인 종료 절차를 완료하지 못하고 중지될 때 발생합니다. 예를 들어SIGKILL, 전원 손실, 유예 기간을 초과하여 종료된 컨테이너 등이 있습니다. 영향은 EL이 사용하는 데이터베이스 백엔드에 따라 다릅니다.
위험을 최소화하려면 항상 정상적으로 종료하십시오. 포그라운드 프로세스는 Ctrl-C, Docker는 docker stop -t 300 <container>, systemd는 systemctl stop을 사용하십시오(EL에 플러시해야 할 대용량 인메모리 쓰기가 있는 경우 기본 90초 타임아웃을 재정의하십시오).
op-reth의 경우
op-reth는 설계상 크래시에 안전한 MDBX를 사용합니다. 비정상 종료 후에도 일반적으로 운영자의 개입 없이 정상적으로 재시작됩니다. 비정상 종료 후 시작에 실패하는 경우 다음 옵션을 사용할 수 있습니다.-
Stage unwind — 마지막으로 일관성 있는 stage 체크포인트로 롤백합니다.
- 전체 재동기화 — 최후의 수단으로 datadir를 삭제하고 genesis 또는 스냅샷에서 다시 동기화합니다.
Nethermind의 경우
Nethermind에서 비정상 종료가 발생하면 데이터베이스가 손상될 수 있습니다. 이는 일반적으로 다음과 같은 경우에 발생합니다.
- node에 하드웨어 장애(디스크 장애, 메모리 오류, 과열)가 발생한 경우
- 정전으로 인해 갑작스럽게 종료된 경우
- 적절한 정리 없이 프로세스가 종료된 경우
-
Lock 파일 문제
비정상 종료 후
Nethermind가 lock 파일에 대해 오류를 보고하는 경우 다음을 실행하십시오. -
블록 체크섬 불일치
블록 체크섬 불일치 오류가 발생하는 경우 direct I/O를 활성화할 수 있습니다.
참고: 성능에 영향을 줄 수 있습니다.
-
완전 재동기화
심각한 손상의 경우 전체 재동기화를 권장합니다.