《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!