안녕하세요. Baobab Testnet에서 Klaytn의 Wallet API를 통해 트랜잭션을 실행하려고 할 시 ErrExecutionReverted (0x09) 라는 에러가 뜨면서 Transaction이 Rollback 됩니다.
상세 사항: KAS의 Default Account Pool 내에 생성된 Account에서 Baobab 위에 생성된 FT의 Contract Address로 트랜잭션을 실행 할 시에 오류가 납니다.
Tx Hash는 0xea29dab07eee0026d250c5cfe3d2bdceabcd72e92b4431aa4ed670ed06a7fc96 입니다.
상세한 Inspection을 위해 사용한 코드를 하단에 첨부합니다.
감사합니다.
const encoded = caver.abi.encodeFunctionCall(
{
name: 'transfer',
type: 'function',
inputs: [
{ type: 'address', name: 'to' },
{ type: 'uint256', name: 'value' },
],
},
['0x52274CD516A17852072A2977d522028E454EDCbb', 90000]
)
console.log('Sending ', encoded)
try {
const executeTransactionResponse = await Axios.post(
'https://wallet-api.klaytnapi.com/v2/tx/contract/execute',
{
from: '0x8e15A6C6dCc2d1fbD483a5C02D89159083f2dD38',
to: '0xa45b5904933520dd2ea59af860416f9b46bbdc18',
input: encoded,
submit: true,
value: '0x0',
nonce: 0,
// feePayer: '0x974e1b1f8e8ce84050bd64d47daad3569d9d7c3a',
gas: 0,
},
{
headers: {
// 'x-krn': process.env.KRN + ',' + process.env.FEE_PAYER_KRN,
'x-krn': process.env.KRN,
},
}
)
console.log(executeTransactionResponse.data)
} catch (e) {
console.error(e.response.data)
}
안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.
0xa45b5904933520dd2ea59af860416f9b46bbdc18 이 주소를 scope에서 검색해봤더니 baobab에서 배포한 컨트랙트로 보여집니다.
cypress쪽에는 사용되지 않은 계정으로 나오는 것 같고요.
다른 계정들도 보니, 바오밥에서 생성하신 것 같습니다. headers에 x-chain-id를 1001로 추가해서 넣으셔야 할 것 같습니다.
headers: {
// 'x-krn': process.env.KRN + ',' + process.env.FEE_PAYER_KRN,
'x-krn': process.env.KRN,
'x-chain-id': 1001,
},
감사합니다.
안녕하세요. 빠른 답변 감사드립니다.
X-Chain-ID는 코드 상단에서 이미 정의해 놓은 상태입니다.
혹시 해서 /v2/tx/contract/execute
를 호출하는 부분에 x-chain-id를 재정의해보았지만 동일한 이슈가 발생하네요. 해당 트랜잭션의 Hash는 0x279a275571cc7a5f30828141903fd3152ddf8b83be771161478b0a94662f36b4
입니다.
빠른 확인을 위해 사용한 코드 원본 전체를 첨부합니다.
감사합니다.
import Axios from 'axios'
import Caver from 'caver-js'
import fs from 'fs'
Axios.defaults.headers = {
'x-chain-id': '1001',
}
Axios.defaults.auth = {
username: process.env.KLAYTN_ACCESS_KEY_ID || '',
password: process.env.KLAYTN_SECRET_ACCESS_KEY || '',
}
const main = async () => {
const caver = new Caver('https://api.baobab.klaytn.net:8651/')
try {
const contractInfoResponse = await Axios.get(
'https://th-api.klaytnapi.com/v2/contract/ft/' +
process.env.KLAYTN_TOKEN_ADDRESS
)
console.log(contractInfoResponse.data)
} catch (e) {
console.error(e.response.data)
}
const encoded = caver.abi.encodeFunctionCall(
{
name: 'transfer',
type: 'function',
inputs: [
{ type: 'address', name: 'to' },
{ type: 'uint256', name: 'value' },
],
},
['0x52274CD516A17852072A2977d522028E454EDCbb', 90000]
)
console.log('Sending ', encoded)
try {
const executeTransactionResponse = await Axios.post(
'https://wallet-api.klaytnapi.com/v2/tx/contract/execute',
{
from: '0x8e15A6C6dCc2d1fbD483a5C02D89159083f2dD38',
to: '0xa45b5904933520dd2ea59af860416f9b46bbdc18',
input: encoded,
submit: true,
value: '0x0',
nonce: 0,
// feePayer: '0x974e1b1f8e8ce84050bd64d47daad3569d9d7c3a',
gas: 0,
},
{
headers: {
// 'x-krn': process.env.KRN + ',' + process.env.FEE_PAYER_KRN,
'x-chain-id': '1001',
'x-krn': process.env.KRN,
},
}
)
console.log(executeTransactionResponse.data)
} catch (e) {
console.error(e.response.data)
}
}
main()
안녕하세요,
‘0x8e15A6C6dCc2d1fbD483a5C02D89159083f2dD38’ 이 주소에 balance가 없는 것 같습니다.
contract ‘0xa45b5904933520dd2ea59af860416f9b46bbdc18’ 에서
transfer(from, to, value)를 실행하시는 건데,
transfer(‘0x8e15A6C6dCc2d1fbD483a5C02D89159083f2dD38’, ‘0x52274CD516A17852072A2977d522028E454EDCbb’ , 90000) 을 실행하려면 '0x8e15A6C6dCc2d1fbD483a5C02D89159083f2dD38’에 90000 이상의 잔고가 있어야 합니다.
감사합니다.