#blockchain #corda
#блокчейн #corda
Вопрос:
В нашем проекте Corda у нас есть два узла: Node-A и Node-B. Учетная запись создается на узле A и совместно используется с узломB. С узла-A мы запросили общедоступный ключ, используя new RequestKeyForAccount(accountInfo)
. Node-B не знает об этом открытом ключе. Итак, чтобы синхронизировать открытые ключи, которые мы вызвали new SyncKeyMappingFlow(flowSession, Collections.singletonList(anonymousParty))
из узла-A. Мы также внедрили поток ответчика на Node-B, который вызывает new SyncKeyMappingFlowHandler(flowSession))
подпоток. Поток инициатора и ответчика работает нормально. При попытке просмотреть список открытых ключей, принадлежащих учетной записи на узле-B, используя accountService.accountKeys(accountInfo.getState().getData().getLinearId().getId()).toString())
, мы получаем пустой список. В идеале мы должны получать открытый ключ, который мы запрашивали на узле-A. Является ли это подходящим подходом для синхронизации открытых ключей? Предложите альтернативный подход, если это ошибочный подход.
Комментарии:
1. Перед синхронизацией сопоставления ключей; можете ли вы подтвердить, что узел-B действительно получил учетную запись, созданную на узле-A? Можете ли вы запросить его на Node-B? Также проверьте журналы ваших узлов и посмотрите, есть ли там какие-либо полезные сообщения.
2. Учетная запись предоставляется узлу-B сразу после создания учетной записи. Но, как упоминалось в приведенном ниже ответе, я получаю только учетные записи, созданные на узле-B (учетная запись, общая для узла-A, не возвращается как часть
accountservice.ouraccounts())
. Я проверил журналы узлов B и Node-A и не обнаружил ошибок.3.
ourAccounts()
возвращает только учетные записи, в которых текущим узлом является узелhost
; Узел-B не является хостом.
Ответ №1:
Согласно исходному коду, accountKey
будут возвращены только ключи, которые были сгенерированы на вызывающем узле.