比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 幣贏 > Info

從技術角度解析:為什么通縮機制的代幣易受攻擊_TOK

Author:

Time:1900/1/1 0:00:00

作者:EoceneResearch

概述

在區塊鏈上具有通縮機制的代幣最近經常受到攻擊。本文將討論并分析代幣令牌受到攻擊的原因,并給出相應的防御方案。

在代幣中實現通縮機制通常有兩種方式,一種是燃燒機制,另一種是反射機制。下面我們將分析這兩種實現方式可能存在的問題。

燃燒機制

通常,具有燃燒機制的代幣將在其_transfer函數中實現燃燒的邏輯。有時候會存在發送者承擔手續費的情況。在這種情況下,接收方收到的代幣數量不會發生變化,但發送方需要支付更多代幣,因為其需要承擔手續費。下面是一個簡單的例子:

function_transfer(addresssender,addressrecipient,uint256amount)internalvirtualreturns(bool){

require(_balances>=amount,"ERC20:transferamountexceedsbalance");

require(sender!=address(0),"ERC20:transferfromthezeroaddress");

require(recipient!=address(0),"ERC20:transfertothezeroaddress");

burnFee=amount*burnFeeRate;

_balances-=amount;

_burn(sender,burnFee);

_balances+=amount;

}

然后我們討論這種情況下可能存在的風險。

如果單看代幣合約,我們會發現這種寫法其實沒有什么問題,但是區塊鏈中有很多復雜的情況,需要我們考慮很多方面。

火幣論壇對話汪弘彬:從技術層面來說,區塊鏈將在金融領域發揮領先作用:新加坡時間12月30日下午,歐洲貨幣機構投資者集團大中華區CEO汪弘彬做客火幣論壇,以“回顧與展望,從疫情到復蘇”為主題,與火幣商務副總裁Ciara探討在疫情的持續影響下,企業該如何進行數字化轉型。

汪弘彬認為,疫情推動了數字浪潮的發展,從技術層面來說,區塊鏈和加密貨幣行業將在金融領域發揮領先作用,并且會迅速成長為不同于大數據、人工智能和物聯網的另一種新技術,未來勢必會有很大的發展空間。比特幣在2020年表現突出。但如果比特幣要成長為更成熟的資產類別的話,必須要經歷一系列的周期,比特幣至今還沒有一個完整的周期。成熟的機構投資者要了解這一點,然后再進入這個市場。

“據我個人觀察,比特幣的資產類別變得愈來愈清晰了,這會吸引越來越多的機構進入這個市場,但我們還是要從宏觀角度來看比特幣整體周期的發展。但從長遠來看,我對這類資產很樂觀。”汪弘彬最后總結道。[2020/12/31 16:08:51]

通常,為了讓代幣有價格,項目方會在Uniswap、Pancakeswap等去中心化交易所為代幣添加流動性。

其中,在Uniswap中,有一個函數skim,它會將流動性池中兩種代幣的余額和儲備金的差值轉移給調用方,以平衡余額和儲備金:

functionskim(addressto)externallock{

address_token0=token0;//gassavings

address_token1=token1;//gassavings

_safeTransfer(_token0,to,IERC20(_token0).balanceOf(address(this)).sub(reserve0));

_safeTransfer(_token1,to,IERC20(_token1).balanceOf(address(this)).sub(reserve1));

掌柜調查署|節點資本創始合伙人杜均:單純從技術角度來看,并沒有看到IPFS技術的突破:在今日舉行的掌柜調查署中,針對“IPFS和Filecoin有哪些重大創新,為什么大家如此關注“的問題,節點資本創始合伙人杜均表示,個人認為,無論是比特幣為代表的區塊鏈1.0,還是以太坊為代表的區塊鏈2.0,以及現在我們大熱的IPFS(激勵層Filecoin),都是一群“技術中立”信仰者構建的理想國,希望通過“CODE IS LAW”促進社會變得更公平更美好。單純從技術角度來看,我并沒有看到技術的突破,我更多看到的是利用區塊鏈思維對傳統互聯網訪問協議以及分布式存儲的升級。大家關注的點不一樣,只有極少數人關注到IPFS的技術創新,更多的人關注的是如何賺錢。更多詳情見原文鏈接。[2020/7/4]

}

