smartcontracts - 为什么像signer_account_id这样的Env变量会导致错误: ProhibitedInView?

标签 smartcontracts nearprotocol

对于执行以下操作的简单 View 函数,我收到 ProhibitedInView 错误

export function getInfo(): Info {
   const caller = context.sender
   return infos.getSome(caller)
}
并意识到这是因为 context.sender称呼。
我的假设/理解是,只要 tx 不改变状态,它们就可以被视为 ViewFunctions。
我在 Potential Gotchas 上发现了一个警告。 ,但是为什么下面的函数会导致 View 函数失败呢? “从近核公开的绑定(bind)方法”是什么意思?
  • signer_account_id
  • signer_account_pk
  • 前身_账户_id
  • 最佳答案

    view 的上下文中功能,没有这样的事情:

  • signer_account_id
  • signer_account_pk
  • predecessor_account_id

  • 运行 View 函数不需要对任何消息进行签名,而且是不允许的。这更像是匿名检查契约(Contract),不应该为此付出任何代价,并且结果与调用者无关。因此没有signer_account_idsigner_account_pk .
    另一方面,如果您在查看模式下发起此调用,则无法进行跨合约调用。因此没有predecessor_account_id可用,因为 signer_account_id不可用,并且不可能从另一个合约调用。

    关于smartcontracts - 为什么像signer_account_id这样的Env变量会导致错误: ProhibitedInView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67313056/

    相关文章:

    nearprotocol - 近 "ExecutionError":"Exceeded the prepaid gas."

    nearprotocol - 如何迭代 PersistentVector

    smartcontracts - 基数 Scrypto : How to send Bucket or BucketRef through resim

    go - DeleteState 和 PutState 函数不会更改账本状态

    ethereum - 如何从以太坊中部署的合约部署合约?

    node.js - 我们可以在 NodeJS 中使用 Solidity 吗?

    ethereum - Solidity:从字符串中获取哈希值;

    nearprotocol - Aurora dapp 和 NEAR dapp 之间的用户体验有何不同?

    nearprotocol - NEAR 跨合约调用(允许一个账户将资金从托管账户释放到另一个账户)