2月23日,Beautychain(美链)在境外交易所OKEx上线,代币名为BEC,开盘后BEC涨幅高达4000%,一度收获280亿美元市值,惊人走势曾引起巨大争议。4月22日中午左右,BEC美蜜合约被爆出现重大漏洞,黑客通过合约的批量转账方法无限生成代币。天量BEC从两个地址转出,引发抛售潮。当日,BEC的价值几乎归零。
BEC事件不是个案,智能合约的安全问题极易被忽视。不出所料,几天后的26日凌晨,SMT被爆出现类似漏洞,火币Pro和OKEx相继暂停了SMT交易,火币Pro同时暂停所有币种的充值提现。也就是说,黑客可以用同样的手法,抓取SMT以太坊智能合约中的漏洞来进行攻击,SMT很有可能会成为第二个BEC。至于以太坊上是否还有其他项目也采用了这样的方式,甚至已经上线交易所圈了大波韭菜,不得而知,细思极恐。所以,SAFE资深老韭菜再次提醒各个区块链团队以及智能合约开发爱好者,合约发布需要慎之又慎。
话说回来,这个漏洞比较明显,属于古老的整数溢出(overflow)攻击,溢出是程序设计者设计时的不足所带来的错误,利用一段没有进行安全校验的代码,黑客可以通过转账手段生成合约中不存在的、巨量的Token并将其转入正常账户进行交易,与真的Token分毫无差。
虽然这次黑客事件造成了BEC价值的巨大损失,但是相比合约中的规则漏洞或后门问题,整数溢出漏洞并非有多高级或难以发现,它只需要对计算结果进行safeMath的安全验证就可以。因此,BEC事件的发生反映出以太坊智能合约的编程规范、测试标准以及校验问题。当前,国内的区块链团队如雨后春笋,但是代码在上线前可能并没有做过专业审计,也没有通过设置赏金来悬赏漏洞。
针对目前以太坊智能合约上可能存在的种种问题,国外的多数区块链项目已发展出更成熟的处理方式,合约代码需要测试、review,它们一般会在上线部署前寻求专业安全审计团队的帮助,一些大的交易所和钱包甚至会要求提供第三方审计报告。
即便如此,SAFE资深老韭菜还是认为,这样的日防夜防终究不是长远之计,而且效果实在差强人意,大抵没有人会希望在加大了技术以及成本投入去保障智能合约的安全之后,入睡时分还要提心吊胆着有没有其它漏洞会被黑客所抓取。可能有的朋友不明白,为何智能合约的代码短短几行,还会出这么多的问题?我相信但凡从事智能合约开发2个月以上的开发人员都会对EVM以及solidity的各种坑深有感触。溯本逐源,是Account和UTXO两种模型体系的差别。
那什么是Account?Account翻译过来就是账户,比方说我银行卡账号A有1块钱,那么我们的第一反应就是账号A的余额为1元,这是最典型的账户模型体系,也是我们日常生活中最成熟的交易模型,以太坊选用的就是Account账户模型,以太坊为智能合约而设计,其账户模型里除了有余额(balance),还有智能合约代码,还有nonce,以及自定义的存储。
那什么是UTXO?UTXO模型是与账户差异化的一种金融交易模式,UTXO是未花费交易输出(unspend transaction output)的简称,所谓未花费交易输出是指地址上所有未花费交易金额的总和,它的最小单位是交易,每个交易对应到金额。UTXO一旦被创建便不可分割,遵循能量守恒定律,负责在交易中实现货币的价值转移,所以我们在比特币钱包里看到的账户余额,实际上就是UTXO聚合计算的产物。UTXO作为比特币独创的价值转移基本单元,其安全性和稳定性已被运行多年的比特币网络所验证。
综上所述,我们可以大致理解为:
UTXO的优势在于:
更加私密(用户要是每笔交易都换一个地址,那么就很难找到其中两个地址的相关性);潜在的可扩展性;
Account的优势在于:
节省大量空间(每笔交易只有一个输入、一个输出、一个签名);更大的可替代性;简单(编码简单,不需要更为复杂脚本);轻客户端;
UTXO和Account两种模型各有千秋,因此区块链项目在选择资产发行时,要考虑何种模型更适合自己的应用场景,这是极为关键的。目前,绝大多数区块链项目都基于这两种模型中的一种。而安网中的安资功能采用比特币UTXO模型,不用编写智能合约就能发行Token,这种模式相对以太坊智能合约更加方便、安全。
近段时间爆发的智能合约漏洞问题大都是代码的问题,假设发行资产无需智能合约,那么安全问题自然也就迎刃而解。安资的出现打破了比特币和以太坊社区以及开发者之间的壁垒,解决了以下几个需求痛点:
(1)降低发行Token风险,发行Token不需要编写智能合约,没有了代码风险,保护了Token的安全性;
(2)有的数字货币团队会为了获取短期利润而进行数字货币的开发。安网将通过一些规则设计来增加资产发行的成本,限制接口被滥用。比如:使用安资功能发币必须消耗500个SAFE、以及增收应用数据额外交易费的方式来限制交易数量、无价值应用和数据;从而警示开发者全面谨慎地权衡ROI,助力SAFE打造成为最好的数字货币。
(3)发币以及技术维护成本太高,没有专业的开发人才,可以交由安资解决,由图形化操作界面来完成整个发币过程,由区块链底层平台保障安全;
由此可见,安资模型的设计非常完善,而且比想象的要复杂的多。随着数字货币市场打得火热,大量黑客团体也会眼红转向关注数字货币的安全问题,除了最开始提到的增强安全审计,代码审核之外,还有一种途径就是直接交由能追溯初始,对交易链条的所有记录进行验证的区块链底层开发平台——安网来控制安全。
严复先生说:“非新无以为进,非旧无以为守。”如果不创新你就不能进步,但如果不记得传统,我们就不能保持胜利果实。谨以此句献给安网,至于最终要如何选择,让市场去决定吧!