에러

STD Exception encountered while processing chain.get_code

[ 에러 로그 ]

 

에러 상세

STD Exception encountered while processing chain.get_code
Exception Details: unknown key (eosio::chain::name: joker)

 

 

환경

OS : Mac OS

Blockchain : EOS

IDE : EOS Studio / EOSIO v1.7.3

 

 

상황

터미널(Terminal)을 사용해서 EOS 노드에서 제공하는 RPC API(Chain API)의 get_code를 curl로 실행했더니 위와 같은 에러로그가 출력되었다. 현재 작성자는 EOS Studio를 통해 노드 하나를 띄워놓고, get_code API를 통해 "joker"라는 컨트랙트(Contract)의 내용을 조회하려고 시도한 것이다.

curl --request POST   
--url http://localhost:8888/v1/chain/get_code   
--header 'accept: application/json'   
--header 'content-type: application/json'   
--data '{"account_name":"joker","code_as_wasm":1}'

 

 

원인

컨트랙트(Contract)를 배포하지 않았는데, get_code API로 조회를 시도했기 때문에 발생한 에러이다. 현재 작성자는 EOS Studio를 통해 로컬에 설치(install)된 노드로 몇가지 테스트를 위해 수시로 지웠다가 다시 설치하는 과정을 반복하고 있었다. 현재 작성자가 시도하고 있는 get_code 라는 API는 EOS 노드에 배포된 컨트랙트를 조회하고 해당 내용을 반환해준다. 그런데, 실수로 노드를 재설치한 후에 컨트랙트를 배포하지 않고 계속시도를 한 것이다. 

 

다시 말해서, 위 curl 명령을 보면 "joker"라는 컨트랙트를 조회하고 있지만, 실제 로컬에서 운영중인 EOS 노드에는 "joker"라는 컨트랙트를 아직 배포하지 않았던 것이다. 

 

 

해결

컨트랙트를 배포한 후, get_code API를 다시 시도하면 정상적으로 조회된다. 작성자는 get_code를 실행할 때 STD Exception encountered while processing 에러가 발생했지만, 다른 RPC API를 사용하는 경우에 만약에 해당 컨트랙트가 배포되지 않은 상태라면, 위와 같은 에러가 발생할 수 있으니 알아두자.

 

 

참고

EOS Developer > get_code

https://developers.eos.io/eosio-nodeos/reference#get_code-1