VM error occurs while running smart contract

음… 토큰 전송 잘 하고 있다가 아래와 같은 에러를 만났습니다.
혹시 짐작가는 원인 있으실까요.

Error: VM error occurs while running smart contract 
{ 
  "blockHash": "0x7ba6aa0bc183ba74e7247eb045fee78a196d1816a549ff816db7a69f651fe68c", 
  "blockNumber": 34324983, 
  "contractAddress": null, 
  "feePayer": "0x08260736c18bd8612bee2b21beedf4e97c0bc6b9", 
  "feePayerSignatures": [ 
    { 
      "V": "0x4056", 
      "R": "0xbb0bc31aac49c07f836e027f385b910430435d6b5c18654b354049f8e5da26f1", 
      "S": "0x5ce94f8c5047d030736b8f8bd219daf270f29b54d74695bda05ba1c61c519e4c" 
    } 
  ], 
  "from": "0x84e807793cd0ab5bac156858ea1af700f6caa9cb", 
  "gas": "0xf4240", 
  "gasPrice": "0x5d21dba00", 
  "gasUsed": 1000000, 
  "input": "0xa9059cbb000000000000000000000000efedefc22c1cc9306bb7f0570dd689dc0aa3a1d50000000000000000000000000000000000000000000000000de0b6b3a7640000", 
  "logs": [], 
  "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 
  "nonce": "0x4d", 
  "senderTxHash": "0xba0dba129ab9cc7929b10c268a55533924cc43bdc648f187937623d227cf38f2", 
  "signatures": [ 
    { 
      "V": "0x4056", 
      "R": "0x655af82e541bb41ff1e868ba11bbcaac1230938ecb84b86900480ee468e8f31", 
      "S": "0x1b980bef637c5cac944dede79b81c18adfcb6084429b9b39b5f18d02be6b7ea7" 
    } 
  ], 
  "status": false, 
  "to": "0xc4407f7dc4b37275c9ce0f839652b393e13ff3d1", 
  "transactionHash": "0xa8afb616517b2ad33f280995a4bce2fe6802217463196e006d6ae6d5b51c14b8", 
  "transactionIndex": 3, 
  "txError": "0x2", 
  "type": "TxTypeFeeDelegatedSmartContractExecution", 
  "typeInt": 49, 
  "value": "0x0" 
} 
    at checkForNormalTx (/Users/aeharv/project/github/Cloudbric/cryptobric-api/node_modules/caver-js/packages/caver-core-method/src/index.js:759:17) 
    at /Users/aeharv/project/github/Cloudbric/cryptobric-api/node_modules/caver-js/packages/caver-core-method/src/index.js:636:23 
    at runMicrotasks (<anonymous>) 
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

시간이 촉박하여 자주 문제 공유드리고 질문 드리게 되네요.

바쁘신 와중에도 확인해주셔서 감사합니다.

사용하고 있는 caver 버전은 1.5.1-rc.2 입니다.

한 번 발생한 이후로는 계속 발생하고 있습니다.

특이 사항으로는… 현재 EN 싱크 상황이 많이 불안정한 상태에서 발생한 에러입니다.

안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

해당 에러는 VM을 실행하면서 알 수 없는 에러가 발생한 것 같습니다.

아마도 싱크하면서 메모리 사용량 등의 이슈로 문제가 발생한 것 같은데, 해당 시점의 로그를 확인할 수 있을까요?

말씀하신 것처럼 해당 기능을 수행할 때

싱크가 불안정한 상황이었습니다. 메모리 사용량 여유 꽤 있었구요.

내일 제가 다시 상황 재현해보면서 재현되면 해당시점의 로그 함께 첨부드리도록 하겠습니다.

답변 주셔서 감사해요 @colin.kim

1개의 좋아요

스마트 컨트랙트의 로직에 맞게 처리되지 않아야 할 연산을 처리하지 않을 때 이런 에러메시지가 발생한거였네요. :innocent:

require(); 에 걸리는 트랜잭션을 발생시켰고 그럴 때 이런 메시지가 나오는 거였어요.

도움 주셔서 감사합니다 :upside_down_face:

1개의 좋아요

네 확인 감사합니다.

'txError’가 '0x9’인 경우는 명시적인 require()문에 의해 REVERT opcode가 실행되는 경우입니다.

'txError’가 '0x2’인 경우는 VM 실행상 오류가 발생했다는 건데, 대부분의 경우는 'invalid opcode 0xfe’로 추정이 됩니다. 이 에러는 divide by zero 등 REVERT이외의 VM 실행과정상 오류가 발생했을 경우 나오는 에러입니다.

참고 부탁드립니다.

감사합니다.

1개의 좋아요

디테일 감사드립니다.

향후 비슷한 문제가 재발생 시 이 부분도 고려해볼 수 있겠네요.

감사해요 @colin.kim

1개의 좋아요