NetworkParameters 中设置的 maxTransactionSize 是不是包含附件?
Posted
技术标签:
【中文标题】NetworkParameters 中设置的 maxTransactionSize 是不是包含附件?【英文标题】:Does the maxTransactionSize set in the NetworkParameters include attachments?NetworkParameters 中设置的 maxTransactionSize 是否包含附件? 【发布时间】:2019-05-16 00:16:15 【问题描述】:NetworkParameters中设置的maxTransactionSize是否包含附件?
我需要发送一个大文件作为附件,我想确保它小于网络参数强制执行的 maxTransactionSize。
【问题讨论】:
【参考方案1】:maxTransactionSize 是否在计算时包含附件。
如果你想自己看一下,计算在 - WireTransaction.checkTransactionSize:https://github.com/corda/corda/blob/master/core/src/main/kotlin/net/corda/core/transactions/WireTransaction.kt
不幸的是,maxTransactionSize 暂时被硬编码为 10mb 秒:
@property maxMessageSize This is currently ignored. However, it will be wired up in a future release.
这是一个有趣的实现,因为文件不是在初始事务中发送的。事实上,交易本身只包含文件的哈希值。文件仅在需要时发送到请求节点。
尽管如此,较大的 maxTransactionSize 的问题是所有节点都必须将整个文件读入 RAM,这将导致某些节点在 RAM 不足时无法验证大量事务。
正在对文件进行分块并启用任意大小的附件!
【讨论】:
以上是关于NetworkParameters 中设置的 maxTransactionSize 是不是包含附件?的主要内容,如果未能解决你的问题,请参考以下文章
在 WebSocketServlet (Jetty WebSockets) 中访问在 HttpServlet 中设置的会话属性