身在新冠日增确诊10万例美国的小编,因为硬核原因不得不搭乘飞机出门。出行前一直担忧是否会被传染,途中却被飞机会到激烈气流的波动唬住了。
固然心里冷静慰藉本身飞机空难产生的概率很是低,传染新冠肺炎的概率也没那么高,但照旧想起来了四个字:“墨菲定律”在现代科技成长的大潮水下,锁定在区块链规模里的资产愈发复杂。埋没在计较机背后的危机也跟着区块链的成长日益展露狰狞的脸孔。
智能合约傍边,任何一个小bug,都大概会给项目可能投资者造成无法挽回的损失。
受此警示之下,CertiK安详团队操作CertiK天网系统(Skynet),对自北京时间2020年12月4日0时至24时之间,新插手Uniswap的代币智能合约举办了监控阐明。
在本次阐明的时间段内,一共发生了29个智能合约代币项目。
颠末CertiK的Skynet阐明,总计发明16个智能合约存在裂痕可能缺陷!
或许有55%的智能合约项目或多或少存在裂痕可能缺陷,个中约莫有10%存在严重裂痕,45%存在项目拥有者权限过大,权限中心化过高的缺陷。
本次阐明的智能合约项目名称和合约地点如下:
阐明功效如下:
固然难以通过一天的环境来预估所有时间范畴内的智能合约安详环境,但窥一斑而知全豹。
下面主要针对三个相对重要的裂痕举办阐明:
nostromo.finance (NSTR)
图1: burnFrom()函数图1中burnFrom函数受到ownerOnly修饰词限制,只答允项目打点者执行该函数。该函数内部逻辑实现答允通过配置account, balance和subtractValue的值,,间接对_totalSupply和给定账户的_balances值举办任意修改。
PowerPool.Finance (CVP)
图2:powerpoolttl合约中回退函数图2中为powerpoolttl合约的回退函数。当外部用户对该智能合约举办挪用,假如该挪用中没有挪用合约中的任何一个函数,可能仅仅转移了代币到该合约中,则回退函数会被挪用。70行的逻辑显示,当回退函数被挪用时,挪用中被转移到条约中的代币会被直接转移到teamAddress的地点中。
omphalos.co (OMPL)
该项目中可以通过执行transferFrom()函数举办对代币转移,按照图3中transferFrom()函数界说,211行需要执行getFee函数抉择每次代币转移需要扣除的用度。从图3中getFee()函数的界说可以看到,抉择用度坎坷的逻辑是取决与241行挪用的Management.getFee()函数的界说。当前Management.getFee()函数的逻辑界说是按照manager变量中存储的地点值的差异而举办改变。当前manager变量中存储的地点值如图6所示。
然而manager变量中存储的地点值所指向的智能合约并未在etherscan上被认证,因此无法得知该智能合约的源代码,继而无从得知Management.getFee()函数的界说。
由于Management.getFee()函数背后的逻辑无法得知,因此项目拥有者有大概通过操纵Management.getFee()函数返回值的方法,调解每次代币转移的用度,举办恶意操纵等。
图3:transferFrom()函数
图4:StandardToken合约中的getFee()函数
图5:Management智能合约接口与getFee函数接口
图6:当前manager变量存储的地点值
图7:当前manager变量存储的地点值指向的智能合约
各人都知道2020年最知名的一个例子——DeFi项目Yam于北京时间8月12日3:00启动后,尽量该项目标博客文章告诫称尚未对其合约举办任何审计,但猖獗的Yield farmers在不到一小时内向该项目存入了7600万美元。
后期不出料想,Yam在短短36小时内,数亿美元因为一个小小的裂痕,消失于无形。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。