Когда ваш клиент отправляет запрос одному из одноранговых узлов, одноранговый экземпляр проверяет, установлен ли на нем запрошенный цепной код (CC). Если CC не установлен : очевидно, вы получите сообщение об ошибке.
Если CC установлен : узел проверяет, запущен ли уже выделенный контейнер для данная CC и соответствующая версия. Если контейнер запущен , одноранговый узел отправляет запрос транзакции этому экземпляру CC и возвращает ответ вашему клиенту после подписания транзакции. Подписание гарантирует, что ответ действительно отправлен этим партнером.
Если контейнер не запущен: Создается изображение docker и запускается этот экземпляр (docker контейнер). Новое изображение будет основано на одном из изображений гиперссылки. т.е. если ваш CC равен GO, тогда будет использоваться hyperledger/baseos
, что очень просто c linux os. Это новое изображение содержит CC двоичные данные и МЕТА-ДАННЫЕ.
Этот одноранговый экземпляр использует сервер docker базовой (вашей) машины для выполнения всех этих операций. Вот почему нам нужно передать /var/run:/host/var/run
в сопоставление томов и CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
в переменные среды.
После запуска контейнера CC он подключается к своему родительскому одноранговому узлу, который определяется с помощью CORE_PEER_CHAINCODEADDRESS
атрибут. Сверстник диктует дочернему элементу (возможно, во время создания образа) использовать этот адрес, поэтому они подчиняются. Одноранговый узел определяет свой собственный URL для прослушивания с атрибутом CORE_PEER_CHAINCODELISTENADDRESS
.
О вашем последнем вопросе; связь осуществляется с gRP C между узлами, а также с клиентами. Если TLS включен, значит, это безопасная связь. Отправной точкой для заказчиков, чтобы узнать о партнерах, и одноранговых узлов, которые знают о партнерах других организаций, является определение узловых одноранговых узлов, определенных во время создания канала. Служба обнаружения работает на одноранговых узлах, поэтому они могут поддерживать макет сети, близкий к реальному времени. Служба обнаружения также предоставляет идентификационные данные одноранговых узлов, что позволяет клиентам обнаруживать одноранговые узлы других организаций, когда политика поддержки требует политики поддержки нескольких организаций (т.е. если политика выглядит как AND(Org1MSP.member, Org2MSP.member)
).