Page 392 - 《软件学报》2025年第8期
P. 392
张子龙 等: 基于原生链的跨 Rollup 机制研究 3815
2.4.3.2 数据压缩形式
与传统的 gzip 等数据压缩协议不同, 基于索引表方案的将长字段映射成短索引的方式, 并非通过长字段本身
的重复性实现数据压缩, 而是利用该字段在未来有多次使用的需求的前提下减少开销, 这一点使得该方案具有较
高的灵活性和广泛的适用性. 对于可压缩的字段, 只要可以确认该字段的相同内容在未来有可能被重复调用, 那么
就可以进入索引表的压缩, 只需要保证映射后的短索引之间不发生冲突即可. 本文提出了几种可以进行有效数据
压缩的协议, 并对其进行了使用场景进行了简单分析.
(1) 基于序号的地址压缩: 对于 Rollup 内的地址进行顺序编号, 然后根据这些编号构建短索引, 作为完整地址
的索引. 通过这种方式, 本文能够在保持数据完整性的前提下, 显著减小地址的存储和传输成本. 这个方法的好处
在于在 Rollup 内可发生交易的地址在 Rollup 节点内本身需要提前储存进入地址集合, 只有在地址集合内的地址
才会被承认交易的有效性. 只需要按照进入地址集合内的顺序编号, 将序号作为压缩后的地址, 作为短索引存储在
索引表中, 那么地址的映射关系必然不会产生冲突.
(2) 基于长字符串的合约内容压缩: 在智能合约 calldata 的参数中往往包含较长的字符串. 对于这类长字符串,
可以选择将长字符串的合约内容压缩通过短哈希进行压缩, 以提高存储和传输效率. 以非同质化代币 (NFT) 为例, 其
铸造过程中的智能合约通常会包含一些关于 NFT 存储图片的 URL 信息. 这些 URL 具有较高的相似性, 通常是在一
个基础站点下进行存储. 因此, 可以将这些 URL 的公共部分提取出来作为基础站点, 进而实现对原始字符串的压缩.
通过这种方法, 可以将合约中原本冗长的字符串进行有效压缩, 减少存储和传输过程中的数据量, 提高整体效率.
(3) 基于标准化模板的参数压缩: 在处理多参数交易的场景中可以使用该方法. 该方法的核心思想是在多个交
易的参数大致相似的情况下, 利用一个基础化模板来表示这些相似的参数, 从而实现压缩数据的目标. 在此方法的
实现过程中, 需要对基础化模板进行编号, 并利用序号散列标注来实现模板与原始参数之间的映射关系. 首先, 针
对合约中 calldata 的多个参数, 通过对参数进行分析, 可以找到具有相似特征的参数簇. 这些参数簇可以用于构建
基础化模板. 基础化模板的设计应当充分考虑参数的分布特点, 以及参数之间的相关性, 从而实现对数据特征的精
确描述. 接下来, 在基础化模板的基础上, 需要对有编号的参数形态进行修改. 这意味着需要根据原始参数与基础
化模板之间的差异, 对模板进行适当调整. 在模板构建和参数调整的过程中, 需要为基础化模板赋予唯一的序号,
并通过散列标注的方法, 实现模板与原始参数之间的映射关系. 序号散列标注可以采用哈希函数或其他散列算法,
将原始参数映射到相应的模板序号上. 当需要恢复原始参数时, 只需根据序号在索引表中找到对应的基础化模板,
并根据参数差异进行逆向调整, 即可实现数据的解压缩.
2.5 小 结
本节介绍了跨 Rollup 交易及其基本模型, 然后介绍了本文提出的跨 Rollup 交易的基本流程, 并采用批量化的
方案来减少平均单笔交易的链上资源开销. 对于链上计算开销, 使用基于零知识证明的验证策略来验证跨 Rollup
交易的有效性. 对于链上存储开销, 使用具有基于索引表的数据压缩链上存储方案.
3 聚合规模调整算法
在第 2 节中, 本文讨论了采用批量化的方案来减少单笔交易平均的链上资源的开销, 从而提高系统的整体吞
吐量. 然而, 从实际应用的角度来看, 批量化会增加交易时延, 进而给系统带来风险. 为了解决交易聚合化的问题,
本节提出一种能够动态均衡控制单次聚合规模的算法, 以便系统在时延和链上资源消耗上达到一定的平衡.
3.1 聚合化问题描述
本节所讨论的交易聚合化是指, 在发送方的 Rollup 节点接收到接收方交易 TX receiver 时需要等待交易达到一个
预期的聚合化规模, 然后再将达到成批的交易使用零知识证明电路中生成证明, 并将交易链上存储. 理论上, 对于
零知识证明的生成, 单批次聚合规模越大, 每笔交易的平均验证计算开销越小. 因为在单批次零知识证明的过程
中, 总体验证复杂度几乎不会随着聚合化规模的增加而增长. 聚合规模的增加对链上存储开销影响不大. 链上存储
开销的节省主要来自于字符串的高频调用, 只要单批聚合规模不超过 blob 类交易附属大小的最大上限, 聚合规模

