比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

通縮代幣相關安全問題 教你如何完美避坑_TOKE

Author:

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

近期Beosin安全團隊研究發現,通縮代幣引起的安全事件依然頻發,造成眾多項目方資金的損失,因此,Beosin安全團隊準備了這篇詳解通縮代幣的文章,與大家分享。

本文將對通縮代幣與pair結合過程中容易出現的問題以及歷史發生的真實通縮代幣安全事件兩個方面進行介紹,通過本文,我們將徹底搞清楚通縮代幣是什么意思以及通縮代幣發生安全問題所涉及的原理,使我們在之后的項目中避坑。

1 通縮代幣是哪種類型的幣?

通縮代幣是一種在交易過程中會進行相關比例銷毀的代幣,這是一種很好的激勵用戶持有代幣的方式。

在代幣交易過程中,會扣除部分代幣用于手續費、獎勵以及銷毀,而隨著代幣的銷毀,總供應量便會不斷減少,就能使得用戶持有代幣所占比例增加,從而使得用戶更愿意持有代幣來被動獲取更高的收益。

看似完美的金融方案,但在代碼實現上并不像預想的那么完美。代碼中存在銷毀過程,此過程將繞過swap過程直接修改地址余額,這種情況與pair相結合,便會出現一些意想不到的問題。

2 通縮代幣存在哪些問題?

SilkSwap于8月11日開啟SLK第一次通縮銷毀:據官方消息,SilkSwap-DAO自治委員會通過了SLK銷毀提案,于8月11日開啟SLK第一次通縮銷毀,銷毀數量50069枚。[2021/8/11 1:49:06]

(1)添加流動性問題

通縮代幣在轉賬時會收取一定比例的手續費給當前合約,并在手續費達到某個閾值(當前代幣數量大于等于合約設置的某個變量)時會調用pair合約進行swap、addLiquidity或sync等操作。

如果在通縮代幣交易過程中,沒有排除to地址等于pair合約地址,并且該通縮代幣在pair中為TokenB時,那么在進行TokenA與TokenB添加流動性的操作中可能導致失敗。

為什么會出現交易失敗的問題呢?添加流動性是將TokenA與TokenB兩種代幣打入pair合約,然后調用pair合約的mint函數(下方詳情),該函數會根據本合約的當前余額與儲備量的差值來判斷用戶傳入了多少代幣。

用戶將TokenA的代幣發送至pair后,進行TokenB代幣轉賬,當收取的手續費正好達到上述的閾值時,代幣合約調用pair的swap、mint或sync函數,這幾個函數都會調用pair的_update函數,從而將用戶最開始發送至pair的TokenA更新為reserve。

最后,用戶再調用mint函數,會導致TokenA的balance和reserve是相等的,結果將導致該筆交易失敗。

聚幣Jubi 11月JT回購月通縮率達1.5190%:據官方消息,聚幣Jubi已于2020年11月23日(UTC+8)完成JT的11月HRP溢價回購。11月JT總計回購數量為 1,436,067.4827 JT。其中二級市場回購796,359.7368 JT,回購池回購639,707.7459 JT。本月所有回購JT已轉入官方公示銷毀地址(0x0000000000000000000000000000000000000000)并全數銷毀。 聚幣Jubi在平臺通證JT的新型通縮模型下,JT回購月通縮率已達1.5190%。[2020/11/23 21:50:26]

Mint函數代碼如下:

整個調用過程如下:

過程詳情圖

(2)Skim問題

Pair合約擁有一個skim函數(下方詳情),該函數會將pair合約中超出儲備量的代幣發送到調用者指定地址,數量計算方式是根據pair合約所擁有的代幣數量與儲備量之間的差值來實現的,這本身是一個平衡pair供應量的功能,但遇到其中一個代幣為通縮代幣,便可能出現問題。

TrueChain回購銷毀3000TRUE 進入通縮時代:7月18日,TrueChain將第一筆韓國市場的技術開發服務項目完成, 并且開始第一筆商業收入利潤回購銷毀3000TRUE,開啟TRUE通縮時代。

后續,TrueChain將在韓國與合作伙伴一起,推動接收更多的商業訂單,并定期實現利潤回購銷毀TRUE。[2020/7/19]

通縮代幣在交易過程中會扣取一部分的費用,那么如果在skim函數中代幣轉賬過程扣取的費用是由from“買單”,會出現什么問題呢?

此時扣取的費用將會是pair的供應量,這樣就能提前向pair中轉入代幣,通過不斷的skim函數與sync函數消耗掉pair的供應量,使得該種代幣在pair中的價格不斷飆升,最終使用少部分該通縮代幣就能兌換出大量的另一種代幣(一般為usdt、eth等價值幣)。

Skim函數代碼如下:

