Role based account 를 만들때 update key, tx key, fee payer key를 따로 저장하진 않고 ( Console.log 로 키를 따로 메모장에 저장해놓지 않았음 ) Account update 를 진행했습니다.
Signing 을 From to , Feepayer address 를 지정해서 한 후
Caver-js 를 사용하여 feePayerSignTransaction 을 한 이후 ( 물론 Caver -js 에 대납계정은 Wallet.add로 저장해놓았습니다. ) sendSignedTransaction 을 실행했더니
Error: Returned error: invalid transaction v, r, s values of the sender
라는 메시지가 나옵니다.
이럴땐 어떻게 해결해야 하나요?
추가 : 아님 SDK 에서 RoleBased Feepayer 키를 따로 구할 수 있는 방법이 있나요??
추가 : Wallet add 된 Account는 readsync 로 Role based로 업데이트 된 Account 의 키스토어에서 직접 읽어서
SDK로 decrypt 이후 memory wallet 에 add 했습니다.
Account update는 transaction 보내는 것과 따로 구현되었어요.
예를 들어 Account update 는 accup.js
fee delegation transaction 보내는 곳은 feedel.js 입니다.
feedel.js가 실행되지 않은 상태 ( wallet add가 메모리 상에 없는 경우)
에서 accup.js 를 먼저 실행하고
이후 Role based 로 update 된 acc를 feedel.js 에 정보를 넣어서 실행하면 ( 아마 klay docs에 관련된 내용이 있었던 걸로 기억해요 )
Error: Returned error: invalid transaction v, r, s values of the sender
라고 메시지가 나옵니다.
혹시나 해서 feedel.js 에 wallet add를 한 이후 Privatekey를 로그로 불러보니
update 하기 이전의 Private key만 나오더라구요
Key 가 세개가 나오질 않습니다.
참고로 말씀드리자면 Sender의 unlock과 signing 은 JSON RPC call로 실행했습니다.
Fee payer 부분은 raw tx hash만 받아서 처리합니다.
안녕하세요, docs에는 wallet에 관련 함수가 없긴 하네요. caver.wallet.getKeyring(“0xaddr”)함수를 이용하시면 주소를 기반으로 해당 계정의 키를 얻어오실 수 있습니다. 이 함수로는 전체 role을 얻어올테고, 이 중 3번째 role이 fee payer role이 됩니다.
안녕하세요 콜린님?
v3 버전으로 Keystore를 쓰니까 caver.wallet.getKeyring(“0xaddr”) 으로는 Role based key 를 가져올수 없습니다. ( EN 노드 V 1.3.0 , Baobab 기준)
이부분 어떻게 해결해야 될지 여쭤봐도 될까요??
처음 생성시 fee delegation privatekey를 저장해놓고 쓰는 방법 밖에는 없나요?