巨爆乳肉感一区二区三区视频动漫-67194线路一直接进入骚逼-亚洲精品无码一区二区三区四虎-亚洲国产精品有码-国产精品99无码一区二区视频-免费观看A黄色

慢霧:AAVE V2 安全審計手冊

訪客 9個月前 (02-13) 閱讀數(shù) 256 #區(qū)塊鏈
文章標簽 前沿文章

引言

隨著去中心化金融(DeFi) 生態(tài)系統(tǒng)的迅速發(fā)展,AAVE V2 作為領(lǐng)先的去中心化借貸協(xié)議之一,在提供創(chuàng)新借貸與流動性管理解決方案方面始終處于行業(yè)前沿。其獨特的無信任機制和高效的資本利用率吸引了大量用戶和機構(gòu)的參與。然而,隨著其應用的普及及所涉及的資金規(guī)模逐步擴大,安全審計和風控措施的重要性日益凸顯。本手冊將深入探討 AAVE V2 協(xié)議的核心設計、關(guān)鍵功能及相關(guān)審計要點。

項目背景概述

AAVE V2 是一個基于以太坊區(qū)塊鏈構(gòu)建的開放式借貸平臺,允許用戶存入各種 ERC-20 代幣并從中賺取利息,同時也允許以支付利息的形式借用市場中的代幣。通過引入“利率市場”的概念,AAVE V2 實現(xiàn)了去中心化的資金池管理和自動化的利率調(diào)整機制。此外,AAVE V2 還提供了閃電貸、抵押貸款和代幣交換等高級功能,以滿足用戶的多樣化需求,進一步鞏固了其在 DeFi 領(lǐng)域的領(lǐng)先地位。

項目架構(gòu)分析

AAVE V2 的整體架構(gòu)設計圍繞用戶、資金流動管理、抵押機制、清算流程以及利率策略等關(guān)鍵功能展開,旨在提供高效且安全的去中心化借貸服務。以下是綜合分析:

用戶操作流程

用戶:用戶可以進行存款、借款、償還、提取、借貸利率模式交換、閃電貸以及委托信用等多種操作。用戶與協(xié)議交互時,會根據(jù)其操作自動鑄造或銷毀相應的 aTokens,代表其在協(xié)議中的存款權(quán)益,并根據(jù)利率策略獲得收益。

委托信用:用戶可以將自己的信用額度委托給其他用戶,擴展了協(xié)議的靈活性和使用場景。

核心組件

LendingPool:作為核心模塊負責處理所有用戶的操作請求,包括存款、借款、償還、借貸利率模式交換、閃電貸和清算,并更新利率和狀態(tài)。

Collateral Manager:管理抵押資產(chǎn),確保用戶借款行為安全可控。當?shù)盅嘿Y產(chǎn)不足時,會觸發(fā)清算流程來保護系統(tǒng)的整體流動性。

Libraries:封裝儲蓄金邏輯,驗證邏輯,通用功能邏輯,如清算和借貸操作的計算,為 LendingPool 提供支持。

GenericLogic 計算并驗證用戶狀態(tài),包括資產(chǎn)評估、抵押品價值計算、健康系數(shù)等操作。

ReserveLogic 用于管理儲備金池,追蹤和更新每種資產(chǎn)的存款量、借款量以及當前利率情況。

ValidationLogic 負責驗證用戶的操作是否符合協(xié)議規(guī)則,在用戶進行存款、借款、還款、清算、閃電貸、切換債務模式等操作時,對抵押品和負債進行嚴格檢查。

債務與代幣化

Debt Tokens:用來跟蹤用戶的借款負債,與貸出資金數(shù)額 1:1。債務代幣分別有固定利率和可變利率選項(如 DebtDAI Stable、DebtDAI Variable 等),且債務代幣不可轉(zhuǎn)移。

aTokens:用戶存入資產(chǎn)時會生成 1:1 的 aTokens 錨定底層資產(chǎn),這些 aTokens 會不斷增值以反映存款所賺取的利息。其中由此引入與本金余額一起存儲為一個比率,稱為縮放余額 scaled balance (ScB)。

公式如下:

價格和利率

Oracles Proxy:依賴外部預言機 (Chainlink) 提供資產(chǎn)市場價格數(shù)據(jù),用于評估用戶抵押資產(chǎn)的價值,確保借貸行為的定價準確性和系統(tǒng)的穩(wěn)定性。

