Solana Rust 智能合约如何处理数组和向量?

Rus*_*sso 3 arrays vector rust solana

我知道 Solana 没有 HashMap 数据结构作为设计模式。

这是否意味着开发人员应该为每个用户或权益池使用程序派生地址(PDA),而不是为数据存储创建用户或权益池的数组/向量?

Jon*_*n C 5

这个问题有点主观,因为它询问如何使用 Solana 处理在链上存储大量信息的意见。两种选择都是可能的:您可以将向量/数组存储在一个帐户中的链上,或者您可以使用程序派生的地址作为一种链上 HashMap。这是一个权衡。

如果您将向量存储在帐户中,则您将受到开始时分配的大小的限制,但存储一定数量的值可能会更快、更便宜。

如果您需要存储大量数据并且您有一个很好的生成密钥的模型,那么在程序派生地址创建帐户可能是一个不错的选择。您需要为每个帐户支付租金,因此如果您不在每个帐户中存储大量数据,则可能会很昂贵。您可以用来solana rent <ACCOUNT_SIZE>估算这两种方法的成本。