Baobab 과의 앵커링 후 블록넘버가 올라가질 않습니다

안녕하세요. baobab 네트워크와 저희 kscn을 연결하여 앵커링 테스트 중인데요.
kscn 로그에서는 anchoring tx를 만들었는데

Generate an anchoring tx                  blockNum=10530 blockhash=0x7c826eb48320e5efe519e6572f9cf1d17796a1ba95215680069a42275cee88ff txCount=0 txHash=0x3d9a56df0abf1f2496e99eb9a0ae3dfb08c7d465d1e23c45565e2df3d69f4012

앵커링 블록넘버가 올라가질 않습니다.

subbridge.latestAnchoredBlockNumber
0

부모계정에 baobab faucet 해서 klay는 넣어놨구요.

subbridge.parentOperator
“0x91e4211fda3d2d5093a66e64ca4504af1d0d6dec”

subbridge.parentOperatorBalance
1000000000000000000

피어링도 되어 있습니다.

subbridge.peers
[{
caps: [“servicechain/1”],
id: “e89c8f43dcaf36fc2a918bc2b9683e8a298b5308760d29b3cbcc8997a91865527200c76c325a26cb934330bbc45efe9c5572f11222d6599d13acc9060c815d09”,
name: “1”,
networks: [{
inbound: false,
localAddress: “127.0.0.1:52008”,
nodeType: “cn”,
remoteAddress: “127.0.0.1:50505”,
static: true,
trusted: false
}],
protocols: {
servicechain: {
head: “0xa158646d478ffe0f012621178387017d6c075559e642e0ba53e00d38718aea6b”,
version: 1
}
}
}]

  • ken (baobab)

mainbridge.peers
[{
caps: [“servicechain/1”],
id: “64eb348fba7822fdec3cda0188d3643a1c4407e50d5e75d86f0dfa5e842e1e2b756c6038812f3f96b2b42542bd780d1cc034d9c19ca9fad472d5170a9c65628d”,
name: “0”,
networks: [{
inbound: true,
localAddress: “127.0.0.1:50505”,
nodeType: “cn”,
remoteAddress: “127.0.0.1:51703”,
static: false,
trusted: false
}],
protocols: {
servicechain: {
head: “0x63e1dc68332a751e0536143b827e25211190a90e78902086a67efb857e908c81”,
version: 1
}
}
}]

안녕하세요.

아래 내용들을 확인해주시면 원인파악에 도움이 될것 같습니다.

일단 해결을 하였는데요.
자동으로 생성된 parent_bridge_account 폴더에 있는 계정이 언락이 되지 않아서 그랬던 것 같습니다.

0x91E4211FDa3d2D5093A66e64CA4504af1d0d6Dec
UTC–2021-01-28T09-43-35.046912000Z–91e4211fda3d2d5093a66e64ca4504af1d0d6dec

  • 이렇게 2개의 파일이 있는데, 0x91… 이 파일은 텍스트파일인데 안에는 ‘egY(N$Zb$X]D)9n’ 이런식의 문구가 들어 있습니다.

  • 이게 키암호인 줄 알고 klay.ipc 에 연결해서 personal.unlockAccount(“0x91E4211FDa3d2D5093A66e64CA4504af1d0d6Dec”) 를 하고 ‘egY…’ 이 암호를 직접입력해도 언락이 되지 않았습니다.

personal.unlockAccount(“0x91E4211FDa3d2D5093A66e64CA4504af1d0d6Dec”)
Unlock account 0x91E4211FDa3d2D5093A66e64CA4504af1d0d6Dec
Passphrase:
Error: could not decrypt key with given passphrase

  • 제가 이전에 만들땐 이렇게 들어 있으면 자동으로 언락이 진행되는 것으로 알고 있어서,
    그냥 parent_bridge_account 폴더내의 키파일들을 모두 삭제하고
    노드를 재시작하여 자동으로 만들어진 다른 키 및 parentAddress에 klay를 지급하니
    정상적으로 동작하였습니다.

(일부 해결) UTC–…91e. 이 키파일을 keystore에 넣으니 unlock은 가능했습니다.

그래서, parent_bridge_account 폴더에서 기존 키파일을 삭제하고 다시 0x91E(암호파일)과 UTC–…91e…(키파일)을 넣고, kscnd를 stop/start 를 한 후에, 아래 명령을 쳐봤는데,

subbridge.parentOperator
“0xfc42042f862048b8dec480725e1696674b728be6”

키가 새로 생성되어 버렸습니다. 제가 직접 계정을 지정하는 방법은 없는건가요?
parentOperatorFeePayer를 지정하는 것은 지난번 문의에서 확인하였는데, parentOperator를 변경하는 방법은 무엇인가요?

안녕하세요.

서비스노드에서 subbridge를 활성화 하게 되면
자동으로 parent_bridge_account 폴더안에 keystore파일을 생성하고 passphrase파일도 주소명으로 생성하게 됩니다. 만약 keystore파일이 별도로 존재하고 있으면 주소명과 동일한 passphrase 파일을 찾아 해당 wallet을 unlock시도하며 passphrase 파일이 없으면 unlock을 하지 못하고 노드를 실행하게 됩니다.

노드 실행 이후에 수동으로 unlock을 위해서는 아래와 같이 unlock을 시키면 됩니다.

> subbridge.operators                      // operator의 lock상태확인
{
  childOperator: {
    address: "0x655892bfbdbb58ac668cdb5a4a74f453a3b790f4",
    chainID: 1000,
    gasPrice: null,
    isNonceSynced: true,
    isUnlocked: true,
    nonce: 0
  },
  parentOperator: {
    address: "0xa517af0fb82348b2b52bbf4dd1bd4e50d80bb182",
    chainID: 10000,
    gasPrice: 25000000000,
    isNonceSynced: true,
    isUnlocked: false,               // lock상태입니다.
    nonce: 57
  }
}
> subbridge.unlockParentOperator()               // unlock을 시도하며 아래에 passphrase를 입력합니다.
Unlock parent operator account
Passphrase:
null
> subbridge.operators
{
  childOperator: {
    address: "0x655892bfbdbb58ac668cdb5a4a74f453a3b790f4",
    chainID: 1000,
    gasPrice: null,
    isNonceSynced: true,
    isUnlocked: true,
    nonce: 0
  },
  parentOperator: {
    address: "0xa517af0fb82348b2b52bbf4dd1bd4e50d80bb182",
    chainID: 10000,
    gasPrice: 25000000000,
    isNonceSynced: true,
    isUnlocked: true,                 //// operator의 lock이 풀렸습니다.
    nonce: 57
  }
}

parent/child operator keystore는 일반 keystore와는 별도로 해당 위치에 저장을 하고 있습니다.
lock/unlock시에도 personal_XXX API가 아닌 subbridge_XXX API를 사용해야 합니다.

말씀하신데로 직접 계정을 지정하시려면 keystore파일을 생성하시고 그 파일을 해당 parent_bridge_account 폴더에 위치하시면 됩니다. 자동 unlock을 하고 싶으시면 passphrase 파일을 같은 자리에 주소를 파일명으로 해서 저장해놓으시면 됩니다.

감사합니다.

답변 감사합니다~

마지막 답변에서 parent_bridge_account 폴더에 키파일을 넣었는데도, 키 파일이 다시 생성되는 현상이 있습니다. 이건 왜 그런걸까요?

음 혹시 그 keyfile을 저에게 공유해주시겠어요? 비밀번호는 안주시더라도
그 파일만 가지고 테스트해서 새로운키파일이 왜 생기는 확인해보겠습니다.

ethan.kim@groundx.xyz로 메일 주십시요.