Lending Rate Oracle:根據(jù)系統(tǒng)的狀態(tài)和市場情況,提供動態(tài)的借貸利率,優(yōu)化資本利用率和流動性。

配置與管理

Configurator:用于配置系統(tǒng)參數(shù),如不同資產(chǎn)的風險參數(shù)和借貸限額,管理儲備金的各種操作,包括激活、借款、抵押、凍結(jié)、更新參數(shù)及在緊急情況下啟用或禁用功能。確保協(xié)議可以根據(jù)市場變化進行動態(tài)調(diào)整。

其他關(guān)鍵功能

Liquidation Manager:當用戶抵押品價值下降至清算門檻以下時,管理清算操作,保護系統(tǒng)的資金安全。清算人可以通過清算操作獲得獎勵。

Reserves Balances:存儲系統(tǒng)的儲備資金數(shù)據(jù),用于計算和調(diào)整利率策略。

利率策略

Interest Rate Strategy:根據(jù)市場和用戶需求,動態(tài)調(diào)整利率以實現(xiàn)最佳資本配置,同時考慮流動性風險,確保系統(tǒng)在不同市場條件下的靈活性和穩(wěn)定性。

盡管存在兩種利率模型(穩(wěn)定型和浮動型),但是其模型計算都類似于一個拐點型模型。在拐點最優(yōu)利用率下的 slope1 和超過最優(yōu)利用率的 slope2 分段計算,且在這個條件下也分為固定利率模型和可變利率模型。

公式如下:

流程梳理

存款

用戶通過調(diào)用 LendingPool 合約的 deposit 函數(shù)進行存款,該函數(shù)接受四個參數(shù):資產(chǎn)地址、存款金額、接收方地址及推薦碼。首先驗證合約未處于啟用狀態(tài),然后通過 ValidationLogic.validateDeposit 驗證存款金額必須大于 0,同時確認儲備處于激活狀態(tài)且未被凍結(jié)。接著系統(tǒng)會更新儲備狀態(tài),調(diào)用 reserve.updateState() 更新流動性累積指數(shù)和可變借款指數(shù),并計算時間段內(nèi)產(chǎn)生的利息,其中一部分利息會被鑄造并轉(zhuǎn)入?yún)f(xié)議國庫。

公式如下:

隨后通過 reserve.updateInterestRates 根據(jù)最新的供需關(guān)系動態(tài)調(diào)整流動性利率、穩(wěn)定借款利率和可變借款利率(都由 DefaultReserveInterestRateStrategy.calculateInterestRates 函數(shù)計算更新)。資產(chǎn)轉(zhuǎn)移環(huán)節(jié),系統(tǒng)將用戶的基礎(chǔ)資產(chǎn)轉(zhuǎn)入 aToken 合約,同時鑄造等額 aToken 給用戶所提交的 onBehalfOf 地址。其中,aToken 采用縮放機制 (scaled balance) 處理利息累積。如果是用戶首次存款,系統(tǒng)會自動將該資產(chǎn)標記為用戶的抵押品。

與 Compound 相比,AAVE V2 的存款過程有以下主要特點:

支持指定接收方地址(onBehalfOf)。

通過 ValidationLogic 合約進行存款驗證。

更新流動性累積指數(shù)和可變借款指數(shù)計算并分配協(xié)議國庫利息。

同時調(diào)整流動性、穩(wěn)定借款和可變借款三種利率。

使用 aToken 的縮放機制(scaled balance) 處理利息。

首次存款自動標記為抵押品。

提現(xiàn)

用戶通過調(diào)用 withdraw 函數(shù)進行提現(xiàn)操作。首先取指定資產(chǎn)的儲備數(shù)據(jù),包括對應的 aToken 地址,檢查此用戶在 aToken 中的余額。接下來,調(diào)用 ValidationLogic.validateWithdraw 函數(shù)來驗證提現(xiàn)請求,包括檢查提現(xiàn)金額是否有效、用戶余額是否足夠、儲備是否處于活動狀態(tài)等。其中通過 GenericLogic.balanceDecreaseAllowed 對用戶的健康系數(shù)以及提現(xiàn)是否影響抵押品進行檢查,類似于 compound 中 getHypotheticalAccountLiquidityInternal 函數(shù)的作用。在 balanceDecreaseAllowed 函數(shù)中,calculateUserAccountData 和 calculateHealthFactorFromBalances 函數(shù)計算取出資金后的清算閥值并檢查用戶總抵押,總借貸數(shù)額以及用戶當前的健康系數(shù),以此來判斷是否用戶健康系數(shù)處于流動性閥值的安全狀態(tài)。

HF 計算公式如下:

隨后更新儲備的狀態(tài),并更新利率,將提現(xiàn)金額傳遞給函數(shù)。若用戶請求的提現(xiàn)金額等于其當前余額,則更新用戶配置,將該儲備標記為不再作為抵押使用。最后銷毀用戶的 aToken,并將提現(xiàn)的資產(chǎn)轉(zhuǎn)賬到指定的地址。

與 Compound 相比,AAVE V2 的提現(xiàn)過程有以下主要特點:

使用 aToken 代表用戶在協(xié)議中的存款,提現(xiàn)實際上是銷毀 aToken。

允許用戶提現(xiàn)到指定地址(通過 to 參數(shù)),增加了靈活性。

提供了部分提現(xiàn)和全額提現(xiàn)的選項。

在提現(xiàn)驗證中,AAVE 使用了更復雜的 balanceDecreaseAllowed 函數(shù)來檢查提現(xiàn)對用戶整體抵押品狀況的影響。

AAVE 的提現(xiàn)過程直接更新了利率,而不是像 Compound 那樣通過 accrueInterest 函數(shù)來更新。

借貸

用戶通過 borrow 函數(shù)進行借貸,執(zhí)行借款會先從價格預言機獲取資產(chǎn)的當前價格,將借款金額轉(zhuǎn)換為 ETH 等價。隨后通過 ValidationLogic.validateBorrow 檢查以及 GenericLogic.calculateUserAccountData 用戶借款是否合法,計算包括 onBehalfOf 地址的總抵押資產(chǎn)、總債務、當前貸款價值比率(LTV)、清算閾值和健康因子以及市場的穩(wěn)定性等(類似于 Compound 的 getHypotheticalAccountLiquidityInternal),是否有足夠的抵押資產(chǎn)借貸。reserve.updateState 更新儲備狀態(tài),如利率和借款指數(shù)(這一步類似于 Compound 中的 accrueInterest),用于計算并更新利息。

隨后根據(jù)用戶選擇進行的 interestRateMode(穩(wěn)定利率或浮動利率)生成債務,選擇不同的利率模型的代幣合約來鑄造代幣。同時,鑄造代幣時也會進行檢查,如果 onBehalfOf 地址不是調(diào)用者,則會在代幣合約中減去其對調(diào)用用戶的借貸授權(quán)。如果是用戶的首次借款,會將其配置為活躍借款者。DebtToken 鑄造給用戶后,協(xié)議會通過 updateInterestRates 更新借款利率,反映借款后的新利率和儲備池的變化。如果用戶請求釋放借款的底層資產(chǎn),協(xié)議會將資產(chǎn)直接轉(zhuǎn)移給用戶。

與 Compound 相比,AAVE V2 的借貸過程有以下主要特點:

支持穩(wěn)定和可變兩種利率模式。

使用單獨的驗證邏輯合約進行借貸驗證。

使用債務代幣(DebtToken) 來表示用戶的借款。

支持信用委托,允許用戶代表其他地址進行借款。

還款

用戶通過 repay 函數(shù)進行還款,首先獲取用戶的當前債務(包括穩(wěn)定債務 stableDebt 和浮動債務 variableDebt)。根據(jù)用戶選擇的利率模式(穩(wěn)定或浮動),由 ValidationLogic.validateRepay 驗證用戶的還款操作合法性,包括用戶的債務余額是否足夠進行還款。根據(jù)用戶選擇的利率模式來確定還款的具體債務類型(穩(wěn)定利率或浮動利率)。如果用戶要還的金額小于當前債務余額,系統(tǒng)會使用用戶提供的還款金額進行部分還款;否則,將償還所有債務。更新儲備的狀態(tài) updateState,用于計算并更新協(xié)議中的利息、借貸量以及借貸指數(shù)。隨后燃燒相應的穩(wěn)定債務代幣,并通過 updateInterestRates 更新借款利率。此時,如果用戶的所有債務(包括穩(wěn)定和浮動債務)在還款后為零,則會將該用戶的借款狀態(tài)標記為 false,表示用戶不再借款。最后用戶將還款金額從其賬戶轉(zhuǎn)移到協(xié)議的 aToken 合約地址。

與 Compound 相比,AAVE V2 的還款過程有以下主要特點:

支持穩(wěn)定和浮動兩種利率模式的還款。

