概述
在区块链上具有通缩机制的代币最近经常受到攻击。本文将讨论并分析通缩机制代币受到攻击的原因,并给出相应的防御方案。
在代币中实现通缩机制通常有两种方式,一种是燃烧机制,另一种是反射机制。下面我们将分析这两种实现方式以及可能存在的问题。
燃烧机制
通常,具有燃烧机制的代币将在其_transfer函数中实现燃烧的逻辑。有时候会存在发送者承担手续费的情况。在这种情况下,接收方收到的代币数量不会发生变化,但发送方需要支付更多代币,因为其需要承担手续费。下面是一个简单的例子:
然后我们讨论这种情况下可能存在的风险。
徐坤:Filecoin项目需要从技术角度和投资角度去分析:OKEx首席战略官徐坤今日发微博表示,对于Filecoin项目本身,需要从技术角度和投资角度去分析它,一切的投资是可以用数据量化的,资产有背后的价值作为支撑,可持续就可以去考虑;
另外一方面,放长周期去看一个事物的发展,它是否能够经历时间的考验。投资是反人性的,事实证明,很多投资者在每一个阶段可以享受一个事物不同的红利,所以分析判断一个投资的周期长度以及市场变化,再认真思考去做决定。[2020/7/14]
如果单看代币合约,我们会发现这种写法其实没有什么问题,但是区块链中有很多复杂的情况,需要我们考虑很多方面。
掌柜调查署|节点资本创始合伙人杜均:单纯从技术角度来看,并没有看到IPFS技术的突破:在今日举行的掌柜调查署中,针对“IPFS和Filecoin有哪些重大创新,为什么大家如此关注“的问题,节点资本创始合伙人杜均表示,个人认为,无论是比特币为代表的区块链1.0,还是以太坊为代表的区块链2.0,以及现在我们大热的IPFS(激励层Filecoin),都是一群“技术中立”信仰者构建的理想国,希望通过“CODE IS LAW”促进社会变得更公平更美好。单纯从技术角度来看,我并没有看到技术的突破,我更多看到的是利用区块链思维对传统互联网访问协议以及分布式存储的升级。大家关注的点不一样,只有极少数人关注到IPFS的技术创新,更多的人关注的是如何赚钱。更多详情见原文链接。[2020/7/4]
通常,为了让代币有价格,项目方会在Uniswap、Pancakeswap等去中心化交易所为代币添加流动性。
声音 | 王春蕊:区块链已从技术构想走入现实 在智慧城市建设中将大有作为:新京报智慧城市研究院研究员王春蕊今日发表题为“智慧城市和区块链能擦出怎样的火花?”评论文章。文章中提到,区块链在智慧城市建设中将大有作为。区块链实现信息共享,保障数据安全;“区块链+政务”,为数字社会增信;“区块链+民生”,能够提供更智能的公共服务。区块链作为核心技术,已经从技术构想走入现实,在智慧城市领域特别是信息共享方面彰显出了巨大应用潜力。(新京报)[2019/11/5]
其中,在Uniswap中,有一个函数skim,它会将流动性池中两种代币的余额和储备金的差值转移给调用方,以平衡余额和储备金:
腾讯研究院金融科技研究中心杜晓宇:应从技术、应用、市场等维度来展开区块链与法律的研究 :在第一期“法律人的互联网思维”系列研修会上,腾讯研究院金融科技研究中心副主任杜晓宇进行了“区块链技术对法律的影响和挑战”的主题发言。他认为,区块链链对法律的影响与挑战不宜从单一角度笼统去概括,可以考虑从“区块链技术与法律”、“区块链应用与法律”、“区块链市场与法律”、“区块链子与法律”四个维度来展开分析。[2018/4/19]
此时发送方变成了流动性池,当调用_transfer时,流动性池中的代币将被部分销毁,导致代币价格部分上涨。
攻击者利用此特性将代币直接转入流动性池中,然后调用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):
防御方案
通过解读针对燃烧机制和反射机制代币的攻击手法,不难发现攻击者攻击的核心点是操纵流动性池的价格,因此将流动性池的地址加入白名单,不涉及代币的销毁,不参与代币的反射机制,可以避免此类攻击。
总结
本文分析了通缩机制代币的两种实现机制以及针对这两种机制的攻击手段,最后给出了相应的解决方案。在编写合约时,项目方必须考虑代币与去中心化交易所结合的情况,以避免此类攻击。
1.关于非首发项目Kaspa(KAS)空投结果Gate.ioStartup非首发项目Kaspa代币KAS于Mar12th,PM03:00开始下单,24小时内下单同等对待,总共有14.
1900/1/1 0:00:00親愛的用戶:幣安將於2023年03月12日14:30上線BNB/USDC、BTC/USDC、ETH/USDC交易對,邀您體驗!立即開始在幣安現貨交易注意:當翻譯與英文原文不一致時.
1900/1/1 0:00:00公众呺:Web3团子随着涉及硅谷银行、SignatureBank和Silvergate等机构的银行业危机,投资者纷纷涌向加密货币替代品。主要银行倒闭带来的金融混乱有利于DEX和CEX代币.
1900/1/1 0:00:00尽管USDC是由Circle和Coinbase两家公司共同发行和管理的稳定币,合规性得到了广泛的认可和监管机构的支持,但我们需从USDC脱钩事件观看其他稳定币的表现.
1900/1/1 0:00:00多边形已进入看跌趋势区域。多边形价格长期预测:看跌在3月4日价格下跌后,目前的卖压有所缓解。下降趋势已转向横盘整理.
1900/1/1 0:00:00OP打造超级链,将Arbitrum赶下宝座?你听说过吗?Optimism正在研究可以在第2层链之间的强化竞争中弹射以太坊扩展解决方案的东西。甚至可能领先于Arbitrum.
1900/1/1 0:00:00