对于执行以下操作的简单 View 函数,我收到 ProhibitedInView 错误
export function getInfo(): Info {
const caller = context.sender
return infos.getSome(caller)
}
并意识到这是因为 context.sender
称呼。我的假设/理解是,只要 tx 不改变状态,它们就可以被视为 ViewFunctions。
我在 Potential Gotchas 上发现了一个警告。 ,但是为什么下面的函数会导致 View 函数失败呢? “从近核公开的绑定(bind)方法”是什么意思?
最佳答案
在 view
的上下文中功能,没有这样的事情:
signer_account_id
signer_account_pk
predecessor_account_id
运行 View 函数不需要对任何消息进行签名,而且是不允许的。这更像是匿名检查契约(Contract),不应该为此付出任何代价,并且结果与调用者无关。因此没有
signer_account_id
和 signer_account_pk
.另一方面,如果您在查看模式下发起此调用,则无法进行跨合约调用。因此没有
predecessor_account_id
可用,因为 signer_account_id
不可用,并且不可能从另一个合约调用。
关于smartcontracts - 为什么像signer_account_id这样的Env变量会导致错误: ProhibitedInView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67313056/