function skim(address to) external lock {address _token0 = token0;   address _token1 = token1;   _safeTransfer(_token0,to,IERC20(_token0).balanceOf(address(this)).sub(reserve0));  _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));}整個調用過程如下:

火幣七爺:HT被低估時間越長,通縮拐點到來后的反彈力度就越大:7月17日晚,火幣全球站CEO七爺在做客 BitUniverse 幣優V姐訪談時表示,近期不少海外機構如 Multicoin、Decentral Park ,國內機構如 TokenInsight 在報告分析中都認為HT偏離基本面被低估。

七爺認為,無論哪種模型,其帶來的通縮效應需要積累一段時間,達到“通縮拐點”,即當通縮進展到一定程度時,就會由量變產生質變,形成價格的快速拉伸。目前在幾大主流平臺幣中,唯有HT還未到達通縮拐點,主要原因是HT應用銷毀模型比一些平臺晚了一年多,還處于積累階段;另外官方不干預市場,不做拉盤控盤的危險操作。

七爺表示,其實HT長期價格低估,對團隊而言是中性的,并沒什么不好。因為從長遠來看,當前HT銷毀進程依然處于早期,而價格低估的時間越長,銷毀率(通縮率)就越高,在拐點到來后的反彈力度就越大。今年上半年火幣銷毀HT已超過2000萬個,歷史將是公平的,目前其他主流平臺幣已經過了快速拉伸期,唯有HT的通縮拐點尚未到來,但其終將到來。[2020/7/17]

(3)銷毀問題

該問題主要出現在使用“映射”機制的通縮代幣中,這種代幣的機制是存在兩種代幣余額存儲變量,分別為tOwned和rOwned,而tOwned存儲的是實際代幣數量,rOwned存儲的是通過currentRate變量放大映射之后的值。

維珍銀河董事長:美國將面臨嚴重通縮,比特幣或從中受益:維珍銀河(Virgin Galactic)董事長、Social Capital首席執行官Chamath Palihapitiya是硅谷最早的比特幣支持者之一。最近,他分享了Foreign Policy雜志上的一篇文章,指出終端通縮(Terminal Deflation)已成必然。這篇文章指出,盡管許多人預計由于美聯儲不斷膨脹的資產負債表和大量的刺激計劃將導致通貨膨脹,但通貨緊縮可能會隨之而來。其核心觀點是,美聯儲的刺激計劃實際上加劇了貧富差距,這意味著大多數美國人,即中產階級,將無法達到消費水準。

盡管比特幣投資的主要論點是通脹,但通縮事件也可能會讓其獲益匪淺。Palihapitiya在接受Morgan Creek Digital聯合創始人Anthony Pompliano采訪時表示,如果經濟是一輛汽車,那么它就像從懸崖上滾下來,而懸崖的底部有一堵磚墻。也就是說,現在的形勢非常嚴峻。在這樣的環境中,你會看到投資者開始放棄這輛汽車,轉而尋找能夠經受住任何不確定性的穩定投資產品,而這種投資越來越接近比特幣。(Bitcoinist)[2020/5/15]

rOwned的作用是什么呢?在文章開始說過,通縮代幣能激勵用戶持有代幣,這種激勵目的使用的方式便是對交易者扣除rOwned值,同時扣除rTotal,這樣其他用戶rOwned所占rTotal的比例就會被動增加,實現被動收益。(rOwned與rTotal可理解為用戶的股份以及總股份)

用戶查詢余額的方式有兩種情況,一種是除外地址,直接返回tOwned的值,另一種是非除外地址,返回rOwned/currentRate,而currentRate計算方式為rTotal/tTotal。如果有辦法使得rTotal減小,那么用戶查詢出的實際余額將變大,而如果pair查詢余額變大,則可以通過skim函數將多余的代幣轉移出去。

而該類通縮代幣存在一個deliver()函數,非除外地址可調用,該函數會將調用者的rOwned銷毀,并銷毀相同數量的_rTotal,使得所有非除外地址的余額查詢增加,pair如果非除外的話,便可使用上述方式套利攻擊。

3 通縮代幣相關安全事件剖析

(1)AES安全事件

北京時間2023年1月30日,Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測到,AES遭受到黑客攻擊,該項目便存在上述的Skim問題。

AES-USDT pair合約有一個skim函數,該函數可以強制平衡pair的供應量,將多余資金發送給指定地址。

攻擊者在本次攻擊過程中,首先向pair里面直接轉入了部分AES代幣,導致供應量不平衡,從而攻擊者調用skim函數時,會將多余的這部分代幣轉到攻擊者指定地址,而攻擊者在此處指定了pair合約為接收地址,使得多余的AES又發送到了pair合約,導致強制平衡之后pair合約依然處于不平衡狀態,攻擊者便可重復調用強制平衡函數,而AES發送過程會調用到AES合約的transfer函數,如下圖。

