当我在智能合约中发现两种类型的功能时,我一直在阅读文档并评估示例:
// View方法是只读的。他们不修改状态,但通常返回一些值。
//更改方法可以修改状态。但是调用时您不会收到返回的值。
来自https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min
这些要求有多严格?如果不保留这些假设(例如,状态在视图方法内被修改或在更改方法内未进行修改)会发生什么?
答案 0 :(得分:2)
如果尝试在视图函数中更改状态,则视图调用将失败。差异仅在调用函数时才体现出来。视图函数应通过near view
调用,而更改函数应通过near call
调用。
答案 1 :(得分:1)
正如berryguy所说,如果函数尝试更改状态,near view
将失败。但是,我在这里https://github.com/nearprotocol/NEPs/pull/3#discussion_r306526647的建议中,限制是人为的,应该删除。我们应该允许用户以near view
的身份运行任何函数,并将其视为空运行,因为它有多种用法: