Corda自定义文件上传端点

时间:2018-07-03 08:43:09

标签: java corda

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

1)该文件上传到哪里(如果我想将其存储在某个特定位置该怎么办)?

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

我想我们需要为它们定制终结点,以便我可以将文件上传到给定位置,然后在事务中传递附件(及其哈希码)。

请协助。

2 个答案:

答案 0 :(得分:0)

1)附件存储在节点数据库NODE_ATTACHMENTS表中。您无法指定自定义位置。

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 :(得分:0)

-1点-致谢。

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

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

  

java.lang.IllegalArgumentException:包含以下非法字符:   hexBinary:   5C30D5778896BB83A0AB90CA2BE43540DCCE7396EECDE765471971CF0F4165DA在   javax.xml.bind.DatatypeConverterImpl.parseHexBinary(DatatypeConverterImpl.java:451)

     在

  javax.xml.bind.DatatypeConverter.parseHexBinary(DatatypeConverter.java:357)     在net.corda.core.utilities.ByteArrays.parseAsHex(ByteArrays.kt:137)     在net.corda.core.crypto.SecureHash $ Companion.parse(SecureHash.kt:30)     在net.corda.core.crypto.SecureHash.parse(SecureHash.kt)