smartcontracts - 合同前任 vs 签署人 vs 当前
问题描述
有人可以帮我理解这三个概念之间的关系和区别吗?似乎context.predecessor == context.contractName
支票很常见。
解决方案
signer
- 签署初始交易的帐户。
predecessor
- 进行当前合约调用的最后一个账户。
current
- 合同账户。
例如,考虑 contractcontract.near
和 user alice.near
。
alice.near
调用方法foo
。contract.near
在 foo 的上下文中:
signer == alice.near
predecessor == alice.near
current == contract.near
然后,如果对另一个方法 say 进行了 Promise 调用faa
,那么它的上下文是:
signer == alice.near
predecessor == contract.near
current == contract.near
因此,检查predecessor == current
orcontext.predecessor == context.contractName
是为了确保合约是发出合约调用的帐户。带有此断言的方法被认为是“私有的”,因为即使它是面向公众的 API 的一部分,也只有合约可以调用它。
推荐阅读
- python - Keras ....不支持的操作数类型 RNN
- javascript - 用另一个数组的对象键过滤一个对象
- reactjs - 对象作为 React 子级无效(找到:[object Element])。如果您打算渲染一组子项,请改用数组。- ReactJs
- python - Python:如何将下面的 for 循环输出转换为列表?
- javascript - 在浏览器设置中配置 Moment.js 适配不同国家的不同格式
- r - 对 KMsurv 包中的数据(刻录)使用 2 面对数秩检验
- python - 我如何计算该列表中人口每年的平均增长百分比?
- tensorflow - tf.keras.layers.Dense - 参数数量?
- javascript - 在restdb.io javascript onGET函数中进行两个数据库调用
- spring - 带有新 Spring Security Oauth2 和 Cognito 的 Spring Cloud Gateway