使用 DebtToken 來表示和管理債務,還款時燃燒對應債務代幣。

支持部分還款和全額還款,并分別處理穩(wěn)定債務和浮動債務。

支持用戶通過信用委托為其他地址還款。

清算

用戶通過 lendingpool 的 liquidationCall 函數(shù)進行清算,函數(shù)通過代理模式調(diào)用 LendingPoolCollateralManager 的 liquidationCall 函數(shù),確保函數(shù)的成功執(zhí)行。首先 GenericLogic.calculateUserAccountData 獲取抵押品資產(chǎn)及債務資產(chǎn)的儲備數(shù)據(jù)和用戶的配置信息,計算用戶的健康因子,并通過 getUserCurrentDebt 獲取用戶的當前穩(wěn)定和可變負債。

ValidationLogic.validateLiquidationCall 函數(shù)驗證清算調(diào)用的合法性,包括檢查用戶的健康因子、債務狀態(tài)和抵押品配置。若健康因子小于閥值,已作為抵押品,且兩種債務都不為 0 則驗證通過。接著計算用戶的最大可清算債務,并確定實際需要清算的債務數(shù)量。如果清算的債務超過用戶的可用抵押物,將調(diào)整清算金額。

如果清算人選擇接收被清算人抵押的底層資產(chǎn),需要確保抵押物儲備中有足夠的流動性。更新債務儲備的狀態(tài),并根據(jù)清算人是否接收 aToken 情況,燃燒相應數(shù)量的可變和穩(wěn)定債務代幣。更新債務的利率,反映清算后的市場情況。清算人獎勵如果選擇接收 aToken,清算人將獲得相應數(shù)量的 aToken。如果不接受 aToken,則更新其抵押狀態(tài)和抵押物的利率,從用戶賬戶中燃燒掉對應數(shù)量的 aToken ,將底層資產(chǎn)轉(zhuǎn)移給清算人。最后,將清算所需的債務資產(chǎn)從清算人轉(zhuǎn)移到相應的儲備 aToken 中,完成清算過程。

與 Compound 相比,AAVE V2 的清算過程有以下主要特點:

支持多種抵押品和債務資產(chǎn)的組合清算。

允許清算人選擇接收 aToken 或 底層資產(chǎn)。

清算過程更加模塊化,將驗證邏輯、計算邏輯等分離到不同的函數(shù)中。

支持穩(wěn)定利率和可變利率兩種債務類型的清算。

閃電貸

用戶通過 lendingpool 的 flashLoan 函數(shù)進行閃電貸。作為借貸協(xié)議的閃電貸,可以允許當前閃電貸立刻還款或是作為債務來后續(xù)還款,其中以傳入的 modes 參數(shù)不同而決定。0 為立刻還款,1 為作為穩(wěn)定型債務,2 為浮動型債務。

函數(shù)首先通過 ValidationLogic.validateFlashloan 檢查輸入?yún)?shù)匹配,計算閃電貸所需的溢價成本,并直接將所需的 aToken 轉(zhuǎn)給接收者地址。調(diào)用接受者的 executeOperation 操作實現(xiàn)預設的閃電貸。AAVE 實現(xiàn)的閃電貸操作已包括了兌換,兌換清算,以及兌換償還操作。在 executeOperation 完成以上操作后,記錄需償還的閃電貸金額和相應的費用。如果用戶選擇以非債務模式歸還資金:系統(tǒng)更新儲備狀態(tài),累積儲備流動性以及更新流動性指數(shù)。最后再從請求者轉(zhuǎn)移資金和費用至儲備池。若用戶選擇以債務模式處理,則調(diào)用 _executeBorrow,開啟相應的債務頭寸。

轉(zhuǎn)換債務模式

在 AAVE V2 中,用戶可以通過 swapBorrowRateMode 函數(shù)在穩(wěn)定利率模式和浮動利率模式之間切換。首先通過 getUserCurrentDebt 函數(shù)獲取用戶在目標資產(chǎn)上的當前穩(wěn)定利率債務和浮動利率債務,確定用戶的債務狀況。接著調(diào)用 ValidationLogic.validateSwapRateMode 函數(shù)驗證切換操作是否合法。其中檢查用戶是否有足夠的穩(wěn)定或浮動債務以支持模式切換,確保切換目標模式符合資產(chǎn)的配置和用戶的債務情況。調(diào)用 reserve.updateState 更新資產(chǎn)儲備的狀態(tài),確保儲備數(shù)據(jù)最新。隨后就是對于兩種債務代幣的相互轉(zhuǎn)換,燃燒穩(wěn)定債務代幣鑄造浮動債務代幣或是燃燒浮動債務代幣鑄造穩(wěn)定債務代幣。轉(zhuǎn)換完成后,reserve.updateInterestRates 更新目標資產(chǎn)利率,確保反映當前市場狀態(tài)和用戶債務的變化。

