NEAR官方文档翻译(五)基础(Basics)- Gas

Gas

当您调用NEAR区块链以更新或更改数据时,运行区块链基础架构的人员会产生一些费用。 最终,某些计算机会处理您的请求,运行这些计算机的验证器会花费大量资金来保持这些计算机的运行。

像其他可编程区块链一样,NEAR通过收取交易费(也称为汽油费)来补偿这些人。

如果您熟悉Web2云服务提供商(Amazon Web Services,Google Cloud等),则与区块链的最大不同在于,用户在调用应用程序时会立即向其收费,而不是由开发人员来承担使用全部服务的成本 该基础架构。 这创造了新的可能性,例如应用程序由于开发人员/公司资金用尽而没有长期退出的风险。 但是,它还会带来一些可用性障碍。 为解决此问题,NEAR还为开发人员提供了为用户支付汽油费用的功能,从而为来自web2的用户提供了更熟悉的体验。

考虑gas时,请牢记两个概念:

  • Gas units:在内部,交易费用不是直接在NEAR代币中计算,而是经过“gas units”的中间阶段。gas units的好处是它们具有确定性-同一笔交易将始终花费相同数量的gas units。
  • Gas price:将燃料单位乘​​以燃料价格来确定向用户收取的费用。 该价格将根据网络需求自动重新计算每个区块(如果前一个区块的价格超过一半,则价格会上涨,否则价格会下跌,并且每个区块的价格波动幅度不会超过1%),并在到达最低价时触底。 由网络配置的价格,目前为1亿yoctoNEAR。

Note that the gas price can differ between NEAR’s mainnet & testnet. Check the gas price before relying on the numbers below.
请注意,NEAR的主网和测试网之间的天然气价格可能会有所不同。 在使用以下数字之前,请先检查汽油价格。

深入思考gas

NEAR大约有1秒钟的阻塞时间,这是通过限制每个区块 gas的数量来实现的。 gas units经过精心计算,得出了一些易于思考的数字:

  • 10¹² gas units, or 1 TGas (TeraGas)…
  • ≈ 1 millisecond of “compute” time
  • …which, at a minimum gas price of 100 million yoctoNEAR, equals a 0.1 milliNEAR charge

1ms是一个粗略但有用的近似值,并且是当前在NEAR内设置 gas units 的当前目标。 gas units 不仅封装计算/ CPU时间,而且封装带宽/网络时间和存储/ IO时间。 通过控制机制,可以调整系统参数,从而改变TGas和毫秒之间的映射关系,但是以上仍然是思考gas units的含义和来源的一个很好的起点。

通用的费用

为了给您一个关于NEAR的成本期望值的起点,下表列出了一些常见的操作以及它们目前需要多少TGas,以及在最低天然气价格为1亿yN的情况下,单位为millNNEAR的费用。

