亲爱的 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 或者漏洞,我们将由社区决定是否继续运行这个管理员为时间锁的模式。