서비스체인에서 klay.sendTransaction 사용시 오류

안녕하세요

테스트 진행과정에서 몇가지 문의 드립니다.

[테스트 환경]
-Baobab 테스트넷
-간략한 설정을 위해서 SCN을 4개가 아닌 1개만 사용

[테스트 버전]
-ken-v1.8.2-0-darwin-10.10-amd64.tar.gz
-homi-v1.8.2-0-darwin-10.10-amd64.tar.gz
-kscn-v1.8.2-0-darwin-10.10-amd64.tar.gz

현재 Baobab에서 서비스체인의 “Cross-Chain Value Transfer” 테스트 하고 있습니다.
설정 과정중에 kaikas의 Baobab의 클레이를 parentOperator로 전달했고 클레이튼스코프에서 확인이 가능했습니다.
그런데 메뉴얼의 두번째 설정인 임포트한 테스트 계정에서 childOperator로 클레이가 전달되지 않습니다.

subbridge.parentOperator
“0x9c2129632130d30d0abcd694c35de8da685fd283”

subbridge.childOperator
“0x59595a46ba92366288ad4d82cc8d7e972bc1be66”

klay.getBalance(“deb0ff0f041c330363e5e146ecedf3e685128f75”);
10000000000

personal.unlockAccount(“deb0ff0f041c330363e5e146ecedf3e685128f75”)
Unlock account deb0ff0f041c330363e5e146ecedf3e685128f75
Passphrase:
true
klay.sendTransaction({from:“deb0ff0f041c330363e5e146ecedf3e685128f75”, to:subbridge.childOperator, value: web3.toPeb(1000, “KLAY”)})
Error: insufficient funds of the sender for value
at web3.js:3278:20
at web3.js:6805:15
at web3.js:5216:36
at :1:1

[질문1]
-테스트 계정에는 충분한 클레이가 존재하는데 subbridge.childOperator로 클레이가 전달되지 않는 이유가 궁금합니다.
-혹시나 해서 personal.newAccount로 계정을 1개더 생성하여 임포트한 계정에서 새로 생성한 계정으로 클레이를 전달해도 동일한 오류 메세지가 출력됩니다.

[질문2]
-kaikas의 baobab에서 parentOperator로 전달한 클레이는 클레이튼스코프하고 SCN의 subbridge.parentOperatorBalance로 확인이 가능하지만 klay.getBalance로는 0이 나오는데 이유가 있을까요?

subbridge.parentOperatorBalance
66925000000000000
klay.getBalance(“0x9c2129632130d30d0abcd694c35de8da685fd283”);
0

[질문3]
-임포트한 테스트 계정(deb0ff0f041c330363e5e146ecedf3e685128f75)은 klay.getBalance하면 10000000000이라고 나오는데 앵커링을 진행해도 클레이튼스코프에서 klay잔액이 0으로 확인되는데 이유가 있을까요?

klay.getBalance(“deb0ff0f041c330363e5e146ecedf3e685128f75”);
10000000000

답변좀 부탁드립니다.

감사합니다.

안녕하세요.

우선 서비스체인과 클레이튼 테스트넷 또는 메인넷은 별개의 체인임을 알려드립니다.

질문1
klay.getBalance에 대한 리턴값은 단위가 peb입니다. 질문자분께서 sendTransaction을 하실 때에 value에 toPeb을 통해 1000 Klay에 해당하는 peb 값을 넣으신 것처럼 해당 API의 리턴값도 단위가 peb이며 Klay로 환산하면 1 Klay도 되지 않는 값입니다. 따라서 충분한 클레이가 존재하지 않은 상태이며 잔액이 부족하다는 에러와 함께 클레이가 전달되지 않는 것입니다.

질문2
subbridge.parentOperatorBalance는 parent 체인(클레이튼 메인넷 또는 테스트넷)에서 parentOperator의 주소에 해당하는 잔액을 조회한 결과를 돌려줍니다. klay.getBalance를 서비스체인의 노드에서 실행하셨다면 서비스체인에서 parentOperator의 주소에 해당하는 잔액을 조회한 결과를 돌려줍니다. 두 결과가 다른 이유는 앞서 말씀드린 것과 같이 서비스체인과 클레이튼 테스트넷은 별개의 체인이기 때문입니다.

질문3
두 잔액이 다른 이유는 질문2의 이유와 유사합니다. 두 결과가 다른 이유는 서로 다른 두 체인에서 같은 주소에 대한 잔액을 조회했기 때문입니다. 서비스체인은 클레이튼 테스트넷과 별개의 체인이며 앵커링은 두 체인간의 데이터를 동기화하기 위한 개념이 아님을 알려드립니다. 앵커링은 정해진 주기마다 서비스체인의 블록 해시를 클레이튼 메인넷 또는 테스트넷에 저장하는 작업입니다.

서비스체인과 앵커링에 대한 개념은 클레이튼 문서를 참고해 주시기 바랍니다.

감사합니다.

3 Likes

안녕하세요.

전체적인 개념을 잡는데 많은 도움되었습니다.

답변해주셔서 감사합니다 ( _ _ )

1 Like

넵넵, 도움이 되었다면 다행입니다~
감사합니다.