概述
在区块链上具有通缩机制的代币最近经常受到攻击。本文将讨论并分析通缩机制代币受到攻击的原因,并给出相应的防御方案。
在代币中实现通缩机制通常有两种方式,一种是燃烧机制,另一种是反射机制。下面我们将分析这两种实现方式以及可能存在的问题。
燃烧机制
通常,具有燃烧机制的代币将在其_transfer函数中实现燃烧的逻辑。有时候会存在发送者承担手续费的情况。在这种情况下,接收方收到的代币数量不会发生变化,但发送方需要支付更多代币,因为其需要承担手续费。下面是一个简单的例子:
然后我们讨论这种情况下可能存在的风险。
dForce:veDF持有者现可将治理权委托给其他受信用户:3月29日消息,DeFi协议dForce宣布,随着协议TokenDF质押功能的上线,veDF持有者可以将他们的投票权,委托给自己选择的任何治理申请者的钱包地址(无需持有DFToken),代表他们进行讨论和投票。[2022/3/29 14:24:47]
如果单看代币合约,我们会发现这种写法其实没有什么问题,但是区块链中有很多复杂的情况,需要我们考虑很多方面。
通常,为了让代币有价格,项目方会在Uniswap、Pancakeswap等去中心化交易所为代币添加流动性。
其中,在Uniswap中,有一个函数skim,它会将流动性池中两种代币的余额和储备金的差值转移给调用方,以平衡余额和储备金:
NFT项目Evolved Apes疑跑路并卷走798枚ETH:10月6日消息,NFT项目Evolved Apes官方Twitter帐户和网站、该项目开发人员“Evil Ape”上周消失,另外还带走了798个ETH,价值270万美元。(brobible)[2021/10/6 20:08:50]
此时发送方变成了流动性池,当调用_transfer时,流动性池中的代币将被部分销毁,导致代币价格部分上涨。
攻击者利用此特性将代币直接转入流动性池中,然后调用skim函数转出,然后多次重复此操作,导致流动性池中大量代币被燃烧,价格也随之飙升,最后卖出代币获利。
ZG.COM于1月19日上线杠杆代币AAVEUP、AAVEDOWN:据ZG.COM官方公告,ZG.COM将于2021年1月19日16:00上线杠杆代币ETF交易——AAVEUP(做多AAVE)、AAVEDOWN(做空AAVE),并开通AAVEUP/USDT、AAVEDOWN/USDT 交易市场。
ZG.COM杠杆代币是由ZG.COM发行的一种带有杠杆功能的代币(非链上代币),该杠杆代币具有浮动杠杆、智能调仓机制、低费率等特点,并且每个杠杆代币的背后都对应了一篮子的ZG.COM合约持仓,杠杆代币价格将跟踪ZG.COM合约市场的价格变化,并随之产生杠杆水平的涨跌。[2021/1/18 16:25:51]
一个真实的攻击案例,winnerdoge(WDOGE):
动态 | 外媒:加密金融科技公司Savedroid被收购,因此将可能进入股票市场:总部位于法兰克福的加密金融科技公司Savedroid被Advanced Bitcoin Technologies AG(ABT)收购。根据报告,此次收购将把这家金融科技初创公司带入股票市场。据悉,2018年,Savedroid创始人Yassin Hankir伪造了进入埃及失踪,以及盗用ICO收入的举动,此举引起投资者恐慌,颇受争议。据Etherscan数据显示,Savedroid的代币目前的交易价格为0.0002美元,比其发行价0.001954美元贬值90%。(cointelegraph)[2019/10/6]
在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):
防御方案
通过解读针对燃烧机制和反射机制代币的攻击手法,不难发现攻击者攻击的核心点是操纵流动性池的价格,因此将流动性池的地址加入白名单,不涉及代币的销毁,不参与代币的反射机制,可以避免此类攻击。
总结
本文分析了通缩机制代币的两种实现机制以及针对这两种机制的攻击手段,最后给出了相应的解决方案。在编写合约时,项目方必须考虑代币与去中心化交易所结合的情况,以避免此类攻击。
标签:TALVER300RITPitquidity CapitalFacebook Metaverse1inch币能涨到3000吗Veritise
親愛的ZT用戶: 為了更好的用戶體驗,ZT將於近期在OTC板塊上線CAL交易。具體上線時間請關注後續公告。CAL是Metapacemaker的治理代幣,用戶通過生態貢獻獲得.
NFT作为可以代表独一无二的数字资产或实物资产的加密代币,它在区块链上具有唯一性和不可替代性。NFT在以太坊等智能合约平台上已经发展了多年,诞生了许多著名的项目和应用.
3月12日消息,SHIB首席开发者ShytoshiKusama发文称,Layer2区块链解决方案Shibarium早期Beta公测PUPPYNET已经上线.
尊敬的用戶:根據RDNT官方消息,其將於近期進行代幣遷移計劃,Hotcoin將支持RDNT代幣遷移.
经Odaily星球日报不完全统计,3月6日-3月12日公布的海内外区块链融资事件共30起,较上周数据有一定下降,已披露融资总额约为2.5亿美元,较上周有明显增加.
故事亮点比特币价格在过去24小时内下跌近10%BTC价格下跌拉回整个加密市场加密货币市场受到大规模熊市趋势的打击,先驱加密货币比特币价格已经失去了其最关键的20,000美元区域.