親愛的Alpaca Finance 社區,
社區裡面對於Alpaca Finance的合約安全性有大量的疑問,我們希望通過下面的解釋能夠解決相關的問題。
我們致力於保持社區透明,非常感謝有如此多的社區成員幫助我們審計合約代碼。
什麼是可升級智能合約?
可升級智能合約是一種合約部署的方式。不同於平常的部署實際代碼的方式,這是一種部署指向實際合約地址指針的方式。
開發人員能夠修改實際合約指向的地址,從而達到可升級合約的模式。
可升級智能合約的優/缺點是什麼?
優點: 如果合約中有錯誤或漏洞,能夠修改合約地址,保證Alpaca 協議繼續安全運行。
缺點: 攻擊者能夠惡意修改合約地址,並且新增非法函數功能,如達到竊取用戶資金等。
為什麼要使用可升級智能合約的模式呢?
作為一個沒有投資者的公平啟動項目,進行合約審計的成本非常之高。
我們已經非常謹慎的進行代碼測試(72個測試用例,300多個測試斷言),但我們依然無法保證合約不存在bug。
因此,為了保證合約出現問題或漏洞的時候,能夠快速的修復,我們決定採用可升級合約這種模式,考慮了安全性並確保了靈活性。
測試用例如下圖
317 個測試斷言
你如何能夠確保我們不會跑路?
所有可升級合約的管理員/ 擁有者,都是一個時間鎖合約地址。因此,每個人都能實時觀察到項目方是否更改或者升級了智能合約。由項目開發人員進行的升級都在24小時後生效。任何對智能合約的惡意攻擊都能給用戶提供充足的時間來提取資金,安全退出項目。事實上,有了這些設定之後,假如我們惡意的切換智能合約,你都將會有足夠的時間做出反應。
合約部署/ 查看連接: https://bscscan.com/address/0xd50aab6b210fe049b6c5262f5a7676204699ab8e#contracts
項目中所有可升級合約管理員/ 擁有者均為時間鎖的相關交易:
https://bscscan.com/address/0x5379F32C8D5F663EACb61eeF63F722950294f452#internaltx
(上圖為項目中相關可升級合約的管理員/ 擁有者均為時間鎖的交易記錄)
ibBUSD + BUSD vault: 0x7C9e73d4C71dae564d41F78d56439bB4ba87592f
BUSD vault config: 0xd7b805E88c5F52EDE71a9b93F7048c8d632DBEd4
ibBNB + BNB vault: 0xd7D069493685A581d27824Fc46EdA46B7EfC0063
BNB vault config: 0x53dbb71303ad0F9AFa184B8f7147F9f12Bb5Dc01
Worker config: 0xADaBC5FC5da42c85A84e66096460C769a151A8F8
Simple oracle: 0x166f56F2EDa9817cAB77118AE4FCAA0002A17eC7
Strategy liquidate: 0xe2880836faf7FaDF094418F9E9DdDe3d132243F1
Strategy add base token only: 0xBBd3464C571db4315bebeE098381b687c8269314
時間鎖合約地址相關參數查看
https://bscscan.com/address/0x2D5408f2287BF9F9B05404794459a846651D0a59#readContract
( 可見最小的延遲時間為86,400 秒,等價於24小時)
如下是ibBNB和ibBUSD 的智能合約源碼實現,你可以看到兩個代理合約都調用了我們的可升級合約
https://bscscan.com/address/0xd50aab6b210fe049b6c5262f5a7676204699ab8e#internaltx
ibBUSD token 合約地址: 0x7C9e73d4C71dae564d41F78d56439bB4ba87592f
ibBNB token 合約地址: 0xd7D069493685A581d27824Fc46EdA46B7EfC0063
最後一點,一旦我們確保了我們的合約沒有任何Bug 或者漏洞,我們將由社區決定是否繼續運行這個管理員為時間鎖的模式。