클레이 전송 트랜잭션 실행 시 오류 질문드립니다

Postman으로 “/v2/tx/value” API를 호출하였고
from에는 KAS Console로 생성한 지갑계정을 입력하였고
테스트 충전버튼을 눌러서 충전해두었습니다.

해당 계정에는 잔고가 있는것을 확인하였고
to에는 Wallet API (Baobab, 대납계정)으로 생성한 계정을 입력하고
실행하였습니다.

그때 응답으로
{
“from”: “0xa707bbaa59bf7d8ec6fb156839834e6fbe79fcde”,
“gas”: 1000000,
“gasPrice”: “0x5d21dba00”,
“nonce”: 5,
“rlp”: “0x08f882058505d21dba00830f4240949775723fbb9a567e18d8497421f8c26cd92070c78307a12094a707bbaa59bf7d8ec6fb156839834e6fbe79fcdef847f8458207f6a0bcb1b8b684c0e16314e9d9d8f5a9f446d94e437636144fd855a0ea088eeb5d3ca03899de69aba7cc185a5641665c4eae58fde247bb28116b15bbeaeb09dcab65b3”,
“signatures”: [
{
“R”: “0xbcb1b8b684c0e16314e9d9d8f5a9f446d94e437636144fd855a0ea088eeb5d3c”,
“S”: “0x3899de69aba7cc185a5641665c4eae58fde247bb28116b15bbeaeb09dcab65b3”,
“V”: “0x7f6”
}
],
“to”: “0x9775723fbb9a567e18d8497421f8c26cd92070c7”,
“typeInt”: 8,
“value”: “0x7a120”
}

이렇게 받았는데 정상적으로 동작한건지 확인하려고
Wallet API (Baobab)로 해당계정의 잔고를 확인하려고 하면 변경되지 않아서 문의드립니다

안녕하세요!! @ToTheMoon 님!!
현재 /v2/tx/value API에서 submit 필드에 true 값을 주지 않아 노드까지 요청이 전달되지 않은 것 같습니다.
submit값에 true 값을 줄 경우 해당 요청이 노드까지 전해지고 여기에서 응답값에서 받은 transactionHash 값을 이용하여 https://baobab.scope.klaytn.com/tx/{transactionHash}에서 결과를 확인하실 수 있을 것 같습니다!!

1개의 좋아요

@_brandon 감사합니다 submit을 true로 설정하고 실행하니 정상적으로 동작했습니다
그리고 form (Wallet API)의 지갑계정의 잔고를 확인하는데 잔고의 변동이 없는데 확인은 어떻게 하나요??

잔액 변동을 확인하는 방법으로 몇가지가 있습니다

  1. 가장 쉬운 방법으로는 scope에 들어가 해당 from 계정을 조회하면 해당 계정의 잔액을 바로 확인하실 수 있습니다
  2. KAS Node API의 klay_getBalance method를 이용하여 또한 해당 계정의 잔액을 조회하실 수 있습니다!!

@_brandon 말씀하신대로 전송하고 scope에서 from 계정을 조회했습니다
value값을 "0xF4240"으로 설정하였는데 from계정의 잔액이 value만큼 차감되지 않는거 같았습니다.

0xF4240은 100만인데 스코프에서 value는 "0.000000000001"로 노출되었습니다.
이건 정상적인 케이스로 보면 될까요?

아… 차감되는거 확인했습니다

to 계정의 잔고는 어떻게 확인하나요??
Klayten Wallet 웹화면에서 생성하였습니다

to 계정 잔고도 scope이나 Node API 통해 해당 계정에 대해 조회 가능합니다!!
간단하게는 https://baobab.scope.klaytn.com/account/{to address}로 조회 가능합니다

@_brandon 네 감사합니다 다른 API찾아서 정상적인거 확인했습니다

유저대납 클레이 전송트랜잭션을 사용하려고 하는데
가스비는 수수료계정(KAS Fee-payer)에 등록된 계정에 클레이 잔고에서 가스비가 빠져나가는거 아닌가요??

해당 수수료대납계정에 잔액이 0x3ba26b20 (1,000,500,000)개가 있는 것은
https://node-api.klaytnapi.com/v1/klaytn의 klay_getBalance로 확인했습니다.

네네!! 유저 대납 클레이 전송 트랜잭션의 경우 FeePayer 로 선택하신 계정에서 가스비가 빠져나가게 됩니다!!
비율에 대한 조정은 feeRatio로 설정 또한 가능합니다

@_brandon
답변감사합니다
FeePayer계정에 클레이가 많아서 테스트API를 호출하면 오류가 발생하네요…