此時發送方變成了流動性池,當調用_transfer時,流動性池中的代幣將被部分銷毀,導致代幣價格部分上漲。

攻擊者利用此特性將代幣直接轉入流動性池中,然后調用skim函數轉出,然后多次重復此操作,導致流動性池中大量代幣被燃燒,價格也隨之飆升,最后賣出代幣獲利。

一個真實的攻擊案例,winnerdoge(WDOGE)?:

function_transfer(addresssender,addressrecipient,uint256amount)internalvirtualreturns(bool){

require(_balances.amount>=amount,"ERC20:transferamountexceedsbalance");

require(sender!=address(0),"ERC20:transferfromthezeroaddress");

require(recipient!=address(0),"ERC20:transfertothezeroaddress");

分析師:從技術上講比特幣可能需要數月才能修復:Fundstrat Global Advisors LLC的技術策略師Rob Sluymer表示,比特幣已經跌破了2015年至2020年的上升趨勢,其價格走勢“嚴重受損”。就目前而言,從技術上講,比特幣可能需要數月才能修復。(彭博社)[2020/3/20]

if(block.timestamp>=openingTime&&block.timestamp<=closingTime)

{

_balances.amount-=amount;

_balances.amount+=amount;

emitTransfer(sender,recipient,amount);

}

else

{

uint256onePercent=findOnePercent(amount);

uint256tokensToBurn=onePercent*4;

uint256tokensToRedistribute=onePercent*4;

uint256toFeeWallet=onePercent*1;

uint256todev=onePercent*1;

uint256tokensToTransfer=amount-tokensToBurn-tokensToRedistribute-toFeeWallet-todev;

?

_balances.amount-=amount;

_balances.amount+=tokensToTransfer;

_balances.amount+=toFeeWallet;

聲音 | 王和:未來區塊鏈將從技術的范疇走向社會的范疇:12月5日,第四屆智能金融國際論壇暨2019金融界“領航中國”年度盛典在北京盛大召開,逾千位精英學者、數百家金融機構共同聚首,探討中國和世界的“大變局、大視野、大未來”。在圓桌討論“新技術 新革”上,中國人民財產保險公司原監事長王和參與討論。當前區塊鏈具有戰略性的機遇,同樣重要的是具備更多應用場景的就是5G技術,對此,王和表示,區塊鏈技術到已經走過了十年。在中國基本上經歷了三個階段,首先是是2009年、2010年以比特幣為代表的周期。第二個階段是2016年至2018年,區塊鏈迅速的走進大眾視野,多種類數字貨幣出現。第三個階段是從今年下半年,到2020年將開啟的全新時代。關于區塊鏈的未來,王和認為,未來區塊鏈對于人類社會的影響,要比現在想象的更為廣泛和深刻,未來也將迎來新一輪的區塊鏈發展的新歷史時期。 盡管區塊鏈技術現在還面臨的很多的瓶頸,但要有足夠的信心、想象力和技術跨越這些困難。 最后,未來區塊鏈和5G的結合,可能將給我們帶來全新的概念:速度等于可能。數字經濟時代,速度將成為一個國家的核心競爭力,5G無疑是速度的代表。[2019/12/5]

_balances.amount+=todev;

if(!_balances.exists){

_balanceOwners.push(recipient);

_balances.exists=true;

}

redistribute(sender,tokensToRedistribute);

_burn(sender,tokensToBurn);

emitTransfer(sender,recipient,tokensToTransfer);

}

returntrue;

聲音 | 孚鏈科技創始人趙偉:區塊鏈從技術、模式、組織、融資對行業有所創新:金色財經現場報道,今日,2018中國國際區塊鏈產業融合峰會暨區塊鏈產品與應用展在石家莊舉行,在以《新時期下區塊鏈技術賦能實體與應用結合》為題的圓桌論壇上,孚鏈科技創始人、清華經管創業協會秘書長趙偉表示,區塊鏈不完全是一種技術,同時也是一種思想。區塊鏈對行業的影響可以形容為四個創新,分別是技術創新、模式創新、組織創新和融資創新。關于企業的模式創新,區塊鏈通過利益相關的模式,把一些消費者可能也拉入了甚至成為股東的角色里面去。[2018/9/21]

}

