风险提示:包括Status和FunFair在内的部分国内外热门区块链项目,智能合约存在管理员权限过高的问题,或导致项目存在过度中心化的风险,相关Token生态极易发生单点失效。致命问题可能会出现在两个方面:一是项目方滥用权限,二是超级管理员身份被盗用。这两种情况一旦发生,相关Token生态可能会迅速崩塌。
恐怖的智能合约管理员权限
作为比特币和区块链爱好者,我们崇尚去中心化。然而,很多持币者可能还不太清楚,目前各类Token项目智能合约管理员拥有超级权限竟已逐渐成为常态。据我们不完全统计,排名前570名的Token合约中,有342个合约存在只有管理员能调用的功能(onlyOwner),不少合约更存在管理员任意铸币、烧币、冻结账户、关停转账等过高权限。
Status(SNT)和FunFair(FUN)项目,我们认为这两个热门项目都存在非常严重的管理员权限过高问题。
Status合约中有名为Controller的管理员角色,可调用generateTokens()往任意地址增发代币,可调用destroyTokens()销毁任意地址上的代币。但Status项目的白皮书并没有相关特殊权限声明。而且,这两个超级权限函数在实现上,并没有触发Mint或Burn事件,只有普通的Transfer事件。
倘若有人利用管理员身份作恶,社区可能难以第一时间发现。通过扫描区块链数据我们发现,目前Status团队仅于2017年6月19日依次传入极小值成功调用了增发和销毁的函数进行测试,因此普通用户无需过分恐慌。但需要知道的是官方团队随时保留有这样的超级权限。
此外,Status合约还应用了可升级的代理合约机制,管理员可以通过任意设置代理合约controller地址的方式,在关键函数前面插入可升级的校验逻辑,来影响转账等关键操作。