火星链 火星链
Ctrl+D收藏火星链
首页 > 区块链 > 正文

BSP:通缩代币相关安全问题 教你如何完美避坑

作者:

时间:1900/1/1 0:00:00

近期Beosin安全团队研究发现,通缩代币引起的安全事件依然频发,造成众多项目方资金的损失,因此,Beosin安全团队准备了这篇详解通缩代币的文章,与大家分享。

本文将对通缩代币与pair结合过程中容易出现的问题以及历史发生的真实通缩代币安全事件两个方面进行介绍,通过本文,我们将彻底搞清楚通缩代币是什么意思以及通缩代币发生安全问题所涉及的原理,使我们在之后的项目中避坑。

火币七爷:HT被低估时间越长,通缩拐点到来后的反弹力度就越大:7月17日晚,火币全球站CEO七爷在做客 BitUniverse 币优V姐访谈时表示,近期不少海外机构如 Multicoin、Decentral Park ,国内机构如 TokenInsight 在报告分析中都认为HT偏离基本面被低估。

七爷认为,无论哪种模型,其带来的通缩效应需要积累一段时间,达到“通缩拐点”,即当通缩进展到一定程度时,就会由量变产生质变,形成价格的快速拉伸。目前在几大主流平台币中,唯有HT还未到达通缩拐点,主要原因是HT应用销毁模型比一些平台晚了一年多,还处于积累阶段;另外官方不干预市场,不做拉盘控盘的危险操作。

七爷表示,其实HT长期价格低估,对团队而言是中性的,并没什么不好。因为从长远来看,当前HT销毁进程依然处于早期,而价格低估的时间越长,销毁率(通缩率)就越高,在拐点到来后的反弹力度就越大。今年上半年火币销毁HT已超过2000万个,历史将是公平的,目前其他主流平台币已经过了快速拉伸期,唯有HT的通缩拐点尚未到来,但其终将到来。[2020/7/17]

(3)销毁问题

该问题主要出现在使用“映射”机制的通缩代币中,这种代币的机制是存在两种代币余额存储变量,分别为tOwned和rOwned,而tOwned存储的是实际代币数量,rOwned存储的是通过currentRate变量放大映射之后的值。

rOwned的作用是什么呢?在文章开始说过,通缩代币能激励用户持有代币,这种激励目的使用的方式便是对交易者扣除rOwned值,同时扣除rTotal,这样其他用户rOwned所占rTotal的比例就会被动增加,实现被动收益。(rOwned与rTotal可理解为用户的股份以及总股份)

火币销毁1.5亿枚HT,HT正式进入“绝对通缩”:2月29日,火币全球站发布公告宣布,火币将再销毁1.5亿枚HT。本次永久销毁的1.5亿枚HT包括:(1)未发行部分中的HT运营部分9734.23万枚HT;(2)由2018年1、2季度二级市场回购、投票上币收入组成的投资者保护基金部分5007.56万枚HT。后续发生风险事故将由平台风险保证金承担,继续实现对火币用户权益的全面保护。在新的HT通证规则下,火币不再增发HT,员工激励部分不会流入二级市场,不再有解锁HT的新增流通,HT从此正式进入“绝对通缩”新阶段。本次销毁后,火币已累计销毁近2亿枚HT,流通盘仅剩约2.4亿枚HT。[2020/2/29]

用户查询余额的方式有两种情况,一种是除外地址,直接返回tOwned的值,另一种是非除外地址,返回rOwned/currentRate,而currentRate计算方式为rTotal/tTotal。如果有办法使得rTotal减小,那么用户查询出的实际余额将变大,而如果pair查询余额变大,则可以通过skim函数将多余的代币转移出去。

而该类通缩代币存在一个deliver()函数,非除外地址可调用,该函数会将调用者的rOwned销毁,并销毁相同数量的_rTotal,使得所有非除外地址的余额查询增加,pair如果非除外的话,便可使用上述方式套利攻击。

3 通缩代币相关安全事件剖析

(1)AES安全事件

北京时间2023年1月30日,Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测到,AES遭受到黑客攻击,该项目便存在上述的Skim问题。

AES-USDT pair合约有一个skim函数,该函数可以强制平衡pair的供应量,将多余资金发送给指定地址。

攻击者在本次攻击过程中,首先向pair里面直接转入了部分AES代币,导致供应量不平衡,从而攻击者调用skim函数时,会将多余的这部分代币转到攻击者指定地址,而攻击者在此处指定了pair合约为接收地址,使得多余的AES又发送到了pair合约,导致强制平衡之后pair合约依然处于不平衡状态,攻击者便可重复调用强制平衡函数,而AES发送过程会调用到AES合约的transfer函数,如下图。

