KAS api의 계정 migration 후, 기존 transaction 오류

기존 caver-js 를 사용하고 있습니다. 이것을 KAS 로 이전하려고 테스트 중입니다.

KAS에서 기존 계정을 바로 사용할 수 없더군요. KAS API에 caver.kas.wallet.migarateAccounts(accounts) 메서드로 계정을 migration하고 나니 KAS 에서는 잘 되네요.

그런데, 기존 코드에서 transaction이 안되고 있습니다.

Error: Returned error: invalid transaction v, r, s values of the sender

이런 오류가 납니다.

여기 Forum을 검색하다 보니 계정의 public, private key가 새롭게 갱신되어 그렇게 될 수 있다는 글을 보았습니다.
이 이유 때문인가요?

만약 그렇다면, 제가 그 과정에서 새롭게 갱신된 private key를 알 지 못하고 있습니다. 이전 private key에서 새로운 private key를 알 수 있는 방법이 있나요?

아니면, 이 문제를 해결할 다른 방안이 어떤 방법이 있을까요?

그냥 기존 코드를 버리고 KAS로 바로 이전을 해야 하나요?
전체 KAS 이전 작업을 하려면, 시간이 좀 걸리는 것 같습니다. 그러면 기존 서비스에 문제가 생기거든요. 빠르게 대처할 방법이 있다면 알려주세요.

안녕하십니까. KAS 개발팀입니다.

네, 말씀하신대로 KAS 로 계정을 마이그레이션하는 원리가 Public key 업데이트를 하는 것입니다.

따라서 기존 private key 로는 사용하지 못하게 됩니다.

따라서 기존 코드 대신에 KAS 로 마이그레이션 하는 것을 권장 드립니다.

만약 기존 코드를 꼭 같이 사용하시고 싶다면, Multisig 키로 업데이트를 하면 가능합니다.

계정 업데이트 - KAS Docs 를 참고하시면 방법을 확인하실수 있습니다.

이 때, 중요한 것은 Threshold 를 2로 설정하시고, 기존에 가지고 있던 public key 와 KAS 계정조회로 나오는 ublickey 의 가중치를 각각 2로 설정해주시면 됩니다.

감사합니다.

위 질문에 대한 답으로는 전체적으로 이해가 안되는 부분이 있어서,
다시 한 번, 요약해서 질문드립니다.

EN 서버를 이용하다가 KAS 로 이전하려고 합니다.

기존 서비스는 AccountKeyLegacy 형태의 계정으로 되어 있습니다.
이를 KAS로 이전하려고 하니, migration을 해야 하더군요.
migration을 하게 되면, AccountKeyPublic 형태로 account 형식이 변경되네요.
테스트로 이를 해보았더니, 계정 업데이트도 잘 되고,
계정 업데이트 후에 transaction을 포함한 모든 기능이 잘 됩니다.

그런데 이해가 안되는 부분이 있습니다.

AccountKeyLegacy는 address와 private key 로 구성되고,
AccountKeyPublic 는 address와 별도로 키 쌍(public key, private key)을 생성하는 것으로 알고 있습니다.

계정 업데이트를 하면 AccountKeyLegacy의 private key는 더 이상 효용이 없는 것이 되고, 새로 업데이트된
AccountKeyPublic의 public key, private key 만 유효하고, 따라서 계정 업데이트 후에는 AccountKeyPublic 의 private key 를 사용해야 될 것 같은데요.

그런데, 실제 계정 업데이트 후에 AccountKeyLegacy의 private key로 KlaytnScope에서 계정 정보 접근이 여전히 가능하구요.
AccountKeyPublic은 public key 는 얻을 수 있지만, private key는 얻을 수 가 없네요.

제가 뭘 잘못 이해하고 있는건가요?

자답을 일부 할 수 있을 것 같습니다.

AccountKeyPublic으로 전환하는 경우, keyId 속성에 private key가 포함되어 있는 것 같습니다.
keyId 값이 krn:privateKey 형식으로 되어 있는 것 같습니다.
맞나요?

그런데 이 privateKey값으로 KlaytnScope에서 지갑 정보를 조회해보면, 새로운 지갑 그러니까 지난 이력이 전혀없는 새로운 지갑으로 인식하는 것 같습니다. 결과는 나오는데, 그 내역은 기존 주소의 지갑 내역이 아닌, 완전히 새로운 지갑 내역이 나옵니다. 심지어 주소 정보도 다른 주소로 나오네요?

뭔가 제가 잘못알고 있는 느낌이네요.