【问题标题】:How to calculate storage rent?如何计算仓储租金?
【发布时间】:2022-06-24 19:17:45
【问题描述】:

我以编程方式发送交易,我需要确切知道费用是多少。我设法弄清楚如何计算普通交易的费用((转账成本 + 收据创建成本)* 2),但现在我正在努力解决我需要从账户中取出所有资金而不删除它的情况。据我了解,在这种情况下,帐户上必须有存储租金。但是,我真的不知道如何计算租金。从 \'EXPERIMENTAL_protocol_config\' 方法返回的值似乎与租金相关 - \'storage_amount_per_byte\',这意味着每个字节的成本为 10000000000000000000 yocto,我也可以从 \'query\ 获取 \'storage_usage\' ' 请求类型为 \'view_account\' 的方法,据说它表示我的帐户使用了多少字节(即 182)。但每当我尝试发送交易时,我都会收到一个“NotEnoughBalance”错误,指出交易成本高于余额,但仅高出 669547687500000000 yocto。无论我做什么,我都无法理解这个数字是从哪里来的。上述 \'EXPERIMENTAL_protocol_config\' 方法的费用组合不会产生这个数字。 似乎几乎没有关于交易费用计算的像样的文档,除了大多数使用操作的一些“固定”值。如果您有任何有关费用/存储租金计算的信息 - 我将不胜感激。

  • 通过反复试验,我设法弄清楚了基于字节的存储价格的相当明显的价格——即 182 * 10000000000000000000 = 1820000000000000000000。但是,669547687500000000 的部分仍然是个谜。我试着离开 18206695476874帐户上的 00000000,仅比预期需要的少 100000000,并且交易失败。所以 18206695476875在我的情况下,00000000 是最低限度。如果您发现这个号码很熟悉或知道它的来源 - 请分享。

标签: nearprotocol


【解决方案1】:

通过一个随机的机会,我设法找到了官方钱包 (wallet.near.org) 中的数字“6695476875”被称为“保留交易”的名称(在天然气中,而不是代币中)。天知道为什么要保留它,docs.near.org、nomicon.io 和 wiki.near.org 都没有关于这个“保留”的任何信息,而且这个数字从未在任何 RPC API 方法中提及。 'near-api-js' 库中也从未提及这个数字,所以我真的不知道开发人员是否知道它。 无论如何,由于这个问题的标题是“如何计算存储租金”,所以答案是这样的:

  1. 您从 RPC API 的“查询”方法(@​​987654321@ 的文档)获取帐户信息并获取“storage_usage”值(这是字节您的帐户占用了区块链)。
  2. 您从 RPC API 的“EXPERIMENTAL_protocol_config”方法(@​​987654322@ 的文档)获取协议信息并获取“storage_amount_per_byte”值。
  3. 你将字节数乘以 storage_amount_per_byte 并加上魔法669547687500000000给它编号。

    由此产生的数字是您在任何时候必须在您的帐户中拥有的最少代币数量。

    我不知道为什么在区块链行业让开发人员的生活变得更加困难是一种常见的做法,但这是这种做法的一个很好的例子。

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多