j00*_*0yn 4 smartcontracts nearprotocol
对于执行以下操作的简单视图函数,我收到 ProhibitedInView 错误
export function getInfo(): Info {
const caller = context.sender
return infos.getSome(caller)
}
Run Code Online (Sandbox Code Playgroud)
并意识到这是因为电话context.sender。
我的假设/理解是,只要 tx 不改变状态,它们就可以被视为 ViewFunction。
我在Potential Gotchas上发现了针对此问题的警告,但为什么以下函数会导致视图函数失败?“从近核心暴露的绑定方法”是什么意思?
小智 6
在函数的上下文中view,不存在这样的东西:
signer_account_idsigner_account_pkpredecessor_account_id运行视图函数不需要签署任何消息,而且这是不允许的。它更像是匿名检查合同,不需要为此支付任何费用,并且结果与调用者无关。因此,不存在signer_account_id和signer_account_pk。
另一方面,如果您在视图模式下发起此调用,则无法进行跨合约调用。因此,没有predecessor_account_id可用的,因为signer_account_id不可用,并且不可能从另一个合约中调用它。