另外一點,當調用AES代幣合約的transfer函數時,若發送者為合約設置的pair合約時,會將一部分費用記錄在swapFeeTotal之中(如上圖過程),在最后的時候可以統一調用distributeFee函數(如下圖)將swapFeeTotal記錄的費用從pair中轉出,這里相比上述的過程,攻擊者可以不用做sync函數調用操作,而是在最后將費用轉移出去之后調用一次sync函數即可。

攻擊者經過反復的強制平衡操作,費用記錄變得異常大,基本接近pair的總余額,最后攻擊者調用distributeFee函數將pair里面的AES轉出,pair的AES余額變得非常少,導致攻擊者利用少量AES兌換了大量的USDT。

(2)BevoToken安全事件

北京時間2023年1月30日,Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測到,BevoToken遭受到閃電貸攻擊,該項目便是上面所說的“映射”機制通縮代幣。

由于BevoToken合約的balanceOf函數(如下圖)并非ERC20標準的函數,該函數在經過一些計算處理后再返回余額,而轉賬或其他操作可能使前后計算返回的余額不一致,當攻擊者在swap操作前后可憑借這個問題來操控pair合約的余額,從而skim出多余的代幣。

攻擊者首先在pancake貸出192.5個BNB,之后換成約302,877個BEVO代幣,再調用被攻擊合約的deliver函數(如下圖),此時_rTotal的值減小,_rTotal的值減小會導致_getRate中計算的值偏小,此時balanceOf返回的余額則會偏大,導致攻擊者能skim出多余的BEVO。

之后,攻擊者再將skim出的代幣進行deliver,此時_rTotal的值已經很小了,在進行_getRate計算時,會減去除外地址的rOwned(如下圖),此值固定且被攻擊者在之前通過burn異常放大的,在最開始_rTotal正常的時候,減去該值對結果的影響不大,但是現在_rTotal被攻擊者操控得異常小,再減去這個異常放大的固定值后,對結果產生了巨大的影響,第一次deliver導致pair計算結果偏大3倍,而第二次deliver之后,pair計算結果則偏大了數百倍,這也是為什么攻擊者獲得的代幣要比自己銷毀的代幣多得多的原因。

通縮項目在業務設計的時候一定要考慮到與pair交互的情況,自身的通縮機制是否會對pair產生影響。我們也建議相關項目上線前尋找專業的安全審計機構進行全面的代碼以及業務的安全審計工作。

Beosin

企業專欄

閱讀更多

金色財經 善歐巴

金色早8點

Odaily星球日報

歐科云鏈

Arcane Labs

深潮TechFlow

MarsBit

BTCStudy

澎湃新聞

Tags:PAIAIRTOKTOKEMPAI幣Baby Billionaires ClubMoonlight TokenStarMon Token

火幣交易所
一文梳理9個潛力協議 LSD市場爭奪戰開啟_ETH

上海升級將釋放價值超過 270 億美元的 ETH,這意味著 LSD 市場的爭奪戰已經開始,它們將圍繞提供最高 APR 展開.

1900/1/1 0:00:00
“元宇宙”之父:不存在“一個”元宇宙 AI替代不了藝術家_元宇宙

來源:極客公園(ID:geekpark)作者:Tim Bradshaw尼爾·斯蒂芬森(Neal Stephenson)的科幻小說.

1900/1/1 0:00:00
veDAO研究院:一文看懂BTC NFT以及未來潛力_比特幣

來源:veDAO研究院 春節過后,Web3行業最大的熱點來源,不是L2新星Arbitrum的強勢崛起、也不是兩大新型王牌公鏈Aptos和Sui的明爭暗斗。反而是來自Web3活化石的BTC.

1900/1/1 0:00:00
AIGC拯救虛擬偶像?_DAI

不知你有沒有發現,虛擬偶像行業已經許久沒有鼓舞人心的大事件了?和2021年”主播與數字人齊飛,跳舞共唱歌一色“,虛擬偶像動輒單月收入百萬的盛況相比.

1900/1/1 0:00:00
Meta推出先進大型語言模型 下一個ChatGPT不遠了?_META

ChatGPT的爆火引爆了AI行業,全球科技巨頭爭相殺入這一領域展開混戰。周五,Meta也宣布推出大型語言模型LLaMA,加入到由微軟、谷歌等科技巨頭主導的AI“軍備競賽”中.

1900/1/1 0:00:00
GMX全鏈樂高會挑戰dYdX龍頭地位嗎?_DYDX

GMX全鏈樂高會挑戰dYdX龍頭地位嗎?作者:Momir Amidzic, IOSG Ventures 沒有解決方案,只有取舍 本文討論了后FTX時代DEX衍生品市場的狀況.

1900/1/1 0:00:00
ads