{
    "from" : "0x7BB5A809c562995884f98c8A82Ed3Be109f347C6",
    "value" : "0xF4240",
    "to" : "0x8dca68a7dc727a6ae623ad633efb720d966d4609",
    "feePayer" : "0x9775723fbb9a567e18d8497421f8C26Cd92070c7",
    "submit" : true,
    "feeRatio" : 0,
    "gas" : 1000000
}

로 입력했는데

{
    "code": 1065001,
    "message": "failed to send a raw transaction to klaytn node; insufficient funds of the fee payer for gas * price",
    "requestId": "56213c4f-ea4b-42a6-843d-60cd33ce0a45"
}

이런 응답을 받았습니다
이 오류코드는 gas비가 없다는거 같은데
FeePayer로 선택한 계정에 클레이가 앞서 말씀드린거 처럼 0x3ba26b20으로 있는 것을 확인하였습니다.

@ToTheMoon 해당 에러 메시지는 잔액이 없다는 뜻보다는 부족하다는 뜻으로 해석하는 것이 맞습니다.
현재 0x9775723fbb9a567e18d8497421f8C26Cd92070c7 계정의 경우 0.0000000010025KLAY 정도 가지고 있는 것으로 보입니다. 하지만 보통 FeeDelegatedValueTransfer의 경우 0.000775KLAY가 필요합니다. Fee 정도는 TxType, Tx 안의 필드 데이터에 따라 다르지만 ValueTransfer의 경우 memo 넣지 않는다면 거의 동일한 가스 비용이 필요합니다.
scope에서 타입별 가스 비용을 볼 수 있고 실제 나가는 가스 비용은 GasPrice * GasUsed 입니다. TxTypeFeeDelgatedValueTransfer에 대해 가스 비용 볼 수 있도록 링크 첨부해드립니다. Klaytnscope

@_brandon 감사합니다 수수료 대납계정에 잔고를 충전해서 테스트 했는데 성공한케이스와 실패한케이스가 있는데 “submit” : true로 하면 잔액이 부족하다는 에러가 발생하고 “submit” : true를 빼면 정상적으로 응답이 옵니다

제가 알기로는 submit을 true로 해야 TxHash값을 얻을 수 있는 것으로 알고 있는데 이거는 어떻게 해야하나요?
테스트 계정은 위에 댓글로 남긴것과 동일하게 하였고 submit만 빼고 호출했을 때 정상적으로 응답이 왔습니다.

@ToTheMoon submit을 한다는 뜻은 실제 클레이튼 노드로 트랜잭션을 전송할 것인가에 대한 유무입니다. 따라서 false로 했을 경우 클레이튼까지 전송이 안되고 tx에 서명한 값(rlp)만 노출이 됩니다
txHash 및 status에 submitted 값까지 나왔을 때 우선 클레이튼에 전송까지는 했다고 판단할 수 있습니다.

@_brandon 이해가 잘 안되네요… /v2/tx/value 트랜잭션을 호출할 때 submit을 true로 할 때 실제 클레이튼 노드를 통해 klay가 전송되는 것을 확인했고 KAS console을 통해 잔고가 변경되는 것을 확인했습니다

그러면 submit을 true로 했을 때 동작해야 되어 KAS console에서 잔고가 변경된 것을 확인할 수 있을거 같아서요ㅜㅜ

네네 말씀주신대로 submit 값이 true가 되어야 정상적으로 클레이튼까지 해당 트랜잭션이 전송이 됩니다. submit을 뺀다는 말은 default가 false로 설정이 되기 때문에 전송되지 않게됩니다

@_brandon 감사합니다… submit값을 true로 했을 경우 계속 잔고가 부족하다고 나오는데 현재 잔고가 부족하다고 나오고 있는 상황입니다… 이거만 해결되면 될거 같은데 확인 가능하신가요??

대납계정의 잔고는 KAS Console에서 확인했을 때 "85251002500000"로 확인하였습니다
이러면 submit의 값을 true로 했을 때 정상동작해야하는것으로 생각됩니다.

{
    "from" : "0x7BB5A809c562995884f98c8A82Ed3Be109f347C6",
    "value" : "0xF4240",
    "to" : "0x8dca68a7dc727a6ae623ad633efb720d966d4609",
    "feePayer" : "0x9775723fbb9a567e18d8497421f8C26Cd92070c7",
    "submit" : true
}

@ToTheMoon 위에서 말씀드린대로 feeDelegatedValueTransfer의 경우 0.000775KLAY의 가스비가 소비되게 됩니다. 현재 85251002500000peb을 KLAY로 환산(1KLAY = 1peb * 10^18)하게 되면 0.000085251002500000KLAY인데 0.000775KLAY에 비해 feePayer가 가진 잔고가 가스비를 내기에 부족하기 때문에 발생됩니다.

@_brandon 감사합니다! 잔고를 좀더 충전해 두고 다시 해보겠습니다

1개의 좋아요