为什么要删除包含智能合约的 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,我们可以确定没有其他方式可以干扰合约逻辑。
这个关于可升级性的回答表明,在某些时候您应该删除包含智能合约的帐户的访问密钥: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,我们可以确定没有其他方式可以干扰合约逻辑。