在WDOGE合約的_transfer函數中,當block.timestamp>closingTime時,進入else循環。在代碼第21行中,轉賬金額從發送方的余額中扣除,在代碼第31行中,發送方又被燃燒了tokensToBurn數量的代幣。攻擊者利用這種手續費的機制,通過上述的攻擊方式竊取流動性池中的所有價值代幣(WBNB)。

反射機制

在反射機制中,用戶每次交易都會收取手續費,用于獎勵持有代幣的用戶,但不會觸發轉賬,只是單純修改一個系數。

在這個機制中,用戶有兩種類型的代幣數量,tAmount和rAmount。tAmount為實際代幣數量,rAmount為反映后的代幣數量,比率為tTotal/rTotal,一般的代碼實現如下:

functionbalanceOf(addressaccount)publicviewoverridereturns(uint256){

if(_isExcluded)return_tOwned;

returntokenFromReflection(_rOwned);

}

functiontokenFromReflection(uint256rAmount)publicviewreturns(uint256){

require(rAmount<=_rTotal,"Amountmustbelessthantotalreflections");

uint256currentRate=_getRate();

returnrAmount.div(currentRate);

}

function_getRate()privateviewreturns(uint256){

(uint256rSupply,uint256tSupply)=_getCurrentSupply();

returnrSupply.div(tSupply);

}

反射機制的代幣中一般有一個叫做deliver的函數,會銷毀調用者的代幣,降低rTotal的值,所以比率會增加,其他用戶反射后的代幣數量也會增加:

functiondeliver(uint256tAmount)public{

addresssender=_msgSender();

require(!_isExcluded,"Excludedaddressescannotcallthisfunction");

(uint256rAmount,,,,,)=_getValues(tAmount);

_rOwned=_rOwned.sub(rAmount);

_rTotal=_rTotal.sub(rAmount);

_tFeeTotal=_tFeeTotal.add(tAmount);

}

攻擊者注意到這個函數,并用它來攻擊相應的Uniswap?的流動性池。

那他該如何進行利用呢?同樣從Uniswap的skim?函數開始:

functionskim(addressto)externallock{

address_token0=token0;//gassavings

address_token1=token1;//gassavings

_safeTransfer(_token0,to,IERC20(_token0).balanceOf(address(this)).sub(reserve0));

_safeTransfer(_token1,to,IERC20(_token1).balanceOf(address(this)).sub(reserve1));

}

Uniswap中reserve是儲備金,與token.balanceOf(address(this))不同。

攻擊者先調用deliver函數銷毀自己的代幣,導致rTotal的值減少,比率隨之增加,所以反射后的代幣的值也會增加,token.balanceOf(address(this))也會相應變大,與reserve?的值出現了差距。

因此,攻擊者可以通過調用skim函數轉出數量為兩者之間差值的代幣從而進行獲利。

Attacker:token.deliver

rtotal:decrease

rate:increase

tokenFromReflection:increase

balanceOf:increase->token.balanceOf(address(this))>reserve

Attacker:pair.skim

token.balanceOf(address(this))>reserve

token.transfer

一個真實的攻擊案例,BEVONFTArtToken(BEVO):

