宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > AVAX > 正文

从技术角度解析:为什么通缩机制的代币易受攻击

作者:

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

概述

在区块链上具有通缩机制的代币最近经常受到攻击。本文将讨论并分析通缩机制代币受到攻击的原因,并给出相应的防御方案。

在代币中实现通缩机制通常有两种方式,一种是燃烧机制,另一种是反射机制。下面我们将分析这两种实现方式以及可能存在的问题。

燃烧机制

通常,具有燃烧机制的代币将在其_transfer函数中实现燃烧的逻辑。有时候会存在发送者承担手续费的情况。在这种情况下,接收方收到的代币数量不会发生变化,但发送方需要支付更多代币,因为其需要承担手续费。下面是一个简单的例子:

然后我们讨论这种情况下可能存在的风险。

美联储半年度货币政策报告:将会逐次会议做出进一步加息的决策:金色财经报道,美联储半年度货币政策报告显示,将会逐次会议做出进一步加息的决策;银行业系统仍然健康并充满韧性;进一步收紧的信贷环境将对经济活动水平施压;一段时间内经济增速低于趋势水平才能遏制通胀;通胀已经放缓,但仍高于2%的目标水平。[2023/6/17 21:42:56]

如果单看代币合约,我们会发现这种写法其实没有什么问题,但是区块链中有很多复杂的情况,需要我们考虑很多方面。

通常,为了让代币有价格,项目方会在Uniswap、Pancakeswap等去中心化交易所为代币添加流动性。

微软Edge浏览器正测试内置加密钱包:金色财经报道,软件工程师Albacore在社交媒体披露微软正在为其Edge浏览器测试一个内置的加密钱包,目前微软还没有正式公布钱包项目,钱包的介绍页面也没有说明支持哪些加密货币,不过该项目提到涉足加密货币和NFT,而泄露的屏幕截图表明至少支持以太坊、DAI、USDC和USDT。其中一些代币似乎是由用户通过自定义代币选项添加的。其他屏幕截图表明,该钱包可能会与Coinbase和Moonpay交易集成,也可以通过其设置面板支持其他扩展钱包,以及一个“探索”选项卡。

据悉,微软Edge浏览器的内置钱包是非托管的,这意味着用户可以完全控制自己的资金,但微软无法帮助用户找回钱包。[2023/3/18 13:12:07]

其中,在Uniswap中,有一个函数skim,它会将流动性池中两种代币的余额和储备金的差值转移给调用方,以平衡余额和储备金:

韩国釜山数字资产交易所将支持ST0和虚拟资产交易:1月30日消息,韩国釜山数字资产交易所成立委员会负责人表示,釜山数字资产交易所预计下半年推出,将支持证券型代币(ST0)和虚拟资产交易,并称“釜山交易所为了避免利益冲突,将托管、结算分开进行,上市审查也分开进行”。

此前消息,韩国釜山市计划建立以区块链为基础的去中心化数字商品交易所,涵盖电影、游戏 IP、贵金属、农畜产品、船舶、房地产等的代币化交易,并计划在今年内开始运营。[2023/1/30 11:36:30]

此时发送方变成了流动性池,当调用_transfer时,流动性池中的代币将被部分销毁,导致代币价格部分上涨。

韩国央行携手10家商业银行开展数字货币第三阶段测试:7月19日消息,近日,韩国银行宣布,将携手包括新韩银行、韩国农协银行在内的至少10家商业银行进行零售央行数字货币(CBDC)的第三阶段测试,了解并确认CBDC与金融机构IT系统间的互操作性。今年晚些时候,韩国银行将就根据测试结果发布一份有关数字韩元的调查报告。(未央网)[2022/7/19 2:22:19]

攻击者利用此特性将代币直接转入流动性池中,然后调用skim函数转出,然后多次重复此操作,导致流动性池中大量代币被燃烧,价格也随之飙升,最后卖出代币获利。

一个真实的攻击案例,winnerdoge(WDOGE):

在WDOGE合约的_transfer函数中,当block.timestamp>closingTime时,进入else循环。在代码第21行中,转账金额从发送方的余额中扣除,在代码第31行中,发送方又被燃烧了tokensToBurn数量的代币。攻击者利用这种手续费的机制,通过上述的攻击方式窃取流动性池中的所有价值代币(WBNB)。

反射机制

