如何解决合约前身 vs 签署者 vs 当前
谁能帮我理解这三个概念之间的关系和区别? context.predecessor == context.contractName
检查似乎很常见。
解决方法
signer
- 签署初始交易的帐户。
predecessor
- 最后一个进行当前合约调用的帐户。
current
- 合约账户。
例如,考虑合同 contract.near
和用户 alice.near
。
alice.near
在 foo
上调用方法 contract.near
。在 foo 的上下文中:
signer == alice.near
predecessor == alice.near
current == contract.near
然后,如果对另一个方法(例如 faa
)进行了 Promise 调用,则其上下文为:
signer == alice.near
predecessor == contract.near
current == contract.near
因此检查 predecessor == current
或 context.predecessor == context.contractName
是为了确保合约是进行合约调用的帐户。带有此断言的方法被认为是“私有的”,因为即使它是面向公众的 API 的一部分,也只有合约可以调用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。