另外一点,当调用AES代币合约的transfer函数时,若发送者为合约设置的pair合约时,会将一部分费用记录在swapFeeTotal之中(如上图过程),在最后的时候可以统一调用distributeFee函数(如下图)将swapFeeTotal记录的费用从pair中转出,这里相比上述的过程,攻击者可以不用做sync函数调用操作,而是在最后将费用转移出去之后调用一次sync函数即可。

攻击者经过反复的强制平衡操作,费用记录变得异常大,基本接近pair的总余额,最后攻击者调用distributeFee函数将pair里面的AES转出,pair的AES余额变得非常少,导致攻击者利用少量AES兑换了大量的USDT。

(2)BevoToken安全事件

北京时间2023年1月30日,Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测到,BevoToken遭受到闪电贷攻击,该项目便是上面所说的“映射”机制通缩代币。

由于BevoToken合约的balanceOf函数(如下图)并非ERC20标准的函数,该函数在经过一些计算处理后再返回余额,而转账或其他操作可能使前后计算返回的余额不一致,当攻击者在swap操作前后可凭借这个问题来操控pair合约的余额,从而skim出多余的代币。

攻击者首先在pancake贷出192.5个BNB,之后换成约302,877个BEVO代币,再调用被攻击合约的deliver函数(如下图),此时_rTotal的值减小,_rTotal的值减小会导致_getRate中计算的值偏小,此时balanceOf返回的余额则会偏大,导致攻击者能skim出多余的BEVO。

之后,攻击者再将skim出的代币进行deliver,此时_rTotal的值已经很小了,在进行_getRate计算时,会减去除外地址的rOwned(如下图),此值固定且被攻击者在之前通过burn异常放大的,在最开始_rTotal正常的时候,减去该值对结果的影响不大,但是现在_rTotal被攻击者操控得异常小,再减去这个异常放大的固定值后,对结果产生了巨大的影响,第一次deliver导致pair计算结果偏大3倍,而第二次deliver之后,pair计算结果则偏大了数百倍,这也是为什么攻击者获得的代币要比自己销毁的代币多得多的原因。

通缩项目在业务设计的时候一定要考虑到与pair交互的情况,自身的通缩机制是否会对pair产生影响。我们也建议相关项目上线前寻找专业的安全审计机构进行全面的代码以及业务的安全审计工作。

Beosin

企业专栏

阅读更多

金色财经 善欧巴

金色早8点

Odaily星球日报

欧科云链

Arcane Labs

深潮TechFlow

MarsBit

BTCStudy

澎湃新闻

标签:AIRPAIBSPTOKEthereumFairpaid币官方最新消息BSPTUndo Token

区块链热门资讯
ERO:硅谷银行破产后 创新要靠谁来拯救?

作者:尚航飞(中国邮政储蓄银行资产负债管理部职员)当地时间3月10日,美国第16大银行硅谷银行(Silicon Valley Bank)宣布破产,成为美国史上第二大规模的商业银行破产事件.

1900/1/1 0:00:00
CHA:ChatGPT热潮之下 虚假新闻、算法歧视、信息泄露的法律风险你了解吗?

文:赵志东 蔡佳雯2022年底,美国科技初创公司OpenAI发布的智能聊天工具ChatGPT一夜火爆.

1900/1/1 0:00:00
ACE:什么是NFT版税?NFT版权税是什么意思?

版税也称特许权使用费,是更广泛的金融领域中的重要工具之一。特许权使用费是一方因使用另一方的资产而向另一方支付的费用。而不可替代的代币在解决与传统版税支付系统相关的挫折方面具有显着优势.

1900/1/1 0:00:00
GPT:人工智能:中国式ChatGPT的“大跃进”

图片来源:由无界版图AI工具生成3月2日,OpenAI正式开放了ChatGPT的API接口,开发人员可以将ChatGPT模型集成到他们的应用程序和产品中.

1900/1/1 0:00:00
LVE:又一个大雷引发市场巨震?Silvergate或将跌落:成也加密败也加密?

作者:Terry3月1日,加密友好银行集团 Silvergate Capital布将推迟提交其年度 10-K 报告,(10-K 报告是美国证券交易委员会要求的一份文件.

1900/1/1 0:00:00
DEF:稳定币”野猫“时代:DeFi协议纷纷发行稳定币会产生什么影响

文/Ben Give,Bankless作者;译/金色财经xiaozouDeFi协议正在行动。随着基于费用的商业模式的回报率下降和链上活动的枯竭,蓝筹DeFi协议正在寻求可替代的收入来源,以强化协.

1900/1/1 0:00:00