Гиперледжер Ткань. Можно ли развернуть более одного цепного кода на одном и том же канале?
Можно ли развернуть два разных цепных кода на одном и том же канале в матрице Hyperledger?
5 ответов
Да. И возможно использовать один и тот же цепной код для двух или более каналов. Вы можете даже развернуть один и тот же цепной код на одном и том же канале, если используете другое имя.
При проверке структуры блока я нахожу в блоке поле "Chaincode Name" и полагаю, что:
- Один канал имеет одну бухгалтерскую книгу ( официальный документ)
- Один канал может иметь два или более цепных кодов
- Блок, сгенерированный другим цепочечным кодом (мы можем просто так думать), будет храниться в одной и той же книге.
- Поле 'Chaincode Name' в блоке будет отличать, из какого сгенерированного кода
Jworthington ответ правильный, но я хочу очистить некоторые вещи из комментариев.
- Один канал означает одну книгу. ( официальный документ)
- Каждый цепной код разделил "представление" в бухгалтерской книге (я представляю его, поскольку каждый ключ в базе данных имеет префикс имени цепного кода, и цепной код может обращаться только к определенным ключам с таким же префиксом, что и его имя).
- Вы можете вызвать чтение / запись второго цепного кода из первого, и это сделает только одну транзакцию блокчейна (при условии, что цепные коды находятся на одном канале / регистре, если нет, операция записи будет проигнорирована)
Не знаю, насколько сильно изменилось с годами, но делюсь информацией на основе версии 2.х.
- Ledger связан с каналом, а не с Chaincode. Даже у однорангового узла может быть реестр без установленного Chaincode. https://hyperledger-fabric.readthedocs.io/en/latest/peers/peers.html#multiple-ledgers
- P1 - равноправный
- L1 и L2 - бухгалтерские книги
- S1, S2 и S3 - это цепные коды.
- Не существует фиксированной связи между количеством реестров у однорангового узла и количеством цепных кодов, которые могут получить доступ к этому реестру. Пир может иметь много цепных кодов и множество реестров, доступных ему. https://hyperledger-fabric.readthedocs.io/en/latest/peers/peers.html#multiple-chaincodes
Да, мы можем развернуть несколько цепных кодов на одном канале с разными идентификаторами цепных кодов. У каждого чейнкода будет отдельный регистр в канале, мы можем рассматривать это как пространство имен. Один чейнкод не может напрямую читать / обновлять реестр другого канала.
Тем не менее, пакет прокладок Fabric предоставляет функцию "InvokeChaincode" для вызова другого цепного кода для чтения / обновления его реестра.
stub.InvokeChaincode("anotherCCName", chainCodeArgs, "channelName")