Транзакция, вызывающая другую транзакцию в Hyperledger Composer

#transactions #hyperledger-fabric #hyperledger-composer

#транзакции #hyperledger-fabric #hyperledger-composer

Вопрос:

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

Я пытаюсь реализовать двойной аукцион, на котором производители энергии и потребители энергии могут совершать bids (покупать определенное количество энергии по определенной цене) и asks (предлагать определенное количество энергии по определенной цене). Предполагается, что аукцион очищает рынок каждые X минут, и в настоящее время мне интересно, как должна быть вызвана clear_market транзакция. В идеале, нет центрального органа, вызывающего ее, когда пришло время, но некоторый код автоматически выполняется «по цепочке» по истечении времени аукциона. Однако в настоящее время я не вижу, как это реализовать.

Моя первоначальная идея заключалась в том, что когда участник совершает bid другую ask транзакцию, он сначала проверяет, существует ли новый период аукциона, и если да, вызывает clear_market транзакцию для предыдущего периода аукциона. Но, насколько я понимаю выполнение транзакции, если транзакция выполняется внутри другой транзакции, вызванная транзакция не будет отображаться в реестре транзакций. Однако было бы неплохо иметь трассировку этой транзакции, поскольку она возвращает рыночную клиринговую цену и обновляет балансы монет производителей / потребителей.

Вы видите решение? Заранее спасибо!

Ответ №1:

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

Возвращаясь к вашему вопросу: в принципе, можно разрешить chaincode вызывать другой chaincode (когда он находится на том же канале), но это не рекомендуется. Что бы я хотел предложить вам, так это взглянуть на события отправки и подписки. Надеюсь, это поможет вашей проблеме!

Комментарии:

1. спасибо за ваш ответ! Поскольку язык моделирования Composer использует этот термин transaction , я просто принял его. Но вы правы, мне было интересно, может ли chaincode вызывать другой chaincode. Почему это не рекомендуется? Я знаю о событиях, я просто надеялся найти элегантный способ автоматического выполнения моего clear_market цепного кода каждые X минут.

2. Возможно, было немного преувеличено «Не рекомендуется». Я был в такой же ситуации, желая отреагировать на sth при вызове определенной функции из chaincode. После того, как я узнал об отправке событий по цепочке и подписке на них вне цепочки, это стало идеальным решением для упрощения обработки и автоматизации с точки зрения обзора и идентификации пользователя. Существует специальная функция InvokeChaincode для выполнения того, что вы просили, но не зная точного варианта использования, я не знаю, служит ли это вашей цели в конечном итоге. Я просто могу порекомендовать вам взглянуть на обработку событий и еще раз продумать свой вариант использования

3. Хорошо, спасибо … Я сделаю это и, возможно, найду лучший способ справиться с ситуацией.