Гиперледжер Ткань. Можно ли развернуть более одного цепного кода на одном и том же канале?

Можно ли развернуть два разных цепных кода на одном и том же канале в матрице Hyperledger?

5 ответов

Решение

Да. И возможно использовать один и тот же цепной код для двух или более каналов. Вы можете даже развернуть один и тот же цепной код на одном и том же канале, если используете другое имя.

При проверке структуры блока я нахожу в блоке поле "Chaincode Name" и полагаю, что:

  • Один канал имеет одну бухгалтерскую книгу ( официальный документ)
  • Один канал может иметь два или более цепных кодов
  • Блок, сгенерированный другим цепочечным кодом (мы можем просто так думать), будет храниться в одной и той же книге.
  • Поле 'Chaincode Name' в блоке будет отличать, из какого сгенерированного кода

Jworthington ответ правильный, но я хочу очистить некоторые вещи из комментариев.

  • Один канал означает одну книгу. ( официальный документ)
  • Каждый цепной код разделил "представление" в бухгалтерской книге (я представляю его, поскольку каждый ключ в базе данных имеет префикс имени цепного кода, и цепной код может обращаться только к определенным ключам с таким же префиксом, что и его имя).
  • Вы можете вызвать чтение / запись второго цепного кода из первого, и это сделает только одну транзакцию блокчейна (при условии, что цепные коды находятся на одном канале / регистре, если нет, операция записи будет проигнорирована)

Не знаю, насколько сильно изменилось с годами, но делюсь информацией на основе версии 2.х.

  1. Ledger связан с каналом, а не с Chaincode. Даже у однорангового узла может быть реестр без установленного Chaincode. https://hyperledger-fabric.readthedocs.io/en/latest/peers/peers.html#multiple-ledgers
    • P1 - равноправный
    • L1 и L2 - бухгалтерские книги
    • S1, S2 и S3 - это цепные коды.

  1. Не существует фиксированной связи между количеством реестров у однорангового узла и количеством цепных кодов, которые могут получить доступ к этому реестру. Пир может иметь много цепных кодов и множество реестров, доступных ему. https://hyperledger-fabric.readthedocs.io/en/latest/peers/peers.html#multiple-chaincodes
    • P1 - равноправный
    • L1 и L2 - бухгалтерские книги
    • S1, S2 и S3 - это цепные коды.

Да, мы можем развернуть несколько цепных кодов на одном канале с разными идентификаторами цепных кодов. У каждого чейнкода будет отдельный регистр в канале, мы можем рассматривать это как пространство имен. Один чейнкод не может напрямую читать / обновлять реестр другого канала.

Тем не менее, пакет прокладок Fabric предоставляет функцию "InvokeChaincode" для вызова другого цепного кода для чтения / обновления его реестра.

stub.InvokeChaincode("anotherCCName", chainCodeArgs, "channelName")

Другие вопросы по тегам