Page 390 - 《软件学报》2025年第8期
P. 390

张子龙 等: 基于原生链的跨       Rollup  机制研究                                               3813


                                                      TX receiver  内的字段在链上仅存储短索引, 而不保存完整的数据. 当
                 的较短索引存储在链上索引表中, 而接收方交易
                 接收方   Rollup  接收交易后, 可以自行读取索引表解析还原完整原文. 这样一来, 本文就能够在不占用过多链上资
                 源的前提下, 实现便于交易的同步.

                 2.4.2    交易数据结构压缩
                                                     TX receiver  传输的方法, 其核心思路在于仅保留最简化的数据格式, 而
                    交易数据结构压缩是一种优化接收方交易
                 非采用标准的以太坊交易数据结构. 这种方法能够显著减小跨                    Rollup  交易数据的存储需求和传输负担, 从而提高
                 整体的区块链性能和扩展性.
                    为实现交易数据结构的压缩, 本文剔除了交易中无效或冗余的交易字段. 这些字段包括但不限于交易备注, 交
                 易  Gaslimit 上限等. 这些字段对于接收方      Rollup  而言并不会直接产生影响. 仅需要记录接收方            Rollup  需要执行的
                 字段即可. 其次合并了相关字段, 由于同一批交易的发送方                  Rollup  和接收方的  Rollup  都是固定的, 因此若每一笔
                 交易  TX receiver  均保留发送方  Rollup  和接收方  Rollup  字段会产生浪费. 对于交易手续费用, 不需要每一笔交易单独
                 记录, 而将整批交易总共计量一个总费用支出. 整体上传的批量跨                     Rollup  交易数据结构如表    3  所示. 它包含整批
                 次的交易唯一标识, 发送方        Rollup  的编号, 接收方  Rollup  的编号, 以及单笔跨  Rollup  交易的集合.

                                               表 3 批量跨    Rollup  交易数据结构

                              密文输入字段                   具体含义                      类型
                                 nonce             该批交易的唯一标识                     bytes
                                                    发送方Rollup序号
                               Rollup sender                                     bytes
                                                    接收方Rollup序号                  bytes
                               Rollup receiver
                                GasTotal         所有交易的总手续费开销                      int
                               TX receiver List     跨Rollup交易集合            List < Transaction simple >

                    在批量跨    Rollup  交易数据结构中包含单笔跨        Rollup  交易数据结构, 其类型为     Transaction simple , 单笔交易的类
                 型结构如表    4  所示. 按照以太坊的交易格式只包含不可缺省的字段, 包括交易发送方, 交易接收方, 转移金额, 调用
                 合约的二进制数据以及后续为字段进一步压缩所增加的压缩协议字段.

                                               表 4 单笔跨    Rollup  交易数据结构

                                    字段                      具体含义                    类型
                                                         发送方用户地址                   Address
                                 Address sender
                                                         接收方用户地址                   Address
                                 Address receiver
                                    Value                   发送金额                     int
                                   Calldata             调用合约二进制数据                   bytes
                                CompressionType           数据压缩协议                    bytes

                 2.4.3    基于索引表数据压缩
                    在现有实际交易的情况分析来看, 交易之间会频繁调用一些字段, 而这些字段为了保证数据的完整性通常会
                 使用更长的存储. 例如在调用合约过程中,             Address sender  为合约地址, 合约地址为高频出现的字符串. 一个合约地址
                 为了防止哈希冲突, 通常具有         20  字节长度的内容. 而事实上一个        Rollup  内所涉及的所有地址若按照序号来标记,
                 只需要   2–4  字节即可. 4  字节可标记共计     2 −1 = 4294967295 个地址, 这个数量已经远远单个        Rollup  会使用的地
                                                  32
                 址总数. 此外根据第      1.3.3  节的统计结果也可以看出, 链上交易的用户地址也是具有高度重复性的.
                    本文提出的数据压缩方案利用部分字段使用频率高的特点, 通过部署在链上的索引表的形式, 使用短索引而
                 替代原始字段, 整体上而言减少了链上存储的开销. 在实际链上交易存储的过程中, 交易中实际存储的仅为较短的
                 索引, 将较长字段和较短索引对应的关系更新在链上索引表中, 后续链下节点通过从索引表还原索引替代前的交
                 易原始信息. 索引表内的数据只需要一次更新便永久使用, 例如一个合约地址的索引关系仅需要在第一次部署的
                 时候更新索引表内的对应关系, 之后任意次数的使用都可以直接使用索引表, 从而节省链上存储成本.
   385   386   387   388   389   390   391   392   393   394   395