如何免费查看NEAR协议合约中的数据?

How to view data in NEAR protocol contract for free?

我应该为 NEAR 协议的每次读取付费吗?

如何查看存储在NEAR协议智能合约中的值? (例如,质押池费用)

查看和更改方法有什么区别?

Should I pay for every read from NEAR protocol?

TL;DR:不,你不应该。

在 NEAR 协议中,有多种方法可以与智能合约进行交互:

  1. 提交带有 FunctionCall 操作的交易,这将在块生产节点上执行指定的方法,结果将通过区块链证明(在 near-api-js 方面,这些是“更改方法”)
  2. 调用query(call_function) JSON RPC method,会在read-only环境下获取RPC节点自身执行的指定方法,调用永远不会recorded/proved通过区块链(术语near-api-js 这些是“查看方法”)

您只能通过第一种方法更改状态和链式操作(例如 cross-contract 调用、令牌传输或访问密钥 addition/deletion),因为区块链希望用户承担执行成本,所以用户应该签署他们的交易,他们将收取执行费用。

有时候,你不需要改变状态,而只是想读取一个存储在链上的值,而为此付出代价是次优的(尽管如果你需要证明操作已经完成它可能仍然是可取的)。在这种情况下,您更喜欢第二种方法。通过 JSON RPC 调用方法是免费的,并在合约执行期间提供有限的上下文,但在某些场景下就足够了(例如,当你想查看质押池费用是多少,或者谁是所有者时)合同等)。