如何从SignedTransaction到LedgerTransaction“解决”交易?

时间:2019-03-05 11:38:11

标签: corda

我在Corda文档中发现了这一点: “但是,SignedTransaction将其输入保存为StateRef实例,并将其附件保存为SecureHash实例,它们没有提供足够的信息来正确验证交易的内容。我们首先需要解析 StateState和SecureHash实例到实际的ContractState和Attachment实例,我们可以对其进行检查。

我们通过使用ServiceHub将SignedTransaction转换为LedgerTransaction来实现这一目标。”

“解决”的真正含义是什么?对我来说,这是一个抽象概念,因为哈希是一种单向函数。 ServiceHub如何将SignedTransaction转换为LedgerTransaction?

1 个答案:

答案 0 :(得分:0)

Counter({('a', 'b', 'c'): 2, ('a', 'A', 'b'): 1, ('B', 'c', 'C'): 1}) 由签名和数据组成。数据的格式为SignedTransaction(TxBuilder转换为Wire Tx,它很轻巧,并且包含所有所有输入和引用的WireTransaciton,因为它是通过电线发送的,所以很轻)。

现在,一旦您拥有SignedTx,就可以通过Artemis通过电汇将其发送到交易对手。 由于我们正在发送stateref,因此需要将其解析为stateRef,以便交易对手可以看到参考数据,交易对手也可以通过解析和检查依赖性来验证交易的完整性。

这是在StateAndRefSendTransactionFlow的帮助下完成的。所有的依赖关系都在这里解决,例如。向交易对手索要附件,交易,参数并进行记录。现在可以轻松将其转换为分类帐Tx,即ReceiveTransactionFlow转换为StateRef,secureHash转换为StateAndRef等。