1. IDE로 Deploy한 스마트 컨트랙으로 1000 토큰을 초기 발행하고, A와 B 계정에 각각 토큰을 보내주려면 transfer함수를 쓰는거잖아요?
그때 caver.kas.에서 어떤 함수를 써야 되나요? 예시를 들어 주시면 감사합니다.
2. 받은 토큰을 A 지갑에서 B지갑으로 보낼 때도 위에서 썼던 동일한 transfer함수를 쓰나요?
3. 보유한 토큰을 원화나 달러로 출금하려면 어떤 함수가 필요할까요?
4. caver-js에서 caver.kas.wallet.~과 caver.klay.~과는 사용이 전혀 다른가요?
알기로는 kas에서 생성한 계정만 kas API에 이용할 수 있다고 하는데, caver.klay.sendTransaction()과 같은 함수에는 사용이 가능하더라고요.
어떤 스마트 컨트랙트를 배포하셨는지 제가 질문상으로 정확히 알기 어려우므로 정확한 답변은 드릴 수 없습니다. 하지만 KIP-7 표준을 준수하는 스마트 컨트랙트를 배포하신 경우 transfer 함수를 사용하여 토큰을 전송할 수 있습니다.
KIP-7에서 해당 기능과 관련된 표준은 제공되지 않습니다.
caver-js-ext-kas의 caver.kas.wallet은 KAS Wallet API를 사용할 수 있도록 제공되는 기능입니다. 그리고 caver.klay는 Node API를 사용할 수 있는 기능으로 caver.rpc.klay와 동일합니다. 제공되는 기능이 전혀 다릅니다. KAS에서도 일부 Node API가 사용될 수 있도록 제공됩니다.
caver-js-ext-kas를 사용하고 IDE에서 KIP7으로 스마트 컨트랙 발행했습니다.
아래 부분에서 from은 스마트컨트랙 지갑 주소를 쓰는게 맞나요?
지갑 주소를 쓰든 계정 주소를 쓰든 아래와 같은 에러가 나옵니다.
왜그런걸까요?
async function requestValueTransfer(){
const tx = {
from : '스마트컨트랙지갑주소',
to: receiver.address,
value : 100000000000000000,
gas: 250000,
memo: 'requestValueTransfer(tx) Test',
submit: true
}
try{
const result = await caver.kas.wallet.requestValueTransfer(tx)
console.log(result)
}catch(err){
console.log('error',err)
}
}
"지갑에 있는 토큰 → A계정으로 보내는 함수"랑 "A계정 → B계정으로 토큰 보내는 함수"가 다른가요?
kip7.transfer를 이용해보는데요. 아래 transfer함수에 들어갈 인자에 배포할 때 연결한 계정 주소가 from에 들어가야 되고 (KAS가 아닌 wallet.com에서 만든겁니다), 중간에 들어간 숫자(1)는 Klay가 아닌 Token이고 싶은데 저렇게 해도 되나요?
async function transferContract(){
const smartContractAddress = 'IDE에서배포한주소';
const kip7 = new caver.kct.kip7(smartContractAddress)
const receipt = await kip7.transfer(receiver.address, 1, { from : sender.address})
console.log('receipt: ',receipt)
}
transferContract();
kip7.transfer의 from에 들어가는 계정을 KAS에서 만든거로 했더니 gas error가 뜨네요.
이렇게 질문한 이유는… KIP7Token.sol로 초기 발행을 하면 totalSupply : 100만 DTK가 스마트 컨트랙에 생긴다고 생각을 했어요.
그게 아니라 Smart Contract을 발행한 Account Address(Owner) 에 Token Balance로 잡히게 되는거죠?
그래서 토큰을 다른 A, B, C와 같은 지갑에 뿌려주려면 Owner가 Smart Contract에 구현한 transfer함수를 갖고 보내주게 되는거고요?
하나 더 질문있습니다.
from계정이 token을 소유하고 있는데도 gas required exceeds allowance or always failed가 나오는데요. 스마트 컨트랙을 만들 때 연결했던 계정이 아니면 다 저렇게 나오는건가요?