概述
在区块链上具有通缩机制的代币最近经常受到攻击。本文将讨论并分析通缩机制代币受到攻击的原因,并给出相应的防御方案。在代币中实现通缩机制通常有两种方式,一种是燃烧机制,另一种是反射机制。下面我们将分析这两种实现方式以及可能存在的问题。燃烧机制
通常,具有燃烧机制的代币将在其_transfer函数中实现燃烧的逻辑。有时候会存在发送者承担手续费的情况。在这种情况下,接收方收到的代币数量不会发生变化,但发送方需要支付更多代币,因为其需要承担手续费。下面是一个简单的例子:
然后我们讨论这种情况下可能存在的风险。如果单看代币合约,我们会发现这种写法其实没有什么问题,但是区块链中有很多复杂的情况,需要我们考虑很多方面。通常,为了让代币有价格,项目方会在Uniswap、Pancakeswap等去中心化交易所为代币添加流动性。其中,在Uniswap中,有一个函数skim,它会将流动性池中两种代币的余额和储备金的差值转移给调用方,以平衡余额和储备金:
Cardano Spot推出新功能为用户提供支持:金色财经报道,Cardano Spot宣布推出新功能,以促进本地Cardano项目及其社区 的扩展。[2023/8/14 21:22:39]
此时发送方变成了流动性池,当调用_transfer时,流动性池中的代币将被部分销毁,导致代币价格部分上涨。攻击者利用此特性将代币直接转入流动性池中,然后调用skim函数转出,然后多次重复此操作,导致流动性池中大量代币被燃烧,价格也随之飙升,最后卖出代币获利。一个真实的攻击案例,winnerdoge(WDOGE):
WLD的流通供应量将在未来365天内增加10倍以上:金色财经报道,据Token Unlocks在社交媒体表示,WLD的流通供应量将在未来365天内增加10倍以上(1,060%);7月24日,worldcoin向市场发布了WLD代币,ATH价格为3.30美元,交易量达到1.51亿美元,ATL为1.66美元;投资者、团队和储备金于2024年7月24日开始解锁,解锁后仅移动了1.1亿/5.09亿枚WLD,每天有342万枚WLD解锁(每周发行量4.6%)。[2023/7/28 16:03:57]
在WDOGE合约的_transfer函数中,当block.timestamp>closingTime时,进入else循环。在代码第21行中,转账金额从发送方的余额中扣除,在代码第31行中,发送方又被燃烧了tokensToBurn数量的代币。攻击者利用这种手续费的机制,通过上述的攻击方式窃取流动性池中的所有价值代币(WBNB)。
肯尼亚央行不再将CBDC视为优先事项:金色财经报道,本周肯尼亚中央银行公布了其中央银行数字货币(CBDC)咨询的结果。该国对在不久的将来发行电子先令(e-Shilling)不感兴趣,但仍对可能改变当前支付格局的CBDC发展持开放态度。
反馈表明,CBDC被视为可能对普惠金融和跨境交易产生积极影响。
此次磋商是在央行去年发布的讨论文件之后进行的,探讨了未来CBDC的可行性。[2023/5/18 15:11:36]
反射机制
在反射机制中,用户每次交易都会收取手续费,用于奖励持有代币的用户,但不会触发转账,只是单纯修改一个系数。在这个机制中,用户有两种类型的代币数量,tAmount和rAmount。tAmount为实际代币数量,rAmount为反映后的代币数量,比率为tTotal/rTotal,一般的代码实现如下:
动态 | Blockade Games上线首款兼容以太坊和闪电网络支付的区块链游戏:8月30日,游戏初创公司Blockade Games宣布上线一款兼容以太坊和闪电网络支付的区块链游戏The Ledger of Szabo。游戏中隐藏8个独立的比特币和以太坊谜题,成功解开谜题的玩家可获得1个比特币的奖励,该奖金由The Pineapple Fund提供。[2019/9/2]
反射机制的代币中一般有一个叫做deliver的函数,会销毁调用者的代币,降低rTotal的值,所以比率会增加,其他用户反射后的代币数量也会增加:
动态 | 加密信息和数据服务公司Messari将推出Real 10交易量指标:据TheBlock报导,加密信息和数据服务公司Messari正在推出Real 10指标,该指标将只考虑准确报告交易量的交易所提供的数据。据此前报道,Bitwise的报告显示,95%的现货比特币交易量是由不受监管的交易所伪造的。[2019/3/27]
攻击者注意到这个函数,并用它来攻击相应的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):
防御方案
通过解读针对燃烧机制和反射机制代币的攻击手法,不难发现攻击者攻击的核心点是操纵流动性池的价格,因此将流动性池的地址加入白名单,不涉及代币的销毁,不参与代币的反射机制,可以避免此类攻击。总结
本文分析了通缩机制代币的两种实现机制以及针对这两种机制的攻击手段,最后给出了相应的解决方案。在编写合约时,项目方必须考虑代币与去中心化交易所结合的情况,以避免此类攻击。关于EoceneResearch
AtEoceneResearch,weprovidetheinsightsofintentionsandsecuritybehindeverythingyouknowordon’tknowofblockchain,andempowereveryindividualandorganizationtoanswercomplexquestionswehadn’tevendreamedofbackthen.了解更多:Website|Medium|Twitter
你可能听说过BTC-Fi,也可能没有。即使BTC-Fi将激活很大一部分比特币的最大价值,但是市场根本不关心.
Odaily星球日报译者|Moni 3月25日,NFT投资者BrandonRiley意外发现自己以77ETH价格购买的CryptoPunk被他不小心发送到销毁地址后化为乌有.
科学知识是支撑技术发展和经济增长的公共产品。然而,当前的科学体系充斥着低下的效率、寻租活动和阻碍创新的低透明度。为此,去中心化科学(DeSci)运动正在推出新的系统来维持、实施和传播开放科学.
在经历2023年最重要的一周后,数字资产行业在美国失去了三家对加密货币友好的银行机构。然而,到目前为止,投资者的主要反应似乎是在最不受信任的主要资产BTC和ETH中寻求安全.
「每周编辑精选」是Odaily星球日报的一档“功能性”栏目。星球日报在每周覆盖大量即时资讯的基础上,也会发布许多优质的深度分析内容,但它们也许会藏在信息流和热点新闻中,与你擦肩而过.
零知识证明正在成为未来十年根本性变革的技术。ZKP在Web3内外都有着应用。在Web3中,ZKP正在解决两个主要瓶颈——可扩展性和隐私:在可扩展性方面,几个ZKRollups,又名Validit.