为什么要删除包含智能合约的 NEAR 账户的访问密钥?

Why would you delete the access keys to your NEAR account containing a smart contract?

这个关于可升级性的回答表明,在某些时候您应该删除包含智能合约的帐户的访问密钥:How do you upgrade NEAR smart contracts?

智能合约在某个时候应该被“冻结”是有道理的,你想让它的用户相信它不会被改变。但是合约奖励和其他属于合约账户的资金呢?如果密钥被删除,原始所有者将如何访问它?

But what about contract rewards and other funds belonging to the contract account? How would the original owner get access to that if keys are deleted?

合同的实施方式应允许某些操作。

我们以lockup contract为例。该合约只有一个所有者,资金被锁定一定时间,合约只提供特定方法调用和守护,具体逻辑:

  • 作为所有者,我可以委托(质押)我的代币到质押池,同时我仍然不能任意转移代币
  • 作为所有者,我可以通过锁仓合约从质押池中提取奖励,并将其转移到任意账户
  • 一旦锁定时间结束,作为所有者,我可以调用 add_full_access_key 功能,从而获得对该帐户的完全访问权限,甚至在之后删除它(将所有代币转移到其他帐户).

所有这些都是在合约层面明确实现的,并且易于审查,并且鉴于锁定合约上没有其他AccessKey,我们可以确定没有其他方式可以干扰合约逻辑。