《Near-daniel Wang-2023RustChina Borsh.pptx》由会员分享,可在线阅读,更多相关《Near-daniel Wang-2023RustChina Borsh.pptx(21页珍藏版)》请在三个皮匠报告上搜索。
1、第三届中国第三届中国Rust开发者大会开发者大会安全高效的二进制序列化安全高效的二进制序列化Daniel Wang NEARBorsh运行、编码运行、编码效率效率确定性确定性跨平台兼容性跨平台兼容性二进制序列化的问题二进制序列化的问题Binary Object Representation Binary Object Representation Serializer for HashingSerializer for Hashing 字节级别确定性 执行速度快Borsh 轻量级每一个对象与其二进制表示之间都存在一个双射映射每一个对象与其二进制表示之间都存在一个双射映射不同的对象的二进制表示一
2、定不同不同的对象的二进制表示一定不同便于基于二进制表示进行便于基于二进制表示进行HashHash字节级别确定性字节级别确定性在在RustRust中,中,borshborsh并没有使用并没有使用serdeserde全部逻辑原生实现全部逻辑原生实现序列化、反序列化速度大幅领先其他解决方案序列化、反序列化速度大幅领先其他解决方案执行速度执行速度执行速度执行速度 benchmarkbenchmark执行速度执行速度 benchmarkbenchmark执行速度执行速度 benchmarkbenchmark执行速度执行速度 benchmarkbenchmark编译后的体积更小编译后的体积更小borshb
3、orsh序列化后的二进制更精简序列化后的二进制更精简轻量级轻量级序列化结果体积对比序列化结果体积对比Borsh基本用法Case StudyNEAR智能合约Case StudySolana智能合约Case Studynon self-describingnon self-describing保证序列化后的二进制唯一性和确定性保证序列化后的二进制唯一性和确定性主要序列化规则主要序列化规则BorshBorsh规范规范整数采用低字节序(整数采用低字节序(little endian)little endian)存储存储对于动态长度的集合,先用一个对于动态长度的集合,先用一个u32u32存储集合存储集合sizesize对于原本无序的集合(如对于原本无序的集合(如hashmaphashmap),存储时使用),存储时使用keykey的字典序排序的字典序排序Borsh规范let a:u32;5=1,2,3,4,5;let a=vec!1,2,3,4,5;let solar_distance=HashMap:from(Venus,0.7),(Earth,1.0),);多语言支持PlatformPlatformRepositoryRepositoryRusthttps:/ you!