수수료 대납시 unable to send delegated transaction with no fee payer 에러

caver.rpc.klay.signTransaction 함수를 사용하면 unknown account 에러가 발생합니다.
caver.rpc에 계정이 없다는것은 알지만 해결방법을 알 수 없어 문의올립니다.

kas 콘솔에서 account Pool 계정을 생성하면 일반 caver에서는 호출되지만 caver.rpc에서 caver.rpc.klay.getAccounts를 호출하면 항상 빈 배열이 나옵니다.

안녕하세요 signTransaction을 사용하기 위해서는 노드에 키가 등록되어 있어야합니다.

caver의 wallet에 있는 키를 이용해서 서명하고, sendRawTransaction을 사용해보시겠어요?
ref1. caver.wallet.sign
ref2. caver.rpc.klay.sendRawTransaction

2개의 좋아요

답변감사합니다.
해결은 일반 caver-js 에서 caver.klay.accounts.wallet.add 로 계정 추가 후 caver.klay.accounts.signTransaction를 사용하여 해결하였습니다.

하지만 이후에 signTransaction 에서 나온 rawTransaction 을 사용하여 트랜잭션 대납을 실행하면 오류가 발생합니다.

트랜잭션 창 과 서명까지는 모두 정상적으로 진행되고 이후 에러가 발생하여 아래 스크린샷의 문구가 표시됩니다.
텍스트 상으로는 fee payer를 입력하지 않았을때 발생하는 오류 일 것같은데 fee payer를 정상적으로 입력하여도 오류가 발생하여 재 문의드립니다.

아래는 코드와 에러 스크린샷입니다.

const feePayerTransaction = { type: 'FEE_DELEGATED_SMART_CONTRACT_EXECUTION', senderRawTransaction, feePayer: account} ;
caver.klay.sendTransaction(feePayerTransaction);

트랜잭션 서명은 kaikas지갑 사용하여 진행했습니다.

feePayerTransaction ← 여기에서 type을 빼보시겠어요?
그리고 가급적이면 키값등은 블라인드 처리하고 전체코드를 올려주시면 좋을거같아요

2개의 좋아요