创建新交易时,我可以引用未提交状态作为输入状态吗?
例如 将颜色属性设置为“蓝色”的总帐发出新的绘画状态。 在所有各方签字之前(因此绘画状态保持未提交),我发出了一个新事务,将未提交状态用作输入,将新绘画状态用作输出(将绘画颜色属性设置为“红色”)。
答案 0 :(得分:0)
在使用StateRef
的事务中引用输入,其定义如下:
data class StateRef(val txhash: SecureHash, val index: Int)
位置:
txhash
是创建输入状态的事务的哈希值index
是输入状态在创建它的事务的输出中的索引如果要在提交第一个事务之前创建第二个使用输入状态的事务,则可以执行以下操作:
StateRef
StateRef
作为第二笔交易的输入您甚至可以通过这种方式构建整个交易链。
但是...
在提交第一笔交易之前,执行第二笔交易时,您将看到奇怪的行为。例如:
verify
进行第二笔交易,则您的节点将尝试使用该节点的保管库将所有输入的StateRef
转换为实际状态。这将失败,因为您尚未存储第一笔交易因此,如果您以这种方式构建事务链而没有在创建状态时提交每个状态,则必须非常注意以后提交事务的顺序以及在第二,第三,等等。