Как вызвать функцию цепочки из себя для записи суб транзакций

Мы хотим вызвать одну из функций из самой цепочки кодов языка go. Причина для этого заключается в том, что мы хотим создать отдельные блоки транзакций для некоторых логик на основе потока.

Например, если у нас есть функция с именем "TransferFund" и внутри нее мы читаем сальдо двух человек (пусть это будет функция с именем "readBalance"). Мы хотим, чтобы было создано 3 блока: 1 дляTransferFund и 2 дляreadBalance.

1 ответ

Для вызова другого цепного кода внутри вашего цепного кода вы можете использовать

stub.InvokeChaincode(chaincodeName, queryArgs, channelName)

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

источник: https://github.com/hyperledger/fabric/blob/release/examples/chaincode/go/chaincode_example05/chaincode_example05.go#L90

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

Также не забудьте провести различие между блоками и транзакциями.

блок

Упорядоченный набор транзакций, который криптографически связан с предыдущим блоком (ами) в канале.

Сделка

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

http://hyperledger-fabric.readthedocs.io/en/release/glossary.html

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