에러(error)

Node 실행 -> “Nodeos Started” -> “Nodeos Stopped” -> Node 실행 실패
database dirty flag set (likely due to unclean shutdown): replay required

 

"Nodeos Started" 에러 메세지
"Nodeos Stopped" 에러 메세지
[Show Producer Log] 창에 출력된 에러 메세지

 

 

환경(environment)

OS : macOS
BlockChain : EOS
IDE : EOS Studio v0.6.0
Node : EOSIO v1.7.3

 

 

상황(situation)

기존에 EOS Studio 한 개로 개발하던 환경이 불편해서, EOS Studio를 두 개로 실행시켜서 개발하려고 시도했다. 마치 Android Studio를 두 개 띄워서 개발하는 것처럼 하려고 했던 것이다. 그래서 두개의 EOS Studio를 실행시켰다. 그리고 각각의 EOS Studio에서 Node를 하나씩 실행시켰다. 그런데, Node를 실행시키는 버튼을 누르자마자 위와 같은 에러가 발생했다. 

 

 

원인(cause)   

[ 에러발생 case 1 ]

EOS Studio 두 개를 실행시키는 건 상관이 없지만, Node 설정을 직접 따로 하지 않았다면, 작성자처럼 두 EOS Studio는 하나의 Node를 바라보고 있을 것이다. 위 에러가 발생한 원인은 두 EOS Studio 에서 하나의 Node로 접근하면서 Node에서 관리하는 데이터(block) 파일에 문제가 발생한 것이다. (참고로, 이 에러 때문에, 작성자는 이상한 현상을 볼 수 있었다. 한쪽 EOS Studio에서 추가한 계정이 다른쪽 EOS Studio에서 보였다. 이 현상도 아마도 같은 Node를 사용했기 때문으로 생각된다.)
 

[ 에러발생 case 2 ]

이 에러는 작성자처럼 두 EOS Studio를 실행시키면서 마주할 수도 있지만, 다른 상황에서도 발생하는 에러이다. 예를 들어, Node를 정상적으로 운영중에 강제종료(shutdown) 시킨다거나 하는 경우에도 Node에서 관리하는 데이터(block) 파일에 문제가 생길 수 있다고 한다. 

 

 

해결(solution)

위와 같은 에러가 발생했다면, 현재 실행하려는 Node 안에 쌓인 블록(block)을 가지고는 제대로 실행시키기가 힘들다. 만약, 작성자처럼 단순히 개발용 Node이기 때문에 기존 블록체인 데이터(block)들을 다 날려도 상관없는 상황이라면, 블록(block)데이터를 모두 삭제하고 다시 Node를 생성(add)해서 실행(start)시키면 초기 블록부터 다시 생성될 것이고, 이때부터는 한개 EOS Studio와 한개 Node를 사용해서 개발하면 된다. (참고로, 이 에러가 발생한 시점은 이미 블록(block)에 문제가 생겼기 때문에 한개 Node로도 운영이 안되는 상황이라는 것을 알아둔다.)

우선, 작성자처럼 두 개 EOS Studio로 사용하려고 시도했다면 하나를 다시 종료하고 하나만 가지고 작업하기를 바란다. 두 개를 사용하는 가능한 방법이 있지만, 여기서 소개하는 해결방법은 Block을 초기화해서 시작하는 방법을 포스팅하는 것이므로, 관련 주소를 첨부하니 참고 바란다.

1) Node 종료

 

2) Block 데이터 삭제

macOS

$ cd /Users/joker/.eosio/v1.7.3 
$ rm -rf data

※ 지우려는 Block을 가지는 Node의 정확한 위치는 EOS Studio > Local > EOSIO > Start 를 통해 Node를 실행시키면, 아래 로그창(=Show Producer Log)에 위치를 바로 확인할 수 있다.
※ Windows 에서 실행하는 경우 C:\Users\mr.lee\.eosio\v1.7.3\data 를 삭제한다.

 

3) Node 실행 

 

 

참고(reference)

노드 2개 사용

https://medium.com/coinmonks/single-host-multi-node-testnet-on-eos-6d940811a03