Corda:Corda如何处理Code中的附件传输?

时间:2019-06-25 17:32:38

标签: corda

在阅读附件文档时,我看到“(附件)这些文件是在需要时从发送事务的节点自动请求的,并在本地缓存,因此在再次遇到它们时不会再请求它们。”

有人可以通过解释如何帮助我吗?

如果节点知道附件的哈希,它可以只向上传它的原始节点请求附件?

它实际上如何“向发送给他们的发件人请求”。知道哈希的任何节点都可以请求附件吗?

科尔达账本松弛问题:http://slack.corda.net/

1 个答案:

答案 0 :(得分:1)

事务包含附件的哈希。接收节点检查其保管库中的哈希值。如果它不存在,它将向发送者发送请求。他们将其存储在自己的数据库中。如果哈希再次包含在交易中,则会从其自己的保管库中加载

查看FetchAttachmentsFlow的代码

/**
 * Given a set of hashes either loads from local storage or requests them from the other peer. Downloaded
 * attachments are saved to local storage automatically.
 */
class FetchAttachmentsFlow(requests: Set<SecureHash>,
                           otherSide: FlowSession) : FetchDataFlow<Attachment, ByteArray>(requests, otherSide, DataType.ATTACHMENT)

以下是链接:https://github.com/corda/corda/blob/release/4.1/core/src/main/kotlin/net/corda/core/internal/FetchDataFlow.kt#L148