[caver JAVA] kip7 allowance / transferFrom 호출 문의

  1. 바오밥 네트워크 상에서 KAS 를 통해 생성된 KIP7 토큰에 대해서
  2. JSON-RPC를 사용해서 권한을 부여받아 TransferFrom을 수행하려고 합니다.
  3. KAS API 상의 allowance 호출 시, spender가 owner로부터 지정한 수량을 approve 받은 것으로 나오는데요

동일한 토큰의 Ownder, spender에 대해서 caver JAVA를 통해 allowance를 호출한 결과 허용된 된 잔액이 없다고 나옵니다.

KIP7 kip7 =  caver.kct.kip7.create(tokenAddress);
// public BigInteger allowance(String owner, String spender)
BigInteger ab = kip7.allowance(deployerAddress, spenderAddress);
{
	"jsonrpc": "2.0",
	"method": "klay_call",
	"params": [{
		"to": "0x4b23768749f18f504d8233c88bc4da0b622344d1",
		"data": "0xdd62ed3e000000000000000000000000013f23266b127db9cadc783eb7703b5f4e710385000000000000000000000000e8cb3397bd8cdf54f09422d3336a6235ac182de3"
	}, "latest"],
	"id": 0
}

{
	"jsonrpc": "2.0",
	"id": 0,
	"result": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

마찬가지로 transferFrom을 할 때, estimateGas를 할 때, allowance가 필요하다고 나오는데, KAS API를 통해 allowance를 받은 것이 JSON RPC에는 유효하지 않은지 확인 부탁드립니다.

SendOptions sendParam =  new SendOptions(spenderAddress);
		TransactionReceiptData data = kip7.transferFrom(deployerAddress, account.getAccount_address(), BigInteger.valueOf(amount * decimal), sendParam);
{
	"jsonrpc": "2.0",
	"method": "klay_estimateGas",
	"params": [{
		"from": "0xe8cb3397bd8cdf54f09422d3336a6235ac182de3",
		"to": "0x4b23768749f18f504d8233c88bc4da0b622344d1",
		"data": "0x23b872dd000000000000000000000000013f23266b127db9cadc783eb7703b5f4e710385000000000000000000000000797958bc3fe1d58beb7d81157353c8fc81cde84d0000000000000000000000000000000000000000000000000de0b6b3a7640000"
	}],
	"id": 1
}

{
	"jsonrpc": "2.0",
	"id": 1,
	"error": {
		"code": -32000,
		"message": "gas required exceeds allowance or always failing transaction"
	}
}

spender는 KAIKAS 계정
receiver는 KLIP계정
deployer는 KAS에서 KIP Token 배포 시 기본으로 생성되는 deploy 계정입니다.

안녕하세요.

Allowance() 함수를 실행하실 때 첨부해신 이미지에 보이는 parameter와 caver-java로 실행하신 parameter가 동일한게 맞을까요? 제가 보기에는 다른 것 같습니다.

TransferFrom() 함수도 Owner()가 Spender에서 approve()를 통해 토큰의 송수신 권한을 위임한 뒤 account라는 변수로 전달하는 게 맞을까요? 그렇다면 transferFrom의 함수의 파라미터도 잘못 작성된 것 같습니다.

감사합니다.