在反射机制中,用户每次交易都会收取手续费,用于奖励持有代币的用户,但不会触发转账,只是单纯修改一个系数。

在这个机制中,用户有两种类型的代币数量,tAmount和rAmount。tAmount为实际代币数量,rAmount为反映后的代币数量,比率为tTotal/rTotal,一般的代码实现如下:

反射机制的代币中一般有一个叫做deliver的函数,会销毁调用者的代币,降低rTotal的值,所以比率会增加,其他用户反射后的代币数量也会增加:

攻击者注意到这个函数,并用它来攻击相应的Uniswap的流动性池。

那他该如何进行利用呢?同样从Uniswap的skim函数开始:

Uniswap中reserve是储备金,与token.balanceOf(address(this))不同。

攻击者先调用deliver函数销毁自己的代币,导致rTotal的值减少,比率随之增加,所以反射后的代币的值也会增加,token.balanceOf(address(this))也会相应变大,与reserve的值出现了差距。

因此,攻击者可以通过调用skim函数转出数量为两者之间差值的代币从而进行获利。

一个真实的攻击案例,BEVONFTArtToken(BEVO):

而当代币合约中存在burn函数时,存在了另外一种相似的攻击手法:

当用户调用burn函数时,自己的代币会被销毁,同时tTotal的值会减少,所以比率会降低,对应的反射后的代币数量也会减少,所以在此时流动性池的代币的数量也会减少,从而代币的价格会上涨。

攻击者利用这个特性通过多次调用burn函数来减少tTotal的值,然后调用流动性池的sync函数同步reserve和balances。最后,流动性池中的代币大幅减少,价格飙升。然后攻击者出售代币以获取利润。

一个真实的攻击案例,SheepToken(SHEEP):

防御方案

通过解读针对燃烧机制和反射机制代币的攻击手法,不难发现攻击者攻击的核心点是操纵流动性池的价格,因此将流动性池的地址加入白名单,不涉及代币的销毁,不参与代币的反射机制,可以避免此类攻击。

总结

本文分析了通缩机制代币的两种实现机制以及针对这两种机制的攻击手段,最后给出了相应的解决方案。在编写合约时,项目方必须考虑代币与去中心化交易所结合的情况,以避免此类攻击。

标签:TALSWAPTOTTOKENKatalyoSimbcoin SwapTOTO币dbktoken

AVAX热门资讯
Silvergate和硅谷银行引发了对美国经济前景的主要担忧

Silvergate和硅谷银行陷入困境。行业专家对银行业的惨败发出警告。银行引发了上一次全球金融危机。对于加密行业来说,事情似乎还不够糟糕,迫在眉睫的美国银行业危机可能只是冰山一角。美国两家主要银行在同一周倒闭.

1900/1/1 0:00:00
加密市场损失600亿美元;BTC崩盘低于2万美元发生了什么?

根据Coinglass的数据,随着加密货币崩盘的继续,世界上最大的加密货币比特币遭受了1.2亿美元的清算。加密崩溃新闻:由于对美国加密友好银行的未来的担忧加剧,全球数字资产市场周五出现广泛抛售.

1900/1/1 0:00:00
MATIC反弹至 1.00 美元上方

多边形已进入看跌趋势区域。多边形价格长期预测:看跌在3月4日价格下跌后,目前的卖压有所缓解。下降趋势已转向横盘整理。在跌至1.09美元的低点后,该加密货币在过去四天一直在1.00美元的支撑位上方盘整.

1900/1/1 0:00:00
加密支付网关Alchemy Pay与ZD Group合作,共享其四张香港金融牌照

据官方公告,加密支付网关宣布,它已与全球投资基金MouetteSecurities的母公司ZDGroup合作.

1900/1/1 0:00:00
CME 推出BTC事件合约,比特币飙升至24,000美元以上

自成立以来,CME的比特币期货已交易550,000份合约。“我们关于比特币期货的新事件合约为广泛的投资者提供了一种风险有限、高度透明的方式,可以通过完全监管的交易所进入比特币市场.

1900/1/1 0:00:00
Shiba Inu 现在是去中心化域名注册可接受的支付方式

受meme启发的加密货币ShibaInu($SHIB)现在被接受为去中心化域注册服务UnstoppableDomains的支付方式,随着时间的推移,它一直在添加新的数字资产作为支付方式.

1900/1/1 0:00:00