本文详细介绍了Solana区块链上的租金概念,指出所有Solana账户在区块链上存储数据时需要支付Lamports作为租金费用,并提供了如何计算这些租金以及如何赎回存储费用的具体方法。文章的逻辑结构清晰,信息丰富,适合开发者和Solana用户深入理解该平台的费用机制。
在 Solana 区块链上,程序执行始于一次交易。区块链由一组计算机系统组成,这些系统在整个网络上复制和分发交易的数字账本。链上的每个区块由多个交易组成,每个参与者的账本都接收到区块链上每一笔新交易的副本。
将所有这些数据存储在不同账户中并不是免费的,会产生一些费用。在本文中,我们将指导你了解 Solana 上的租金概念以及如何计算租金。
租金是每个 Solana 账户为存储数据在区块链上所支付的费用,以 Lamports 为单位,Lamports 是用于小额支付的 SOL 的最小单位。 租金费用是根据账户存储的大小进行计算的。租金越高,存储的数据量就越大。
由于 Solana 节点集群 必须主动维护这些数据,因此需要一种基于时间和空间的费用来保持账户及其数据在区块链上的存活。所有 Solana 账户必须保持其 Lamport 余额足够高,以符合 租金豁免 的资格并留在 Solana 区块链上。那些发现 Lamport 数量较少的账户将被垃圾回收器从网络中移除。
备注:在当前的实现中,按时间动态扣除 rent 的机制的已经弃用,默认按至少两年费用一次性存入, 从而实现免租。
租金费用通常在每个纪元结束时收取。纪元是领先验证者仍有能力生成交易区块的一段时间。 Solana Explorer 包含最近及之前纪元的数据。租金在账户被交易引用时也会被支付。
在每个插槽结束时,账户所收取的租金的百分比会被销毁,其余部分会支付给投票账户。如果账户中没有足够的资金以覆盖租金,则该账户将被解除分配,并删除其数据。同时,值得注意的是,新的账户必须是免租金的。
租金也非常重要,因为网络上的验证者必须在内存中保持该状态的工作副本;网络对此资源消耗收取一种基于时间和空间的费用。这是因为 Solana 上的账户可能有一个由拥有者控制的状态(Account::data),与账户余额(Account::lamports)不同。
使用来自 Solana CLI 的 Solana 租金命令可提供计算租金成本的简单方法。 你可以输入账户的大小(以字节为单位)查看每字节、每个纪元的租金费用,以及账户免租金所需的最低金额。
根据租金制度,账户有 Account::rent epoch 为当前纪元或当前纪元 + 1,并且租金为一个纪元的时间。
如果账户处于豁免制度,Account::rent epoch 将简单调整为当前纪元。
如果账户不免租金,Rent::due() 用以确定此账户欠多少钱租金。此计算基于下一个纪元与 Account::rent epoch 之间的差异。这些步骤展示了如何计算 Solana 程序的租金价格。
首先,导航到你的终端,使用 cargo 创建一个新文件夹,这里将存储我们的主文件。
打开 src/main,并用 这里 的代码片段替换。
文件的大小应该是 906 字节,我们可以通过简单执行以下命令来计算租金:
solana rent 906
你应该会看到以下内容:
终端中 Solana 租金命令的输出
最后,没有与租金扣除相匹配的交易,因为租金收集根据协议级别的账户修改进行,例如租金分配给验证者。
因此,租金收集在很大程度上是隐形的,可能仅通过最近的交易或通过特定账户地址前缀指定的时间隐式观察到。
为了回收 Solana 存储费用,开发者和普通 Solana 用户可以关闭账户以收回存储费用。赎回 Solana 租金费用的最简单方法是使用像 Sol Incinerator (https://sol-incinerator.com/) 这样的用户友好工具来关闭你钱包中未使用的程序账户。
租金成本目前设定为创世时的费用,但计划未来将变得动态,反映基础硬件存储的当前成本。因此,普遍认为,随着技术的进步和硬件成本的下降,租金费用成本也将下降。
- 原文链接: alchemy.com/overviews/ho...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!