这是我的previous post的延续。我已经能够调用内置端点进行Corda附件上传,但是我不确定如何-
1)该文件上传到哪里(如果我想将其存储在某个特定位置该怎么办)?
和
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)