1

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

// 视图方法是只读的。它们不会修改状态,但通常会返回一些值。

// change 方法可以修改状态。但是您在调用时不会收到返回值。

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

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

4

2 回答 2

2

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

于 2019-09-15T22:00:54.027 回答
1

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

  • 用户可以空运行一个函数来估计它消耗了多少气体;
  • 用户可以试运行以查看函数
    在合约当前状态下的表现。
于 2019-09-15T22:22:35.907 回答