【发布时间】:2020-07-19 01:12:38
【问题描述】:
我想设计升级锁定合约的流程。
(锁定的合约是没有访问密钥允许更改代码的合约;例如,一旦部署代码,完整的访问密钥就会被删除)。
按照设计,没有密钥可以代表账户签署交易以启动锁定账户的账户删除,但我想知道部署在账户上的代码(合约代码)是否仍然可以自行删除( self-destroy) [我认为这是可能的,因为它似乎可以从自己到自己开具收据]。
以下升级策略会起作用吗?
- 初始阶段:
- 创建一个帐户
- 使用一些可升级帮助程序部署代码
- 锁定帐户(删除完整的访问密钥)
- 升级:
- 创建一个新帐户
- 将新代码部署到新帐户
- 锁定新帐户
- 调用迁移方法,该方法到达旧版本(通过跨合约调用)并请求转移所有权(提供所有数据并自行删除)
似乎需要在可升级性助手中实施某种所有者验证,以确保只有所有者才能将所有权从旧版本转移到新版本,但这是另一个问题;首先,我想知道合约是否可以自我毁灭。
【问题讨论】:
标签: nearprotocol