caver js로 실습하던 중에 궁금증이 생겨 질문 납깁니다. ^^
지갑으로는 카이카스 지갑을 연동하여 사용하고 있었습니다.
함수를 실행하면 새로운 NFT를 발행해주는 예제 코드를 실습하고 있었는데
예를들어 파라미터로 params를 받는 myFunction을 실행하고 싶다고 치면
Contract.methods.myFunction"(params).send({ from: address, gas: '1000000' });
로는 트랜잭션이 정상적으로 실행되지 않고
자꾸 지갑 화면에서 확인 버튼이 비활성화된 상태로 넘어가지 않더군요.
‘트랜잭션은 한번에 하나만 실행할 수 있고, 대기상태가 지속되면 실행할 수 없는 트랜잭션이니 거부를 누르라’
라는 식의 오류 메시지가 뜨고 진행이 안 되어서 한참을 애먹고 있었는데
(화면 캡처를 까먹었네요~^^;
(Contract.send({ from: address, gas: '1000000' }, 'myFunction', params);
도 똑같이 실행이 되지 않습니다.)
혹시나 해서
caver.klay.sendTransaction({
type: 'SMART_CONTRACT_EXECUTION',
from: address,
to: CONTRACT_ADDRESS,
data: caver.klay.abi.encodeFunctionCall( myFunction ABI, params ),
gas: '1000000'
})
로 실행하니 정상적으로 실행되더군요 ㅎㅎ
어떤 차이가 있는 건지,
위의 경우 왜 정상적으로 실행이 안 되는 건지 궁금합니다~^^
참고로 call()을 하는 경우에는 정상적으로 실행되는 걸로 봐서
Contract 자체에 문제가 있는 건 아닐 것 같네요.