让我们考虑一个事务生命周期的例子,其中智能契约使用Oracle获取外部数据,ETH/美元价格提要实时更改。
发布于 2020-10-18 16:18:26
@ stackexchange的Patrick为我的问题提供了一个全面的答案,参见https://ethereum.stackexchange.com/a/89451/64282
发布于 2020-10-17 14:10:41
首先,当对表使用20c中的块链选项时,插入的新行将通过从上一个插入行计算新的chainvalue来链接。这些内容存储在隐藏的列中,可以提取,但不能通过更新进行更改。刚删除后,确定的时间后插入。现在转到事务处理:默认情况下,Oracle Db被读取、提交并使用分配给每个ddl的SCN,执行dml。这意味着,当您插入一行时,就会立即计算chainvalue -这意味着,在开采时,ETH/美元汇率。现在您可以做一个技巧:(1)使用一个名为txscn的colum,它存储当前的SCN和txts类型的DATimestamp和一个序列计数。当您的验证过程返回时,您将插入一个新行,该行将使用ETH/美元汇率、SCN (1)和当前TIMestamp创建一个新的chainvalue。这将导致用于验证的一对行中的每一个TX --如果进程未返回,则只写入初始行--或者您避免编写第二行,因为验证需要一定的时间。我假设Blockchain的REST也是这样做的,因为它允许等待完成的时间和TX id。当我正确地撤销文档时,一种“闪回”并不存在。
https://stackoverflow.com/questions/64395188
复制相似问题