根据需要具体看原文。未翻译!(https://docs.near.org/docs/concepts/gas)

复杂动作的费用

上面的数字应该使您感到NEAR上的交易便宜! 但是,它们并不能使您完全了解使用更复杂的应用程序或运营基于NEAR的业务将花费多少。 让我们介绍一些更复杂的天然气计算:部署合约和函数调用。

部署合约和函数调用,根据需要具体看原文。未翻译!(https://docs.near.org/docs/concepts/gas)

我如何购买gas?

You don’t directly buy gas; you attach tokens to transactions.
您不直接购买gas;而是将令牌附加到交易中。

调用NEAR读取数据始终是免费的。 但是,当您调用或更新数据时,您必须从其余额中有一些NEAR令牌可用的帐户中进行,并且将附加这些令牌以支付燃料费。

If you’re coming from Ethereum, you may be used to the idea of paying a higher gas price to get your transaction processed faster. In NEAR, gas costs are deterministic, and you can’t pay extra.

如果您来自以太坊,那么您可能已经习惯了支付更高的燃料价格以更快地处理交易的想法。 在NEAR中,燃料成本是确定性的,您无法支付额外的费用。

For basic operations like “transfer funds,” you can’t specify an amount to attach. The gas needed is easy to calculate ahead of time, so it’s automatically attached for you. (Check it: near-cli has a send command, which accepts no gas parameter; near-api-js has a sendTokens function which accepts no gas argument.) As shown in the tables above, these operations are cheap, so you probably won’t even notice the slight reduction in your account’s balance.

对于“转帐”之类的基本操作,您无法指定附加金额。 所需的气体易于提前计算,因此会自动为您附上。 (检查它:near-cli有一个send命令,不接受任何gas参数; near-api-js具有sendTokens函数,不接受gas参数。)如上表所示,这些操作很便宜,所以您可能赢了 甚至没有注意到您的帐户余额略有减少。

Function calls are more complex, and you can attach an explicit amount of gas to these transactions, up to a maximum value of 3⨉10¹⁴ gas units. Here’s how you would override the default attached gas with near-cli:

函数调用更为复杂,您可以在这些交易中附加明确数量的gas,最大为 3 ⨉ 10 ¹ ⁴ 3⨉10¹⁴ 310¹个gas units。 这是您使用Near-CLI替换默认附加gas的方法:

near call myContract.testnet myFunction "{ \"arg1\": \"val1\" }" --gas=300000000000000

And in near-api-js, you can also specify an explicit amount of gas units to attach when calling a change method; see example here.

并且在Near-api-js中,您还可以在调用change方法时指定要附加的明确数量的gas单位; 请参阅此处的示例。

Error:
  Transaction A9BzFKmgNNUmEx9Ue9ARC2rbWeiMnq6LpcXh53xPhSN6 failed.
  Exceeded the prepaid gas

附加额外的gas,退还!

How can you know the exact right amount to attach when you call a function? You can’t!
调用函数时,如何知道要附加的确切数量? 你不能!

Gas units 基于给定操作的计算复杂度,该复杂度可能会受到智能合约状态的影响。 这很难提前预测。 而且,根据上一个区块网络的繁忙程度,对每个区块的汽油价格进行调整,这也很难提前预测。

但好消息!

  • Gas 在NEAR上花费不多
  • 如果您携带的Gas 超过了需要,您将获得退款

对于基本操作也是如此。 在上一节中,我们提到了这些是自动计算并附加的。 实际上,鉴于在执行这些操作时可以对gas价格进行略微调整(请参见上面的蓝色框),因此会附加少量的额外费用,并且超出必要范围的任何费用都将退还。

关于预付费Gas

Near Team了解开发人员希望为他们的用户提供最佳的入门体验。 为了实现这一愿景,开发人员可以设计其应用程序,使首次使用的用户可以直接从开发人员所维护的帐户中提取资金购买gas。 一旦上线,用户就可以过渡到为自己的平台使用付费。

从这个意义上讲,可以使用入金帐户和相关合约(用于新用户)来实现预付费汽油。

那么,开发人员如何在NEAR上为其用户支付Gas费?

用户可以直接从开发者帐户中使用仅适合此dApp Gas的资金。 然后,开发人员必须根据签名者的密钥而不是帐户名来区分用户。

NEAR协议不对开发人员资金的使用提供任何限制功能。 开发人员可以在对应于特定用户的访问键上设置配额-每个具有特定配额的新用户一个功能调用访问键。

现在的汽油价格是多少?

您可以使用RPC方法gas_price直接在NEAR平台上查询特定区块上的天然气价格。 此价格可能会根据网络负载而变化。 价格以yoctoNEAR(10 ^ -24 NEAR)计价

  1. 使用NEAR Explorer从区块链中获取任何最近的区块哈希。(https://explorer.testnet.near.org/blocks)
  2. 使用此处记录的gas_price方法在此区块上发出RPC请求以获取天然气价格
http post https://rpc.testnet.near.org jsonrpc=2.0 method=gas_price params:='["SqNPYxdgspCT3dXK93uVvYZh18yPmekirUaXpoXshHv"]' id=dontcare
  1. 观察结果
{
  "id": "dontcare",
  "jsonrpc": "2.0",
  "result": {
    "gas_price": "5000"
  }
}

该区块1单位gas的价格为5000 yoctoNEAR(10 ^ -24 NEAR)。

白皮书中的一些总结性想法

从根本上说,NEAR平台是愿意的参与者之间的市场。 在供应方面,需要激励验证者节点和其他基本基础结构的运营商提供组成“社区云”的这些服务。 在需求方面,付费使用该平台的开发人员和最终用户需要能够以一种简单,清晰和一致的方式做到这一点,从而为他们提供帮助。

基于区块链的云为运行在其上的应用程序提供了一些特定的资源:

  • 计算(CPU):这是在合约中运行代码的实际计算机处理(以及立即可用的RAM)。
  • 带宽(“网络”):这是参与者和用户之间的网络流量,包括提交交易的消息和传播块的消息。
  • 存储:链上的永久数据存储,通常表示为存储空间和时间的函数。

Existing blockchains like Ethereum account for all of these in a single up front transaction fee which represents a separate accounting for each of them but ultimately charges developers or users for them only once in a single fee. This is a high volatility fee commonly denominated in “gas”.

现有的像以太坊这样的区块链在一次预付款中就全部占了这笔钱,这代表了它们各自的独立账目,但最终只向开发人员或用户收取一次费用。 这是高波动率费用,通常以“gas”计价。

Developers prefer predictable pricing so they can budget and provide prices for their end users. The pricing for the above-mentioned resources on NEAR is an amount which is slowly adjusted based on system usage (and subject to the smoothing effect of resharding for extreme usage) rather than being fully auction-based. This means that a developer can more predictably know that the cost of running transactions or maintaining their storage.

开发人员更喜欢可预测的定价,这样他们就可以为最终用户提供预算和价格。上述资源在NEAR上的定价是根据系统使用情况缓慢调整的金额(并受制于极端使用情况下重新硬化的平滑效果),而不是完全基于拍卖。这意味着开发人员可以更可预测地知道运行交易或维护其存储的成本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值