长期以来,Liquid 社区一直要求推出更轻量级的 Elements 节点客户端,以便更好地兼容廉价的现成 DIY 硬件。Elements 21.1.1通过优化 Liquid 的块头文件开始兑现这一承诺,我们计划在未来的版本中进一步优化节点效率。 在 21.1.1 中,内部基准测试表明,运行liquidv1 时,内存使用量减少了 50% 以上。 通过削减内存中保留的一些较大的标头字段,我们能够减少开销。有了这些新的优化措施,我们相信用户现在只需使用比 8GB Raspberry Pi 更小的功率,就能同时利用整个比特币堆。
此外,Elements 22.1.1 还包含维护更新和小修复,包括
- 更正 getsidechaininfo RPC 和 testproposedblock 的帮助信息
- 日志中不明显的主链 RPC 字段
- 允许部署带有付费验证脚本哈希(P2WSH)挂接插件的 Regtest 网络
- 修正块在标头前面时的下溢问题
团队还通过元素 Qt 对资产做了一些修改,包括使 "使用可用余额 "保持选定的资产,而不是默认返回 L-BTC。
要深入了解该版本的细节,请查看完整的更新日志,并在 Build On L2 (BOL2) 社区的开发者页面上与我们联系,告诉我们您喜欢什么或我们可以改进什么。
优化元素(全靠标题)
我们希望进一步解释元素 21.1.1 中减少内存开销的优化措施。
作为从 Bitcoin Core 继承而来的行为的一部分,元素中的所有区块头(区块元数据)都一直保存在内存中。在比特币中,这些标头相对较小,因此影响不大,但在元素中,由于一分钟区块时间、DynaFed 和区块签名信息的速度更快,标头要大得多。目前,Liquid 区块链(liquidv1)包含的区块数量大约是比特币的 3 倍。
在新的 trim_headers 参数下(参见 PR #1190),我们删除了一些较大的头字段,以减少总体内存开销,但只有在足够的区块时间过去后才会删除,因为不太可能需要这些头字段。这在 IBD(初始区块下载)期间有特别的效果,因为通常情况下(比特币和非 trim_headers 模式),头文件和区块是独立下载的,唯一的要求是头文件先于区块下载,以便区块到达时可以进行验证;这在 trim_headers 模式下并不是一个真正的选择,因为要么 a) 你进行了修剪,然后无法验证区块,要么 b) 你没有进行修剪,使用的内存和以前一样多。我们的解决方案是让头文件和数据块的下载更加 "同步",这意味着头文件不能像以前那样比数据块领先太多。
通过从保存在内存中的标头中删除一些不需要的字段,我们得以减少开销。不过,磁盘上的数据仍保持不变,用户可以在有无参数之间自由切换。
加入 BOL2 并申请新功能
元素平台仍然是一个免费的开源下载平台,任何人都可以在比特币之上建立自己的侧链解决方案。自首次发布以来,我们增加了新的操作码和功能,如保密交易和发行资产。其中一些对 Elements 的升级甚至已经在比特币上实现,包括 OP_CSV 和隔离见证(SegWit)。下一代智能合约语言 Simplicity 将于今年晚些时候在 Liquid 上发布,这也是比特币未来可能的另一种升级。
我们希望延续这一传统,并欢迎比特币社区就新的操作码和功能向 Liquid 提供任何反馈意见。Build On L2 (BOL2) 社区平台是联系工程团队并与其他 Liquid 高级用户讨论新想法和项目的最佳途径。
今天晚些时候,Liquid 工程经理 Pablo Greco 将在 BOL2 上主持一场现场访谈,回答社区对 22.1.1 版本的任何问题。
我们期待着您的提问和交流!