Мы все знали Образец ткани Hyperledger, когда начали работать с HF, у меня есть вопрос для начала, когда я начал учиться. Чтобы развернуть тестовую сеть, а затем создать тестовый канал, нам нужно выполнить несколько шагов, как показано ниже (я взял их из сценария createChannel.sh)
## Create channeltx
infoln "Generating channel create transaction '${CHANNEL_NAME}.tx'"
createChannelTx
## Create anchorpeertx
infoln "Generating anchor peer update transactions"
createAncorPeerTx
FABRIC_CFG_PATH=$PWD/../config/
## Create channel
infoln "Creating channel ${CHANNEL_NAME}"
createChannel
## Join all the peers to the channel
infoln "Join Org1 peers to the channel..."
joinChannel 1
infoln "Join Org2 peers to the channel..."
joinChannel 2
## Set the anchor peers for each org in the channel
infoln "Updating anchor peers for org1..."
updateAnchorPeers 1
infoln "Updating anchor peers for org2..."
updateAnchorPeers 2
successln "Channel successfully joined"
Я так обеспокоен, нам нужно сделать createChannelTx и createAncorPeerTx, затем createChannel и updateAnchorPeers, давайте посмотрим код инструмента configtxgen
updated := proto.Clone(original).(*cb.ConfigGroup)
originalOrg, ok := original.Groups[channelconfig.ApplicationGroupKey].Groups[asOrg]
if !ok {
return errors.Errorf("org with name '%s' does not exist in config", asOrg)
}
if _, ok = originalOrg.Values[channelconfig.AnchorPeersKey]; !ok {
return errors.Errorf("org '%s' does not have any anchor peers defined", asOrg)
}
delete(originalOrg.Values, channelconfig.AnchorPeersKey)
updt, err := update.Compute(&cb.Config{ChannelGroup: original}, &cb.Config{ChannelGroup: updated})
Что они сделали? Просто удалите AnchorPeer из исходной конфигурации и вычислите до и после, чтобы создать обновление, вернитесь к моему вопросу. Есть ли у нас какие-то особые проблемы, чтобы не генерировать якорный пир с каналом и отправлять их все по порядку один раз?
Дополнительная информация: Я использую ткань 2.2 LTS.
ткань-2.2/configtxgen В документе
-outputAnchorPeersUpdate
УСТАРЕЛ
Fabric-2.x ~ удалит outputANchorPeersUpdate исх: FAB-17427
В будущем следующий код будет изменен, чтобы отразить это в процессе configtxgen.
if_, ok = originalOrg.Values[channelconfig.AnchorPeersKey]; !ok {
return errors.Errorf("org'%s' does not have any anchor peers defined", asOrg)
}
delete(originalOrg.Values, channelconfig.AnchorPeersKey)
-outputAnchorPeersUpdate string
[DEPRECATED] Creates a config update to update an anchor peer (works only with the default channel creation, and only for the first update)
Опция УСТАРЕЛА. Вероятно с версии 2.x будет реализовано добавление в блок генезиса через файл configtx.yaml без выполнения обновления канала.
Во-вторых, ваше событие может обновить одноранговый узел перед одноранговым каналом присоединения.
В-третьих, я думаю, они поместили все в configtx.yaml, чтобы сэкономить время или что-то еще, я не знаю
Во-первых, «недостаточно было настроить узел привязки». На самом деле, извините, но я не изучал это подробно, пожалуйста, обратитесь к ссылке выше для получения подробной информации.
Во-вторых, часть, которая обновляется перед присоединением, предназначена для tx. Это выражается как после соединения, потому что созданная часть считает обновление, получив блок. Если у вас уже есть блок после создания, можно еще до присоединения.
1. Ссылка, которую вы упомянули, является еще одной проблемой. Наверное. Когда я отлаживаю код, Anchor обращается только к хосту и порту, не более того.
В-третьих, он был обновлен после продолжения в виде определения однорангового узла в configtx. В этом процессе процесс проверки конфигурации и жизненного цикла, который должен действительно работать, не являются гладкими. Процесс может быть на самом деле осмысленным, но его также можно считать бессмысленным. Если вы хорошо это исправите, кажется, что вы можете внести свой вклад в ткань.
да неужели? я проверю подробнее
Я также снова смотрю на код. Так рад обсудить с вами
Спасибо за ваше мнение. Когда я проверил, со мной что-то не так. ответ также был изменен, чтобы отразить это.
Спасибо, я проверил это еще раз, и я пытаюсь создать канал с одноранговым узлом один раз.
Я проверил код. Я не знаю почему, но кажется, что поставить якорный узел для первого создания не реализовано. Я отметил ваш ответ приемлемым. Но до сих пор не знаю, почему их предназначение. Это было несложно. Спасибо. Кстати, я клонировал репозиторий и кое-что изменил, теперь он работает так, как я ожидал.
Спасибо за ваш ответ, но «однако было недостаточно настроить узел привязки». какой пункт пропущен в конфиге.