클레이튼 토큰 전송 문의 드립니다

클레이튼 토큰을 발행을 하였습니다.
Contract Address는 알고 있습니다.
해당 토큰을 전송하고 싶은데요
const kip7 = new caver.klay.KIP7(contract_address)
const keystore = fs.readFileSync(’./keystore.json’, ‘utf8’)
const keyring = caver.wallet.keyring.decrypt(keystore, ‘비밀번호는 알고 있습니다.’)
const opts = { from: keyring.address }
const to = ‘0x0d3067d94d5705646694959c49Fdeb72Ec9e9f29’
const value = 1
const receipt = await kip7.transfer(to, value, opts)

Error: Returned error: unknown account
라는 메시지가 뜨는데 도움이 필요합니다.

안녕하세요, 코드가 일부분만 있어서 불명확하긴 한데, 아마도 wallet에 keyring을 넣어주셔야 할 것 같습니다.

kip7.transfer()를 호출하시기 전에 아래 문장을 실행하도록 하면 될 것 같습니다.

caver.wallet.add(keyring)

한 번 해보시고, 안되면 다시 댓글 부탁드리겠습니다.

1 Like

해당 코드를 넣어도 같은 에러가 납니다. ㅜㅜ

작성하신 코드를 제공해주실 수 있으실까요?

const fs = require(‘fs’);
const Caver = require(‘caver-js’)
const caver = new Caver(‘https://api.baobab.klaytn.net:8651/’)

async function testFunction() {
try {
const kip7Instance = new caver.klay.KIP7(contract_address)
const keystore = await fs.readFileSync(‘keystore.json’, ‘utf8’)
const keyring = await caver.wallet.keyring.decrypt(keystore, ‘Password’)
caver.wallet.add(keyring)
const to = ‘0x0d3067d94d5705646694959c49Fdeb72Ec9e9f29’
const value = 10
kip7Instance.options.from = keyring.address
const receipt = await kip7Instance.transfer(to, value)
console.log(receipt)
} catch (error) {
console.log(error)
}
}

testFunction()

참고로
const name = await kip7.name()
했을 때 토큰 이름도 잘 가져옵니다.

const kip7Instance = new caver.klay.KIP7(contract_address)

위 클래스는 caver의 common architecture가 적용되기 전 v1.4.1 이전 버전의 호환성을 위해 존재하는 클래스입니다. 아래 코드로 변경 부탁드립니다.

 const kip7Instance = new caver.kct.kip7(contract_address)

감사합니다.