Как вызвать функцию цепочки из себя для записи суб транзакций
Мы хотим вызвать одну из функций из самой цепочки кодов языка go. Причина для этого заключается в том, что мы хотим создать отдельные блоки транзакций для некоторых логик на основе потока.
Например, если у нас есть функция с именем "TransferFund" и внутри нее мы читаем сальдо двух человек (пусть это будет функция с именем "readBalance"). Мы хотим, чтобы было создано 3 блока: 1 дляTransferFund и 2 дляreadBalance.
1 ответ
Для вызова другого цепного кода внутри вашего цепного кода вы можете использовать
stub.InvokeChaincode(chaincodeName, queryArgs, channelName)
где channelName
может быть пустым, если вы хотите вызвать цепной код в том же канале.
Тем не менее, я думаю, что вызов не добавит новую транзакцию, потому что вызов другого кода должен быть проверен, и вы можете использовать результат вызова для изменения данных в базе данных. Так что все закончится одной транзакцией.
Также не забудьте провести различие между блоками и транзакциями.
блок
Упорядоченный набор транзакций, который криптографически связан с предыдущим блоком (ами) в канале.
Сделка
Вызывать или создавать результаты, представленные для упорядочивания, проверки и принятия. Вызывает запросы на чтение / запись данных из книги. Instantiate - это запрос на запуск и инициализацию цепного кода на канале. Клиенты приложений собирают вызовы или создания экземпляров ответов от подтверждающих одноранговых узлов и упаковывают результаты и подтверждения в транзакцию, которая отправляется для упорядочивания, проверки и принятия.
http://hyperledger-fabric.readthedocs.io/en/release/glossary.html