这个问题是基于我尝试将示例“易腐烂的网络”(https://github.com/hyperledger/composer-sample-networks/tree/master/packages/perishable-network)应用于我的工作。
假设我有一个名为ShippingContract的超级分类帐作曲家资产。现在,我想记录此资产中的合同创建时间(例如,调用createContract()函数时)。我该如何实现?我使用的是在链码中设置的DateTime成员。
一些讨论此问题的文章/帖子(有关SO本身的一些信息)表明,我们不应通过链码将随机/当前时间存储在DateTime对象中,因为在共识期间,每个认可/提交节点将得出不同的值,并且导致交易失败!
易腐烂网络示例使用DateTime成员变量,但使用setupDemo事务代码本身中的setupdemo事务时间戳记值来设置它!
const tomorrow = setupDemo.timestamp;
tomorrow.setDate(tomorrow.getDate() + 1);
contract.arrivalDateTime = tomorrow;
第一个问题:如何在同一笔交易中引用交易时间戳?背书人第一次背书交易时会设置此时间戳吗?
第二个问题: 我在想,代替使用DateTime成员变量,最好使用String变量并将其设置为new Date()。toString()(Javascript函数),然后将其作为参数传递给事务处理器函数(而不是在函数中运行时进行计算)。这样,由于我传递的是固定值,而不是让链码动态地计算它,所以我希望以共识的方式克服所有问题。
这是一个好方法吗?有什么问题吗?还有更好的方法吗?