而當代幣合約中存在burn函數時,存在了另外一種相似的攻擊手法:

functionburn(uint256_value)public{

_burn(msg.sender,_value);

}

function_burn(address_who,uint256_value)internal{

require(_value<=_rOwned);

_rOwned=_rOwned.sub(_value);

_tTotal=_tTotal.sub(_value);

emitTransfer(_who,address(0),_value);

}

當用戶調用burn函數時,自己的代幣會被銷毀,同時tTotal的值會減少,所以比率會降低,對應的反射后的代幣數量也會減少,所以在此時流動性池的代幣的數量也會減少,從而代幣的價格會上漲。

攻擊者利用這個特性通過多次調用burn函數來減少tTotal的值,然后調用流動性池的sync函數同步reserve和balances。最后,流動性池中的代幣大幅減少,價格飆升。然后攻擊者出售代幣以獲取利潤。

Attacker:token.burn

tTotal:decrease

rate:decrease

tokenFromReflection:decrease

balanceOf:decrease

Attacker:pair.sync

token.balanceOf(address(this))>reserve

token.transfer

一個真實的攻擊案例,SheepToken(SHEEP):

防御方案

通過解讀針對燃燒機制和反射機制代幣的攻擊手法,不難發現攻擊者攻擊的核心點是操縱流動性池的價格,因此將流動性池的地址加入白名單,不涉及代幣的銷毀,不參與代幣的反射機制,可以避免此類攻擊。

總結

本文分析了通縮機制代幣的兩種實現機制以及針對這兩種機制的攻擊手段,最后給出了相應的解決方案。在編寫合約時,項目方必須考慮代幣與去中心化交易所結合的情況,以避免此類攻擊。

Tags:RESTOKTOKEKENTRESOR價格Atletico de Madrid Fan TokengreathealthtokenTabTrader Token

幣贏
ZK 跨鏈通信協議:安全低成本構建全鏈 DApp 的未來_區塊鏈

作者:Yiping,IOSGVentures TL;DR ZK為跨鏈通信提供了一種安全,低成本的方式跨鏈通信協議仍處于早期階段,但有望允許DApp訪問不同鏈上的數據DeFi.

1900/1/1 0:00:00
王者歸來:BitMEX 聯創 Arthur Hayes 的傳奇經歷_BIT

撰文:JenWiecener,NewYorkfeatures編譯:angelilu,ForesightNews這樣的一個故事或許你聽起來會覺得很熟悉:一個接受高等教育的傲慢年輕人.

1900/1/1 0:00:00
7 O''Clock Capital:減半為什么帶來價格上漲_比特幣

作者:7O''ClockCapital 引言 2023年初BTC重新啟航,市場開始蘇醒,各個板塊輪番上漲,其中以太坊上海升級作為今年敘事主線,熱度依舊持續著.

1900/1/1 0:00:00
新一代 DEX 協議: Gridex Protocol 是否將顛覆 DEX 行業?_GRID

作者:GridexProtocol?GridexProtocol是以太坊生態系統中第一個完全基于鏈上的訂單簿交易協議,它??也是目前唯一允許任何人自由創建任何交易對而無需獲得許可的訂單簿協議.

1900/1/1 0:00:00
Iron Fish 如何讓加密貨幣交易能以合規方式進行私有化?_加密貨幣

作者:老雅痞 導讀 IronFish是一種全新的加密貨幣,使用zk-SNARKs和Sapling協議,保護每一筆交易。任何人都可以運行一個節點并為其代碼庫作出貢獻.

1900/1/1 0:00:00
STEPN 開始向創世鞋持有者空投 GMT_ORA

據STEPN發推稱,將立即向符合條件的創世鞋持有者空投GMT。由于STEPN利用生態系統基金進行此次空投,所有GMT將被發送到SOL/BNB/ETH用戶的SOLSpending賬戶.

1900/1/1 0:00:00
ads