Corda 自定义文件上传端点

Corda custom file upload endpoint

这是我 的延续。我已经能够为 Corda 附件上传调用内置端点,但我不确定如何 -

1) 这个文件上传到哪里了(如果我想把它存储在某个特定的位置怎么办)?

2) 如何将此附件添加到事务中以便其他节点可以使用它?

我想我们需要为这些自定义端点,以便我可以将文件上传到给定位置,然后在交易中传递附件(及其哈希码)。

请协助。

1) 附件存储在节点的数据库中,在NODE_ATTACHMENTS table。您不能指定自定义位置。

2) 您通过哈希向交易添加附件:

@InitiatingFlow
@StartableByRPC
class AddAttachmentFlow(private val attachmentHashString: String) : FlowLogic<SignedTransaction>() {

    @Suspendable
    override fun call(): SignedTransaction {
        val notary: Party = TODO("Pick a notary.")

        val attachmentHash = SecureHash.parse(attachmentHashString)

        val txBuilder = TransactionBuilder(notary)
        txBuilder.addAttachment(attachmentHash)

        TODO("Finish building transaction and gathering required signatures.")
    }
}

关于点 -1 - 注意到谢谢。

第 2 点 - 这就是我正在尝试的 - Zip 文件已成功上传,我可以使用 - 下载 http://localhost:10010/attachments/5C30D5778896BB83A0AB90CA2BE43540DCCE7396EECDE765471971CF0F4165DA

但是当调用 SecureHash secureHash = SecureHash.parse(hash); 它开始抛出以下错误

 java.lang.IllegalArgumentException: contains illegal character for
 hexBinary:
 5C30D5778896BB83A0AB90CA2BE43540DCCE7396EECDE765471971CF0F4165DA 
at
 javax.xml.bind.DatatypeConverterImpl.parseHexBinary(DatatypeConverterImpl.java:451)
    
at
 javax.xml.bind.DatatypeConverter.parseHexBinary(DatatypeConverter.java:357)
    at net.corda.core.utilities.ByteArrays.parseAsHex(ByteArrays.kt:137)
    at net.corda.core.crypto.SecureHash$Companion.parse(SecureHash.kt:30)
    at net.corda.core.crypto.SecureHash.parse(SecureHash.kt)