合同可以按照NEAR协议删除自己吗?

时间:2020-04-06 22:27:36

标签: nearprotocol

我想设计升级锁定合同的流程。

(锁定合同是没有访问密钥以允许更改代码的合同;例如,部署代码后,将删除完整的访问密钥)。

根据设计,没有密钥可以代表该帐户签署交易以启动已锁定帐户的帐户删除,但是我不知道部署在该帐户上的代码(合同代码)是否仍然可以自行删除(自我毁灭)[我认为这是可能的,因为它似乎可以在自我之间开具收据]。

以下升级策略可以工作吗?

  1. 初始阶段:
    • 创建帐户
    • 使用一些可升级性帮助程序部署代码
    • 锁定帐户(删除完整访问密钥)
  2. 升级:
    • 创建一个新帐户
    • 将新代码部署到新帐户
    • 锁定新帐户
    • 调用迁移方法,该方法到达旧版本(通过跨合同调用)并请求转移所有权(提供所有数据并删除自身)

似乎需要在可升级性帮助程序中实施某种所有者验证,以确保只有所有者才能将所有权从旧版本转移到新版本,但这是另一个问题。首先,我想知道合同是否可以摧毁自己。

2 个答案:

答案 0 :(得分:1)

我相信这是可能的。您可以有一种方法,该方法使用promise_batch_action_delete_account删除自身,然后将访问密钥添加到合同中以允许它调用该方法。

答案 1 :(得分:1)