我正在查看Ethereum的SSZ序列化,并且无法理解如何仅使用"index“来编码/解码可变长度字段。以下引自ethereum.org站点 (着重号由后加):
对于长度可变的类型,实际数据在该元素在序列化对象中的位置被替换为“偏移”值。实际数据被添加到序列化对象末尾的堆中。偏移值是堆中实际数据开始的索引,充当指向相关字节的指针。
下面是一个示例,我只理解其中一个部分:偏移值是堆中实际数据开始时的索引,但是长度信息保存在哪里?我只能猜测长度一直到下一个偏移量(如果模式中还有另一个可变长度字段)。如果是的话,为了便于解码,是否有作为编码一部分序列化的附加数据结构(例如,每个索引的长度)?
发布于 2023-03-14 16:45:46
长度不保持,您只需找到当前偏移量与下一个字段偏移量之间的差异。您需要知道整个容器大小来计算最后一个动态字段的长度。
https://ethereum.stackexchange.com/questions/147392
复制相似问题