查看与更改智能合约的方法

View vs Change methods of Smart Contracts

当我发现智能合约中的两种功能时,我一直在阅读文档和评估示例:查看和更改方法。

// View methods are read only. They don't modify the state, but usually return some value.

// Change methods can modify the state. But you don't receive the returned value when called.

来自 https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min

这些要求有多严格?如果这些假设不成立(例如状态在视图方法中被修改或在更改方法中没有进行任何修改)会发生什么?

如果您尝试在视图函数中更改状态,视图调用将失败。差异实际上仅在您调用该函数时才会体现出来。应通过 near view 调用视图函数,而应通过 near call.

调用更改函数

正如 berryguy 所说,如果函数试图改变状态,near view 将会失败。但是,我在这里建议 https://github.com/nearprotocol/NEPs/pull/3#discussion_r306526647 限制是人为的,应该取消。我们应该允许用户 运行 任何功能作为 near view 并将其视为干货 运行,因为它有多个不错的用法:

  • 用户可以干运行一个函数来估算它消耗了多少gas;
  • 用户可以干运行看看功能如何与当前
    合同状态。