親愛的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 或者漏洞,我們將由社區決定是否繼續運行這個管理員為時間鎖的模式。