DeFi 用戶應該向開發者提出的質詢

DeFi 用戶應該向開發者提出的質詢

免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

原文標題:觀點 | DeFi 用戶應該向開發者提出的質詢

過去幾個月來,DeFi 生態經歷了巨大的動盪,數次攻擊之下,許多未被利用過的缺陷也被報道出來。

雖然代碼中無可避免會有 bug,但還是有很多方法能降低缺陷發生的頻率,以及降低缺陷帶來的負面影響。

作為一個審計員,我們想要幫助 DeFi 用戶問一些比較尖銳的問題;問這些問題的目的,一方面是讓開發人員認真去考慮系統安全性的優先級,另一方面,讓用戶能分辨出回答得好的協議,然後把錢投入這些協議。

以下問題能幫助用戶瞭解 DeFi 開發團隊對於安全性的立場,答案不一定有對錯之分,而且也不是每個團隊(or 獨立開發者)都有資源全盤顧及所有方面。但不論如何,用戶有權利知道這些信息,來決定自己願意承受的風險。

我們希望通過以下提問,促使後續開展更多正面的討論。

1. 管理員權限

大部分的主流 DeFi 協議都存在一些中心化的機制——允許特定的 “管理員” 地址以強硬的手段干預協議的運行。

這樣做雖然在安全上有好處,但這意味著你必須相信這些 “管理員” 不會濫用他們的特權;而且但凡這些管理員遭到黑客攻擊,他們的私鑰洩露所帶來的後果會更加嚴重。

管理員賬戶可以是以下幾種形式:單一地址、多重簽名錢包,或是由 DAO 管理的投票過程。那麼,

  • 管理員能採取哪些措施?
    • 暫停整個系統?
    • 修改賬戶餘額?
    • 設置 代幣/用戶 的 白名單/黑名單 ?
    • 升級某個子系統?
    • 升級整個系統?(等同於萬能...)
    • 其他權限?
  • 如果採取上述行為,是否有延遲執行機制?
  • 如果有延遲時間,那是多長?
  • 多少人有管理員權限?
  • 採取上述行為前,需要經過多少管理員同意?
  • 有哪些權限是由鏈上治理程序(即 DAO)來掌控的嗎?
  • 我該去哪裡瞭解提議更新協議的提案?

以上某些問題的回答已經可以通過 DefiWatch跟蹤瞭解。

2. 外部依賴

因為是公開的網絡,以太坊上充斥著不懷好意的攻擊者,因此開發者不能假設本系統外的合約一定會採取什麼樣的行為。但在許多 DeFi 應用中又不得不作出這樣的假設,因為服務本身就是在已有的一些合約上建構出來的。

這些問題能幫助用戶瞭解該項目在外部依賴上存在的風險。

  • 你的系統依賴什麼預言機(Oracle)?
  • 你的系統依賴什麼交易所?
  • 你用什麼第三方智能合約(如,OpenZeppelin)來建立系統?
  • 你的系統支持哪些代幣,你對這些代幣(合約)的行為模式有怎樣的預期?

3. 可靠的的披露系統和獎勵計劃

對於才華橫溢的黑客來說,攻擊 DeFi 協議對他們有著強大的金錢誘惑。制定獎勵計劃能激勵大家發現並揭露漏洞,而非鑽漏洞。對於白帽黑客來說,通過激勵系統揭露代碼漏洞也是提高自身聲譽的好方法 —— 既有好處又不違法。

任何公司要運行 DeFi 協議,或是涉及在線託管金錢的業務,都應該設有獎勵系統。你可以就他們的獎勵計劃及披露流程提出以下問題:

  • 你們的合約代碼能夠被所有人看到嗎?
  • 從你們的網站和 git 代碼庫,能夠很容易找到安全的聯繫方式嗎?
  • 你們的合約有沒有設置獎勵計劃?
  • 哪些合約在獎勵計劃內?
  • 獎勵計劃具體金額是?
  • 你們是否支付過獎勵計劃的獎金?
  • 對於 bug 報告,你們是否曾拒絕支付過?
  • 從你們的網站和 git 代碼庫,能夠很容易地找到獎勵計劃的詳細信息嗎?

理想情況下,這些信息應該放在 “website.com/security” 頁面下,而且能搭配 Github 的 SECURITY.md 功能使用。

4. 應急預案

當面對某些安全突發狀況的時候,新消息如潮水般湧來,用戶持續在 Twitter、Telegram、Discord 上提出棘手的問題......,這時候開發者很難頭腦清楚地應對突發狀況。

所以如果有應急預案的話,就能證明項目正朝著安全方向發展。要求項目公開他們完整的計劃可能不太現實,但我們還是能提出以下基礎的問題去側面瞭解:

  • 你們是否有處理突發安全事件的計劃提綱?
  • 你們的應急預案適用於哪些緊急情況?
  • 如果你們的系統是可升級的,這些升級步驟是否記錄在案?
  • 如果你們發現某個系統漏洞可能讓資金面臨風險,你們是否能通過應急預案先發制人,保護資金安全?

5. 審計與安全發展

審計並非萬靈丹,而且審計的內容總多多少少有點區別,但對於部署任何的 DeFi 合約之前,進行審計是至關重要的一步。

下面的問題不一定有 “正確答案”,但學識淵博的社區群眾們,應該能從項目的回答中看出開發團隊對於安全性的立場。

  • 你們最近一次審計是什麼時候?
  • 這次審計投入了多少精力(以標準開發者的一小時來做單位)?
  • 哪個機構做的審計?
  • 審計報告公開嗎?
  • 你們系統中有任何部分是沒有被涵蓋在審計的範圍內嗎?
  • 最近一次審計之後,你們有對合約進行更新嗎?如果有,更新了什麼?
  • 你們有和哪個安全團隊進行長期合作嗎?
  • 在合併代碼之前,開發者會彼此做 code review 嗎(至少檢查 Solidity 文件)?
  • 你們的合約代碼中,做過單元測試的比重是多少?
  • 審計過程中,你們用過其他的安全分析工具嗎?

原文鏈接:https://diligence.consensys.net/blog/2020/03/questions-defi-users-should-be-asking-defi-developers/作者:John Mardlin翻譯&校對:IAN LIU & 阿劍


分享到:


相關文章: