Hyperledger Fabric Timed Сделки / События - PullRequest
0 голосов
/ 08 октября 2018

Насколько мне известно, в Hyperledger Fabric нет способа выполнять синхронизированные транзакции.

Рассмотрим вариант использования на примере мрамора.Скажем, я хочу передать мрамор через 600 секунд после его получения.Предоставляет ли мне в любом случае Fabric SDK для получения метки времени события Unix, когда я получил свой мрамор, и затем отправляю другую транзакцию в очередь, которая произойдет ровно через 600 секунд, вычисляя метку времени + 600?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Нет, нет способа автоматизировать синхронизированную транзакцию из кода цепочки, и было бы плохой практикой пытаться обработать ее там.Если вы попытаетесь создать временную метку из цепного кода, гарантируется, что все равноправные узлы, обрабатывающие предложение по транзакции, будут возвращать разные значения, поскольку не все они обрабатывают предложение в одном и том же точном экземпляре.Поскольку наборы результатов будут возвращать недетерминированные, транзакция всегда будет неудачной, когда она войдет в фазу проверки.Если вы попытаетесь использовать stub.GetTxTimestamp(), вы вернете только временную метку, которую отправил сам клиент *1003*, согласно документам .

Лучший способ сделать этоэто с чистым кодом SDK.После получения необходимых предложений по транзакции и отправки транзакции для заказа прослушайте событие подтверждения транзакции.

Получив уведомление о подтверждении транзакции, вы можете поставить в очередь другую транзакцию для отправки подтверждения и подтверждения через 600 секунд.Специфика того, как будет отличаться от SDK до SDK, но все уведомления поддержки SDK о принятии транзакции.

0 голосов
/ 09 октября 2018

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

Я не уверен, как сделать то же самое только с кодом на стороне SDK / клиента.

Если вы хотите что-то написать в логике обработки транзакций, есть метод ChaincodeStubInterface.GetTxTimestamp () в github.com / hyperledger / fabric / core / chaincode/ shim package, чтобы получить время обработки транзакции Fabric.

Вы можете вернуть то же самое в свой SDK, а затем в свою внешнюю вызывающую программу.А затем вычислите +600 секунд и отправьте следующую транзакцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...