Hyperledger Composer - хранилище DateTime в активе - PullRequest
0 голосов
/ 30 сентября 2018

Этот вопрос основан на моей попытке адаптировать образец 'скоропортящаяся сеть' (https://github.com/hyperledger/composer-sample-networks/tree/master/packages/perishable-network) для моей работы.

Предположим, у меня есть актив компилятора hyperledger, который называется ShippingContract. Теперь я хотел быхотел бы записать время создания контракта в этом активе (скажем, когда вызывается функция createContract ()). Как я могу этого добиться? Я использовал элемент DateTime, который был задан в коде цепи.

Несколько статей/ posts (некоторые о самом SO), которые говорят об этом, предполагают, что мы не должны хранить случайное / текущее время в объекте DateTime через цепной код, поскольку во время консенсуса каждый подтверждающий / фиксирующий узел будет иметь различное значение и приводить к неудаче транзакции!

В образце скоропортящейся сети используется переменная-член DateTime, но она задается с использованием значения метки времени транзакции setupdemo в самом коде транзакции setupDemo!

const tomorrow = setupDemo.timestamp;
    tomorrow.setDate(tomorrow.getDate() + 1);
    contract.arrivalDateTime = tomorrow;

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

Второй вопрос: я думал, что вместо переменной-члена DateTime, возможно, было бы лучше использовать переменную String и установить для нее новое Date (). toString ()(Функция Javascript), а затем передайте его в качестве параметра в функцию процессора транзакций (вместо вычисления в времени выполнения внутри функции).Таким образом, поскольку я передаю фиксированное значение вместо того, чтобы цепной код вычислял его динамически, я надеюсь преодолеть любые проблемы с консенсусом.

Это хороший подход?Есть ли в этом какие-либо проблемы?Есть ли лучший способ сделать это?

...