面对漏洞百出的智能合约,我们到底该如何选择安全的币种?

区块链连环话

代币实时行情,看我就够了!

如果要用一个词来形容当下的社会,小编相信很多朋友都会说互联网社会。关于这一个趋势是毋庸置疑的,互联网的运用给我们的生活带来了许多意想不到的便利之处,而且在此基础上延伸的互联网+,更是让全世界的人民体会到了什么叫做科技信息化时代。但是不要忘记一个定律,那就是任何事物都是具有两面性的,在互联网带给我们方便的同时,也带来了意想不到的安全隐患,从而在这个世界上产生了一种新型的职业,那就是黑客。

黑客是一群技术高超的人群,他们利用自己得天独厚的天分,寻找互联网当中的漏洞,从而通过这些漏洞换取自己想要的一切。虽然目前很多基于互联网的行业在安全漏洞方面有了不错的突破,但是作为新型行业的区块链,自然是少不了被这些高智商人群的光顾。我们都知道,作为当下最热门的数字货币,它是基于以太坊区块链上,除非是受到了51%的攻击,不然的话基于以太坊区块链的数字货币是不会被黑客轻易盗走的,但是却可以通过另一项漏洞来完成,那就是智能合约。

智能合约它是属于以太坊上的一个小版块,它的主要作用就是向外发出数字货币,而那些黑客就是利用这个小版块的漏洞无限生成代币,说得通俗点就是可以自己“无限印钞”,通过制造出来的这些“假币”进行砸盘操作,最终将很多普通投资者的资金卷入自己名下,使这些投资者损失惨重。根据先关的专业人士分析,在智能合约中,黑客利用最多的漏洞就是整数溢出。关于这方面的整数溢出,它的解释为:如果两个8位变量A和B按位相乘,结果超出8位,超出位将被丢弃,只保留后8位长度。

在整个漏洞中出现的变量名字为totalTokensToTransfer,它的类型是uint,在Solidity当中uint的长度是256位,因此只要通过累加的方式超过2^256-1的数,就会发生整数溢出这样的情况。在实际操作过程中,一旦发生了这种情况,程序就会认为转出的代币总量成了零,只要投资者的账户中还有少量的代币,就会绕过验证的步骤,直接完成转账的操作。虽然otalTokensToTransfer是个非常庞大的数值,但是黑客可以通过这个漏洞让它自己检验不出来,从而就能毫无顾忌的制造出新的代币。

要想从代码上根本解决这一问题,只要将代码中普通的加减乘除符号替换掉,使用library SafeMath代替就能解决数据溢出的这个问题。我们分析完本身技术上的问题,再来分析一下黑客这样做谁的损失最大。其实关于这一点已经是非常明确了,黑客利用这种增发的手段,受到伤害的就是项目方与投资者了。就在4月份的时候,SMT项目就遭受到了这样的情况,当时导致SMT的价格大幅降低,暴跌了将近20%之多。好在SMT很对做出了回应,将相关的交易全部停止了,并且是冻结了不少的“假币”账户,从而防止黑客转移资产。

因此面对这样的黑客攻击,不管是项目方、投资者还是交易所都要有自己的应对方法,首先项目方要对自己的项目代码进行审核,不仅是自己的团队进行审核,最好请第三方专业团队进行评测,三人行必有我师嘛。同时还要设立专门的“保险资金”,以此来应对突发安全问题造成的损失。对于交易所而言,要对上线交易的代币代码进行安全审核,同时还要有实时监控的手段,一旦发现大额链上转入的情况,就要对相应的账户进行排查,必要的时候还要冻结账户。对于投资者因为没有相应的判断能力,所以在选择币种的时候就选择那种老牌的币种,因为他们的风险相对要小一些。

微信ID:

qianjizhitan

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180809G1BEQN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券