【发布时间】:2021-01-12 20:31:20
【问题描述】:
在 Rust 中,标准库中有许多可用的数据结构。 NEAR 协议在near-api-rs 中有一些优化的数据结构,但主要的区别是什么?
【问题讨论】:
标签: rust blockchain smartcontracts nearprotocol
在 Rust 中,标准库中有许多可用的数据结构。 NEAR 协议在near-api-rs 中有一些优化的数据结构,但主要的区别是什么?
【问题讨论】:
标签: rust blockchain smartcontracts nearprotocol
Evgeny Kuzyakov(Near protocol engineer)在 Discord 中回答:
如果你说的是 LookupMap 和 HashMap,那么区别在于 LookupMap 存储在 trie 中,而 HashMap 存储在内存中。
当调用合约上的方法时,合约会从存储树中读取并反序列化主结构。如果它包含一个 HashMap,那么这个映射的所有记录都将被读取和反序列化。如果它包含一个 LookupMap,那么只有 key_prefix 会被读取和反序列化,所以从 gas 的角度来看它更便宜。但是每次从 LookupMap 访问键/值时,都必须从 trie 中读取和反序列化它。
【讨论】: