GregSeo
November 28, 2021, 6:51am
1
caverjs를 이용하여 테스트 넷에서 발행된 토큰의 소각을 진행하면 오류가 발생하네요.
const fs = require('fs')
const Caver = require('./node_modules/caver-js/index')
//const caver = new Caver('https://api.baobab.klaytn.net:8651');
const caver = new Caver('https://kaikas.baobab.klaytn.net:8651');
const address = "0x...{Owner wallet address}....bc";
const contractAddress = "0x...{Contract address}..0d";
const keystore = fs.readFileSync('./baobab-keystore.json', 'utf8')
const keyring = caver.wallet.keyring.decrypt(keystore, '{password}')
console.log(keyring)
caver.wallet.add(keyring)
const kip7Instance = new caver.klay.KIP7(contractAddress);
//kip7Instance.name().then(console.log);
//kip7Instance.decimals().then(console.log);
//kip7Instance.totalSupply().then(console.log);
//kip7Instance.balanceOf(address).then(console.log);
kip7Instance.burn(1000, { from: address, gas: 210000, gasPrice: 25000000000 }).then(console.log);
이렇게 실행을 하면, name, decimal, totalSupply 모두 출력되는데, kip7Instance.burn 실행시에는
UnhandledPromiseRejectionWarning: Error: Returned error: unknown account
에러가 발생합니다.
혹시나 테스트넷이 잘못된건지 해서
https://api.baobab.klaytn.net:8651 랑 https://kaikas.baobab.klaytn.net:8651 모두 해보았는데요 같은 에러가 발생하네요…
뭐가 잘못된건가요?
Jamie
November 29, 2021, 12:18am
2
안녕하세요.
caver.wallet.keyring
은 common architecture 때 생긴 새로운 피처입니다.
common architecture에서는 이와 함께 호환이 가능한 caver.kct.kct7
을 제공합니다.
caver.klay.KIP7
대신 caver.kct.kip7
을 사용하시기 바랍니다.
caver.kct.kip7.create(address)
이렇게 생성하실 수 있습니다.
GregSeo
November 29, 2021, 3:58am
3
caver.kct.kip7.create(address) 이렇게 생성을 하면 아래와 같은 에러가 발생하는데요…
흠… 뭐가 잘못된건가요?
E:\{path}\node_modules\caver-js\packages\caver-core-method\src\index.js:765
new Error(`${errors.txErrorTable[txError]}\n ${receiptJSON}`),
^
Error: evm: execution reverted
{
"blockHash": "0x187c2c4912017f7a650d2b82837e10ec665763462c47dd9e901ae38af9cddb9e",
"blockNumber": 76590652,
"contractAddress": null,
"from": "0x8a86c18c7b289f228315d3ef63f2fb7c00db5dbc",
"gas": "0x33450",
"gasPrice": "0x5d21dba00",
"gasUsed": 24847,
"input": "0x42966c6800000000000000000000000000000000000000000000000000000000000003e8",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"nonce": "0x1f",
"senderTxHash": "0x03c716760783420ad0caa01e5f6699aad4d304fd3a10a7769dccc2a61baa1fa1",
"signatures": [
{
"V": "0x7f5",
"R": "0x72572e3b6b8e2ee9d8524ac688805c6764bca25f8be2bae92290b14b71c9870",
"S": "0x124ed21ded02ce8aa6d817516d22e76bf0660a30475ca5c816221605ef460674"
}
],
"status": false,
"to": "0x2fc6d34de2a3faf8a0e24c4239f799ab11ed530d",
"transactionHash": "0x03c716760783420ad0caa01e5f6699aad4d304fd3a10a7769dccc2a61baa1fa1",
"transactionIndex": 0,
"txError": "0x9",
"type": "TxTypeSmartContractExecution",
"typeInt": 48,
"value": "0x0",
"events": {}
}
at checkForNormalTx (E:\path\caver\node_modules\caver-js\packages\caver-core-method\src\index.js:765:17)
at E:\path\caver\node_modules\caver-js\packages\caver-core-method\src\index.js:642:23
at processTicksAndRejections (node:internal/process/task_queues:96:5)
Jamie
November 30, 2021, 6:35am
4
위의 에러는 스마트 컨트랙트의 burn을 호출하는 트랜잭션을 실행하는 과정에서 에러가 발생한 경우입니다.
caver 사용 문법은 정상적으로 동작하나, 왜 burn을 실행하다가 에러가 나는지는 별도의 이슈입니다.
해당 에러 메세지만으로는 원인분석이 어렵습니다. from 계정이 burn하려는 개수만큼의 토큰을 소유하지 있는지 등을 확인해 주세요.
위의 에러에 관련한 트랜젝션 로그를 보시면
to 가 컨트랙트 어드레스이며, from이 Creator/Owner 입니다.
baobab scope에서도 확인해보면 holder가 모든 토큰을 가지고 있는 것으로 나와 있는데요,
어떤 부분을 확인해야 에러의 내용을 파악할 수 있을까요?