作者:知道創宇404區塊鏈安全研究團隊
日期:2021年3月12日

前言

Big Data Protocol 是為Web3.0數據市場提供動力的DeFi協議;該協議通過由專業數據提供商組成的網絡,對具有商業價值的數據進行令牌化,并使數據令牌在Uniswap上具有流動性;用戶通過為數據令牌提供流動性來賺取數據。挖礦機制上線后總鎖倉量一度達到 65 億美元,位列 DeFI 項目鎖倉量榜首。

據 Big Data Protocol 官方群消息,2021年3月12日,區塊高度達到 12022010 時 BDP 挖礦結束,用戶暫時無法正常提出挖礦資產。

notice

transfer

https://cn.etherscan.com/tx/0x15aed01b104f06fa8876db2bd86894791bd0830a36fc28f1d7590ab8d77c3336

消息發出后,大量用戶通過直接調用合約的方式(emergencyWithdraw)提取挖礦資產,但無法提取挖礦所得的 BDP 獎勵。

withdraw

分析

當用戶調用合約的withdraw函數領取獎勵時,合約內會調用 updatePool 函數。

updatePool函數主要用于根據當前區塊時間點,更新相關數據,并向質押功能合約鑄幣,用于獎勵分發

而提取失敗的問題根源就在這個mint鑄幣函數中

mint函數中會校驗seedPoolAmount變量大于0,否則全部回滾。但由于seedPoolAmount的獎勵在結束挖礦之前已全部分發,所以用戶調?合約時?法增發代幣,交易直接 revert,導致提取獎勵失敗。

seed_pool

bloxy

https://bloxy.info/tx/0x15aed01b104f06fa8876db2bd86894791bd0830a36fc28f1d7590ab8d77c3336

總結

通過對整個事件分析來看,本次事故并未造成用戶的本金損失;主要原因在于對合約提現函數的依賴條件考慮不充分,項目上線時應當模擬合約的不同狀態,進行充分測試驗證。

建議

目前,由于提現失敗造成社區的恐慌,大量用戶通過合約的 emergencyWithdraw 函數提取本金;Big Data Protocol 官方也給出了相應的解決措施,更新前端UI便于用戶提取挖礦資產,對于挖礦未提取的 BDP,后續補發所欠獎勵部分。

cuos


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1507/