cdn용 caver.js(caver-min.js)어떤 버전에도 caver.klay.KIP17()가 없나요?
계속 is not a comstructor 오류가 뜨며 caver.klay를 console.log했을때도 KIP17은 없는듯 하였습니다.
안녕하세요.
Nodejs에서 제공하는 deprecate 함수의 문제인 것 같은데요, 혹시 caver.klay.KIP17 대신 caver.kct.kip17을 사용해 보시겠어요?
참고로 caver.kct (caver.kct.kip7, caver.kct.kip17, caver.kct.kip37) 모두 caver.wallet에 추가된 키링들로 동작합니다.
자세한 내용은 문서를 확인해 주시기 바랍니다.
caver.kct.kip17 사용시
this.approved = await this.KIP17Instance.approve(this.feePayer.address, tokenId, {
from: this.sender.address
})
을 실행하게 되면 다음과 같은 에러가 생성됩니다.
Error: “data” and “input” cannot be used as properties of transactions at the same time.
caver.klay.KIP17에서는 정상작동하였습니다.
node 기반이 아닌
cdn을 사용한 브라우저 환경에서는 caver.kct 자체가 없는 것 같습니다.
최신버전 ( )
을 사용하였습니다
안녕하세요 에러 재현을 할 수 있는 샘플코드 제공 부탁드립니다.
main()
async function main(){
const FeeDelegationTransaction= require('./src/FeeDelegationTransaction.js')
const contractAddress="스마트 컨트렉트 주소"
//senderPrivateKey, feePayerPrivateKey, receiverPrivateKey
const feeDelegationTransaction =new FeeDelegationTransaction("senderPrivateKey", "feePayerPrivateKey", "receiverPrivateKey")
await feeDelegationTransaction.setKip17Instance(contractAddress)
await feeDelegationTransaction.approveFeePayer("tokenId")
}
module.exports =class FeeDelegationTransaction {
constructor(senderPrivateKey, feePayerPrivateKey, receiverPrivateKey) {
const Caver = require('caver-js')
this.caver = new Caver('https://api.baobab.klaytn.net:8651/')
this.sender = this.caver.klay.accounts.wallet.add(senderPrivteKey )
this.feePayer = this.caver.klay.accounts.wallet.add(feePayerPrivateKey)
this.receiver = this.caver.klay.accounts.wallet.add(receiverPrivateKey)
}
async setKip17Instance(contractAddress) {
try {
this.KIP17Instance = await new this.caver.kct.kip17(contractAddress)
console.log("kip17Instance: ",await this.KIP17Instance.detectInterface())
} catch (error) {
console.log(error)
}
}
async approveFeePayer(tokenId) {
try {
this.approved = await this.KIP17Instance.approve(this.feePayer.address, tokenId, {
from: this.sender.address
})
console.log(`\nToken approve to test receipt ==========> `)
console.log(this.approved)
} catch (error) {
console.log(error)
}
}
}
일단 주신 소스코드만으로는 cdn을 사용해서 재현이 어렵습니다.
필요한 부분만 떼서 깃헙에 올려주셔도 됩니다.
그리고 사용하는 버전을 최신으로 올려보시겠어요?
Error: “data” and “input” cannot be used as properties of transactions at the same time. 이 에러는 최신 버전에서는 발생하지 않아야 합니다.
해결!!!
kaikas 는 window.caver 혹은 caver를 제공합니다
하지만 이는 굉장히 outDateded 되어있습니다.
버전이 상당히 낮습니다. 따라서 KIP17이 없습니다.
따라서 cdn을 통해서 caver.min을 사용하시고자하는경우
script src=“https://cdnjs.cloudflare.com/ajax/libs/caver-js/1.6.1/caver.min.js”
다음과 같이 사용하셔야합니다.
const caver=new Caver(klaytn)
이 글을 좋아요 많이 눌러주셔서 비슷한 오류를 겪는 개발자들이 이 글을 보고 재빨리 오류를 수정할 수 있었으면 합니다.
또한 kaikas의 caver버전을 긴급히 업데이트하시도록 좀 조치를 취하셨으면 감사하겠습니다.
이제 kaikas 에서 제공하는 caver.js 버전은 최신 라이브러리로 업데이트 되는 것 같습니다