用户课堂是RatingToken团队专门针对用户需求而设计的新栏目。通过上期用户课堂的解读,大家已经对什么是智能合约及智能合约漏洞有了初步了解,本期将重点阐述智能合约中经常被利用且严重影响资产安全的高危漏洞类型“整数溢出”。
1.什么是“整数溢出漏洞”?
计算机语言中整数类型都有一个宽度,也就是说,一个整数类型有一个最大值和一个最小值。
当2个整数计算时,结果大于最大值或小于最小值就是溢出。举一个小例子说明一下:在区块链里面都是无符号整数,最小的就是0。
比如最大值为a,最小值为0 。在最大值和最小值之间如果发生以下计算:
a+1=0或者 0-1=a
此时就称为发生了整数溢出。
整数溢出的原理:
计算机中整数变量有上下界,如果在算术运算中出现越界,就会出现两类整数溢出。超出整数类型的最大表示范围,数字便会由一个极大值变为一个极小值或直接归零,这叫“上溢”,即上面例子中提到的a+1=0;超出整数类型的最小表示范围的话,数字便会由一个极小值或者零变成一个极大值,即上述0-1=a,这叫做“下溢”。
所谓物极必反就是这个道理。我们哲学中常常讲到的“度”在此处就是个很典型的示范。
整数溢出漏洞有什么后果?
“整数溢出漏洞”之前也已经被爆出过很多次,属于极度危险等级漏洞;漏洞引起的事件类型包括:超额铸币、超额购币、随意铸币、高卖低收、下溢增持等等;例如可导致原交易发起人使用0个或者少量的币就可以给其他地址转入大量的代币,也就是我们常常听到的代币无限增发。
http://m.8btc.com/zhengshuyichu-0815