安全漏洞 Checklist

空市場導致的舍入漏洞

在 AAVE 和 Compound 中,都存在空市場中精度損失而造成的漏洞問題。如果在一個空市場的情況(即沒有用戶在市場中進行借貸),由于 cumulateToLiquidityIndex 函數(shù)中 liquidityIndex 的值依賴于合約對應的底層資產(chǎn)代幣的數(shù)量,所以攻擊者可以通過閃電貸向合約存入大量的底層資產(chǎn)代幣來操縱 aToken 的價格。

與之前 Compound fork 項目 Hundred Finance 第一次被黑相似,在 HopeLend 事件中,攻擊者先操縱 liquidityIndex 將 hETHWBTC 兌 WBTC 的價值控制為 1:1,通過兌換底層資產(chǎn)以及借貸的方式又提高 liquidityIndex 的值。隨后通過循環(huán)的閃電貸不斷調(diào)用 _handleFlashLoanRepayment 函數(shù)。

在 cumulateToLiquidityIndex 函數(shù)中,rayDiv 的精度損失會再次放大 reserve.liquidityIndex 的數(shù)值,最終放大了能兌換出的 WBTC。(攻擊交易:https://etherscan.io/tx/0x1a7ee0a7efc70ed7429edef069a1dd001fbff378748d91f17ab1876dc6d10392)

審計要點:在審計時,需要關(guān)注兌換率的計算方式是否容易被操控以及舍入的方式是否恰當,同時可以建議項目團隊在新的市場創(chuàng)建后立刻鑄造 aToken,以防止市場為空進而被操控。

ERC677 / ERC777 代幣導致的重入漏洞

與之前 Compound fork 項目 Hundred Finance 第二次被黑相同,在 Agave 攻擊事件中,攻擊者在沒有任何負債的情況下調(diào)用了 liquidateCall 函數(shù)來清算自己。而清算的代幣是 Gnosis Chain 鏈上使用的 ERC-677 標準代幣, 該類代幣轉(zhuǎn)賬時會外部調(diào)用接收地址的函數(shù), 所以使得清算合約調(diào)用了攻擊合約,攻擊合約在此過程中存入了 2728 個通過閃電貸獲取的 WETH,鑄造出 2728 aWETH,并以此為抵押,借出了 Agave 項目中所有可用資產(chǎn)。外部調(diào)用結(jié)束后,liquidationCall 函數(shù)直接清算了攻擊者之前存入的 2728 aWETH,并將其轉(zhuǎn)給清算者。

(參考來源:https://x.com/danielvf/status/1503756428212936710;?攻擊交易:https://gnosis.blockscout.com/tx/0xa262141abcf7c127b88b4042aee8bf601f4f3372c9471dbd75cb54e76524f18e)

審計要點:在審計中,需要關(guān)注借貸功能的相關(guān)代碼是否符合 CEI (Checks-Effects-Interactions) 規(guī)范或者是否存在防重入鎖,并且需要考慮具有回調(diào)功能的代幣造成的影響。

不恰當?shù)念A言機機制導致的價格操控風險

在 Blizz Finance 項目被黑事件中,由于當時 LUNA 的價格持續(xù)暴跌,協(xié)議使用的 Chainlink 價格信息變得不準確,導致可以用價格高昂的 LUNA 抵押品借入資金。同時項目沒有現(xiàn)有的故障安全機制,盡管看起來已經(jīng)提前發(fā)出警報,但并沒有及時建立預防措施來防止損失。當價格跌破該水平時,使得任何人都可以按市場價格購買(遠低于 0.10 美元的價格)大量 LUNA,并將其作為抵押品(價值 0.10 美元)從平臺借出資金。

(參考來源:https://x.com/BlizzFinance/status/1524911400992243761)

審計要點:在審計時,需要關(guān)注計算抵押品價值時采用的預言機喂價機制是否容易被外部操控,可以建議項目方采用多種價格來源進行綜合評估,以規(guī)避單一價格來源造成的風險。同時也需要注意項目是否存在合理的暫停機制,來預防此類突發(fā)情況。

外圍合約外部調(diào)用引入的非預期問題

在 AAVE 協(xié)議與 Para Swap 協(xié)議的交互中,Aave Collateral Repay Adapter V3 合約的 _buyOnParaSwap 函數(shù)存在多個安全隱患。該函數(shù)通過調(diào)用 safeApprove 方法,在 tokenTransferProxy 上設置 assetToSwapFrom 的限額為 maxAmountToSwap,但未考慮未進行兌換或部分兌換的情況,導致在未完全使用限額的情況下,存在剩余額度保持不變。此外,函數(shù)依賴外部合約調(diào)用 (augustus.call(buyCalldata)) 執(zhí)行兌換,并且未對 paraswapData 傳參進行充分驗證與限制,從而允許攻擊者通過惡意構(gòu)造的 paraswapData 操控解碼后的 buyCalldata 和 augustus 合約地址,繞過預期的兌換邏輯或完全避免兌換。由于該函數(shù)在兌換后未減少或檢查 assetToSwapFrom 的代幣限額,即使兌換失敗或被繞過,攻擊者仍可利用未變化的高額限額提取合約中的代幣,從而實現(xiàn)未經(jīng)授權(quán)的資金轉(zhuǎn)移。出現(xiàn)因缺乏對輸入數(shù)據(jù)和交換結(jié)果的驗證,以及未能有效管理代幣限額的情況,導致合約被攻擊者利用。

(攻擊交易:https://etherscan.io/tx/0xc27c3ec61c61309c9af35af062a834e0d6914f9352113617400577c0f2b0e9de)

審計要點:在審計時,需特別關(guān)注與外部第三方協(xié)議的交互代碼。重點評估外部合約的輸入和輸出是否經(jīng)過嚴格限制,交互邏輯是否對協(xié)議核心模型或資金安全產(chǎn)生潛在影響,輸入數(shù)據(jù)是否經(jīng)過清理和驗證,防止惡意數(shù)據(jù)引發(fā)安全問題。通過嚴格審查外部交互的代碼邏輯以及數(shù)據(jù)驗證機制,可有效降低此類漏洞風險。

代幣與利率策略兼容問題

在 Polygon 鏈上,AAVE 部署過程中,由于 InterestRateStrategy 設置不兼容的問題導致功能異常,錯誤地為 WETH 設置了不兼容的利率策略。

錯誤設置的 InterestRateStrategy 合約中的 interface 如下:

Y5uQqL5vSUyoPddm6C9YyDL4OXT42UzWdiiF9xF0.png

而 AAVE V2 的 LendingPool 實現(xiàn)的代碼如下:

(參考來源:https://x.com/mookim_eth/status/1659589328727859205)

由于接口不兼容,新 InterestRateStrategy 無法正常被 LendingPool 調(diào)用,直接導致 AAVE V2 的 WETH 池功能中斷,用戶無法存入或提取 ETH。

審計要點:在審計時,需確保代碼(或 fork)中關(guān)鍵組件的接口完全兼容。同時,盡管以上問題并不是由多鏈特性導致的原因,但是審計時仍需要注意不同鏈的特性下是否會造成非預期的結(jié)果。

Dust 代幣問題

AAVE 的存款和取款會通過 setUsingAsCollateral 函數(shù)設置 usingAsCollateral 來實現(xiàn),從而靈活地管理抵押策略。當外部協(xié)議或合約通過 AAVE 借貸函數(shù)第一次借入資金時,借貸函數(shù)會將 usingAsCollateral 設置為 true。當外部協(xié)議或合約從 AAVE 完全提取資金時,AAVE 中協(xié)議處理程序的 usingAsCollateral 狀態(tài)將被設置為 false。但實際上,AAVE 在計算取款需要燒掉的 aToken 數(shù)量時,此時如果由于算術(shù)精度誤差,協(xié)議處理程序中可能還有極少的 aToken 剩余。因此,當協(xié)議處理程序下次向 AAVE 存款時,usingAsCollateral 將不會變動,依然設置為 true,由于協(xié)議處理程序合約中沒有調(diào)用 setUserUseReserveAsCollateral 函數(shù)的接口,這可能導致協(xié)議處理程序無法再執(zhí)行借款操作。

審計要點:在審計時,需要對所調(diào)用的協(xié)議有充分的熟悉度,充分了解其特性的情況下,判斷是否對于其與外部協(xié)議交互存在一定的兼容性問題,如代幣兼容性、調(diào)用實現(xiàn)邏輯兼容性等。

寫在最后

本手冊深入探討了 AAVE V2 協(xié)議的核心設計、關(guān)鍵功能及相關(guān)審計要點,我們希望該手冊可以更好地幫助開發(fā)人員和安全研究人員識別潛在風險并確保協(xié)議的安全運行。由于篇幅限制,本文省略了部分代碼和圖片,讀者可點擊文末的閱讀原文跳轉(zhuǎn)至 GitHub 閱讀完整版(https://github.com/slowmist/AAVE-V2-Security-Audit-Checklist)。

熱門
波多野结衣无内裤护士| AV无码人妻无码男人的天堂| 国产午夜亚洲精品理论片不卡| 亚洲AV日韩AV综合AⅤXXX| A级毛片无码久久精品免费| 日本免费AⅤ欧美在线观看 | 狂猛欧美激情性XXXX大豆行情| 中文字幕丰满乱子伦无码专区| 人体内射精一区二区三区| 国产精品露脸视频观看| 亚洲中文字幕人成乱码| 日本日本熟妇中文在线视频| 高清无码国产黄色视频人爽人一区二区| 亚洲AV无码不卡在线观看下载| 日本一区二区三区免费播放| 嫩草院一区二区乱码| 国产成人精品无码免费看| 亚洲免费成人av| 欧美三级不卡在线观看| 国产精品一线二线三线| 雨后小故事完整版| 天码AV无码一区二区三区四区| 国内精品久久人妻无码网站| 24小时最新在线视频免费观看| 天干天干啦夜天天喷水| 日本少妇人妻XXXXⅩ18| 琪琪电影网WWW888DVDC | 妺妺晚上扒我内裤玩我J| 国产AV无码区亚洲AV欧美| 亚洲一区二区自偷自拍另类| 日韩人妻无码AⅤ中文字幕| 精品无码国产自产拍在线观看蜜 | 国产熟女高潮精品视频区| 80岁老熟妇乱子伦牲交| 新X8X8拨牐拨牐永久免费AP| 内射老妇BBWX0C0CK| 久久躁狠狠躁夜夜AV| 国产SUV精二区九色| 丁香婷婷激情俺也去俺来也| 亚洲AV乱码久久精品密桃| 婷婷五月18永久免费网站| 牛鞭进入女人下身的视频| 美女扒开尿眼给男人桶爽网站免费| 国产精品久久久久久精品电影| 丰满人妻被粗大爽ⅩXOO| 在线A级毛片免费视频| 武则天裸毛片70分钟| 强奷漂亮雪白丰满少妇| 欧美亚洲精品中文字幕乱码| 精品一区二区三区影院在线午夜 | 隔着衣服吃你的小尖尖作文| 成在人线AV无码免观看麻豆 | 国产精品青草久久福利不卡| かしこまりました中文在线| 亚洲中文字幕在线无码一区二区| 亚洲影院丰满少妇中文字幕无码| 亚洲制服无码一区二区三区| 一本一道AV无码中文字幕麻豆| 性饥渴老妇XXXⅩOOO| 亚洲AV成人无码| 三个医生换着躁我一个| 免费女人18毛片A毛片视频| 韩漫嘿啾漫画进入| SM调教贱屁股眼哭叫求饶H| 野花香影院在线观看视频免费| 一区二区中文字幕最近第九页| 亚洲AV无一区二区三区| 婷婷色丁香五月激情综合| 无套内射AV二区| 搡老女人老妇老熟女HHD| 免费源码资源源码站| 亲情会王芳高敏大团圆| 色欲色香天天天综合网WWW| 女主播屁G裸露W身曝光| 久久久久久久精品免费久精品蜜桃| 国产成人精品无码一区二区老年人| 国产成人免费无码AV在线播放| 拔萝卜电视剧高清免费| 中文字幕亚洲综合久久2020| 亚洲色偷偷综合亚洲av伊人| 亚洲AV蜜臀日韩AV无码污网站| 亚洲乱码日产精品BD在线观看| 18禁强伦姧人妻又大又粗| 一本色道久久综合亚洲精品 | 亚洲日韩乱码1区二区| 亚洲AV无码乱码在线观看代蜜桃 | 2020无码天天喷水天天爽| 成人网站国产在线视频内射视频 | 产后漂亮奶水人妻| OM老熟妇DHXⅩXXX| 高清国产天干天干天干不卡顿| 国产亚洲AV☆浪潮在线观看| 乱人伦中文无码视频| 久99久无码精品视频免费播放| 麻豆国产在线精品国偷产拍| 日本精品视频一区二区| 亚欧乱色熟女一区二区| 无人区乱码一线忘忧草| 日韩人妻一区二区三区蜜桃视频| 性少妇SEXVIDEOS高清| 中文字幕不卡乱偷在线观看 | 日本55丰满熟妇厨房伦| 亚洲AV永久天码精品天堂DL| 50岁人妻丰满熟妇ΑV无码区| 国产成人无码AV在线播放无广告| 久久精品国产免费播| 精品国产午夜福利在线观看 | 久久精品国产亚洲AV日韩| 日韩AV毛片无码免费| 日本人真人姓交大视频| 亚洲AV日韩AV高潮无码专区| 99精品一区二区三区无码吞精 | 久久久国产精品ⅤA麻豆LL| 久久精品无码中文字幕老司机| 屁屁影院最新发布页CCYY| 亚洲 校园 欧美 国产 另类| 99久久久无码国产麻豆| 国产亚洲日韩欧美另类丝瓜APP| 国色天香A区与B区| 精品无人乱码高清在线观看| 日本按摩高潮S级中文片| 亚洲国产精品无码中文字满| 亚洲视频无码高清在线| 成人毛片无码一区二区三区| 国产999精品成人网站| 国产精品久久久久久久福利| 免费网站看V片在线18禁 | 亚洲成人无码AV| 亚洲中文字幕一区精品自拍| 大色综合色综合网站| 久久久久亚洲AV成人网人人| 年轻老师的滋味5| 亚洲AV日韩AV无码AV一区二| 八戒成年私人影院| 久久精品国产99精品国产2| 色欲香天天综合网站| 51成品网站W灬源码1688| 激情都市 校园 人妻 武侠| 老司机午夜精品视频资源| 人妻丰满熟妇av无码久久洗澡| 少妇高潮喷水久久久久久久久久| 无遮挡边吃奶边做刺激视频 | 丁香五月缴情网站| 美女裸体跪姿扒开屁股无内裤| 亚洲AV无码国产一区二区三区不 | 亚洲AV成人男人的天堂手机| 出差被绝伦上司侵犯中文字幕| 麻豆成人传媒一区二区| 亚洲AV无码一区二区三区观看| 成人免费视频在线观看| 男生听到女生喘气是什么心理现象 | 小SAO货边洗澡边CAO你动漫| 大学生高潮无套内谢视频| 免费观看人成影片| 亚洲成AV不卡无码无码不卡 | 极品少妇高潮XXXXX| 国产婷婷色综合AV蜜臀AV| 人人妻人人狠人人爽天天综合网| 无人区卡一卡二卡三乱码入口| 成年免费手机毛片免费看无码 | 亚洲AV成人午夜福利在线观看| 草莓视频APP在线下载| 女被啪到深处喷水GIF动态视频| 一本久久A精品一区二区| 极品熟妇大蝴蝶20P| 亚洲AV成人无码网站在线| 国产精华最好的产品人V中文| 久久五月丁香合缴情网| 亚洲爆乳成AV人在线蜜芽| BT天堂在线WWW最新版官网| 久久婷婷大香萑太香蕉AV人| 日韩一区二区三区视频| 99在线精品免费视频九九视| 里面也请好好疼爱五集| 亚洲一级 片内射无码| 饥渴老熟妇乱子在线播放| 性欧美ⅩXXXX极品少妇小说| 国产精品国产三级在线专区| 麻豆ā片免费观看在线看| 亚洲日本乱码一区二区在线二产线| 国产午夜精品理论片| 我跟闺蜜公交车被弄到高潮| 主人 跪好 知道错了吗| 丝袜灬啊灬快灬高潮了AV| 日本巨大的奶头在线观看| 中国无码人妻丰满熟妇啪啪软件| 丰满人妻熟妇乱偷人无码av| 欧亚精品卡一卡二卡三7174| FREE性台湾娇小VIDEOS| 国产自偷自偷免费一区| 我的好妈妈中文字幕HD| 国产精品久久久一区二区三区| 丝瓜草莓秋葵污旧版APP无限看| 二三四五六七无产乱码 | 无码人妻熟妇av又粗又大沈樵| 在线天堂网WWW天堂在线| 国产成人AⅤ片在线观看| 色悠久久久久综合网伊| 从今天开始当城主| 色欲香天天综合网站|