首页 > 解决方案 > 合同前任 vs 签署人 vs 当前

问题描述

有人可以帮我理解这三个概念之间的关系和区别吗?似乎context.predecessor == context.contractName支票很常见。

标签: smartcontractsnearprotocol

解决方案


signer- 签署初始交易的帐户。

predecessor- 进行当前合约调用的最后一个账户。

current- 合同账户。

例如,考虑 contractcontract.near和 user alice.near

alice.near调用方法foocontract.near在 foo 的上下文中:

  • signer == alice.near
  • predecessor == alice.near
  • current == contract.near

然后,如果对另一个方法 say 进行了 Promise 调用faa,那么它的上下文是:

  • signer == alice.near
  • predecessor == contract.near
  • current == contract.near

因此,检查predecessor == currentorcontext.predecessor == context.contractName是为了确保合约是发出合约调用的帐户。带有此断言的方法被认为是“私有的”,因为即使它是面向公众的 API 的一部分,也只有合约可以调用它。


推荐阅读