YFII是一个新型去中心化DeFi矿池,应社区小伙伴邀请,安比实验室于2020年7月27日至8月2日对YFII智能合约进行了安全性研究。分析对象为下列合约:YFIIPool1:0xb81D3cB2708530ea990a287142b82D058725C092YFIIPool2:0xAFfcD3D45cEF58B1DfA773463824c6F6bB0Dc13aYFIIToken:0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83BPTToken:0x16cAC1403377978644e78769Daa49d8f6B6CF565初步分析结果表明,以上四个合约并未包含致命安全漏洞。安比实验室希望通过本文对研究过程做一个记录和总结,Token价格、经济模型、其他外部合约模块、以及未来新的合约不在本文讨论内。YFII和YFI是什么
YearnFinance是一个DeFi收益聚合器,于7月17日推出治理TokenYFI后因其新颖的分发机制和治理方案迅速引爆了流动性挖矿市场。而YFII是对YFI项目的分叉,遵循YIP-8,实施了类似比特币的减半机制。YFII相对YFI做了哪些改动
数字人民币App上线“发红包”功能,领取后无使用限制:金色财经报道,12月24日,数字人民币(试点版)App迎来版本更新,新增专属头像、个人红包功能。“服务”页新增“现金红包”选项。“现金红包”界面显示,红包分为“群红包”和“专属红包”两类:“专属红包”可发给指定手机号联系人;“群红包”可以由发放人通过微信、QQ、支付宝等社交平台发放,红包类型分为拼手气、拼手速、等额红包三种。据悉,现金红包是直接计入数字钱包余额的一种数字人民币红包,现金红包领取后没有使用限制,可用于支付或存回账户。专属头像功能一次默认生成6个头像,该功能哈植入了数字人民币App推广策略,用户可通过“拉新”获取生成头像的额外机会。[2022/12/24 22:05:19]
目前,YFII合约代码均直接Fork自YearnFinance,做了较小的改动以支持YFIIToken的定期减半分发。下表为YFII涉及的合约与YFI合约对应关系及地址。
数据:StarkNet桥接存储TVL突破5000枚ETH,月增长超150%:金色财经报道,据DuneAnalytics最新数据显示,以太坊Layer2扩容解决方案StarkNet跨链桥接存储总价值已突破5000枚ETH,本文撰写时达到5,054枚ETH,按照当前价格计算超过600万美元,参与桥接交易的用户数量为69,181。历史数据显示,StarkNet跨链桥接存储总价值于10月27日突破2,000枚ETH,这意味着该指标月增长超150%;在其他L2跨链桥方面,当前Arbitrum跨链桥接存储总价值为2,014,832枚ETH、Optimism为438,250枚ETH、zkSync为187,180枚ETH。[2022/11/28 21:05:51]
YFI/YFIIToken为项目治理Token合约,二者实现一致,具体为一个带mint和简单governance功能的标准ERC-20Token。BPTToken为BalancerPoolToken合约,是做市商的流动性证明Token,实际由自动做市协议Balancer的BFactory入口合约创建,因此二者实现完全一致。该合约代码此前由TrailofBits和ConsensysDiligence进行过审计。Pool1和Pool2是用于分发治理Token的流动性挖矿合约,Pool1和Pool2的代码实现一致,均被称为YearnRewards合约,而YFII相对于YFI的改动即在这该合约中。YFIIPool1和Pool2合约相对于原始代码新增了checkStart()和checkhalve()两个修饰符函数,分别用于控制挖矿开始时间,和治理Token周期性地产量减半。YFII&YFI核心合约简析
币安宣布已添加USTC作为可借资产:10月13日消息,据官方公告,币安“质押借币”平台新增可借资产USTC。[2022/10/13 14:26:18]
YFII和YFI流动性挖矿的核心合约代码YearnRewards实际源自于Synthetix项目的Unipool,原本用于奖励在Uniswap上为ETH/sETH交易对提供流动性的做市商SNXToken,该代码之前经过SigmaPrime审计。基于YearnRewards的流动性挖矿整个流程可以分为以下几步:具有RewardDistribution权限的地址,预先通过调用YearnRewards合约的notifyRewardAmount()函数,设置奖励数额,而对应金额的YFIToken应由YFIminter转入YearnRewards合约中。矿工向YearnRewards合约指定的目标DeFi合约提供流动性,拿到对应的流动性证明Token,该Token可以用于换回资产以及赚取利息或手续费收益。矿工将得到的PoolToken通过调用stake()函数存入YearnRewards合约中,合约自动根据Stake时长和矿工存入资金规模占资金池总规模的大小来计算矿工应得的奖励。矿工可随时提走自己的应有奖励以及之前存入的PoolToken。通常一个YearnRewards合约专门用于单个特定DeFi项目的流动性挖矿,如Pool1对接Curve项目的y池,Pool2对接Balancer上的YFI-DAIPool。一些发现
MakerDAO联创建议考虑将DAI与USD脱钩:8月28日消息,鉴于当局对Tornado Cash的制裁,MakerDAO的联合创始人Rune Christensen近期就其原生代币与USDC脱钩进行了讨论,他向社区解释了为什么DAI可能是去中心化自治组织(DAO)的唯一选择。
Rune Christensen在他的博客中披露了风险加权资产(RWA)的相关风险计算错误,他表示,对加密货币的实体打击可以在没有任何前兆的情况下发生,即使是合法、无辜的用户也没有恢复的可能性。在透露协议无法遵守监管机构的同时,Christensen建议,“我们必须选择去中心化的道路,这一直是Dai的目的”。
据Daistats数据显示,目前超过50%的DAI是由USDC担保的。(Cointelegraph)[2022/8/28 12:54:02]
前面提到YFII相对于YFI的改动,代码改动整体较小。新增两个修饰器函数用于约束stake()withdraw()getReward()三个主要功能函数。
Patrick Hansen:欧洲央行正在邀请技术专家参加技术会谈,探讨CBDC的设计方案:金色财经报道,Presight Capital的加密风险投资顾问Patrick Hansen在社交媒体上表示,欧洲央行正在邀请技术专家参加技术会谈,探讨CBDC的设计方案,会谈的重点是增强隐私的技术在零售支付结算中的应用。申请截止到7月20日。[2022/7/11 2:05:00]
notifyRewardAmount()函数中新增了一行代码,用于在notify的同时直接控制YFIToken合约mint指定数量的Token到当前YearnRewards合约,将其作为奖励用于分发。因此,Pool1和Pool2合约必须是YFIIToken合约的minter。这让YFII与YFI在Token分发细节逻辑上稍有不同。YFI每期奖励的分发都需要由特定地址负责设置金额并转入Token。而YFII除了第一期开始前执行了notifyRewardAmount()操作,之后会随着用户的调用,产量自动定期减半。
另外,在与社区开发者Madao和gaojin讨论代码细节的过程中,Madao提到Token产量自动减半的执行需要依赖checkhalve()函数的执行,实际则依赖用户与合约交互,执行时间无法精准控制到上一个周期的结尾,减半发生时间会与预期时间存在一定的时间差,并且合约减半实际发生时间很大概率晚于预期时间。特别地,合约计算奖励时会将两个周期间多出来的时间差计算在内,导致给每个用户计算的奖励值会略高于预期值,产生了一定误差。进而我们发现,只要误差存在,理论上最后一个从Pool中提取reward的人可能无法正常提现。这是因为合约在减半的同时MintYFIIToken至Pool合约。由于前面误差的存在,导致合约中用户账面收益高于实际Mint出来的Token数量。误差的大小计算方法为每个周期结束时间与下次减半发生实际发生时间之间的时间差Delta乘以减半后的rewardRate。根据上图测算,平均延时60秒减半,累计误差在1个YFII以内。只要能控制时间误差足够小,再加上持续有下一周期的Token作为补充,因此该误差问题影响较小。YFII管理员权限处理
YFI类Token都存在铸币接口,具有mint权限的地址可以增发Token。YFI类Token还存在Governance管理员,具有权限添加和删除Minter。通常理想情况下这些地址特殊权限地址应该为多签合约或其他专门合约。另外YearnRewards合约有rewardDistribution权限地址,用于调用notifyRewardAmount()函数设置奖励金额。YearnRewards合约还存在owner权限地址,用于设置rewardDistribution地址。目前,YFII项目的做法是将YFIIToken的Governance管理员、Pool1和Pool2的rewardDistribution均设为了0地址。管理员权限销毁记录可参见https://burn.yfii.finance/。经查验,管理员权限销毁属实。目前只有Pool1和Pool2两个合约地址具有YFIIToken的mint权限,属于为了实现周期性减半的必要权限,且未来无法被滥用。特别值得一提地是,原版YFIToken代码实现中,并未给addMinter()该特权函数添加Event,导致普通用户无法方便地查看究竟合约有多少minter。当心,这让各种类YFI项目非常容易藏入后门。经查验,YFIIToken合约总共只有两条addMinter()记录,分别为Pool1和Pool2合约添加mint权限,未引入多余的minter。总结
YFI整体是一次非常有意义的DeFi创新实验,通过YearnFinance我们看到去中心化的治理代币分发,充分激发了DeFi社区的挖矿和治理热情。YFII在YFI的基础上实现了YIP-8提案,探索了一种可能更公平的治理代币分发方案,并且短时间在社区内产生了较大影响,发展势头惊人。安全建议
随着流动性挖矿和DeFi产品的火热,市面上涌现出来各种新型DeFi智能合约,组合性风险剧增。安比实验室提醒用户与任何DeFi项目交互时一定要注意安全第一,认清域名、合约地址,仔细审查所有与资金相关的操作,尽量不要与来源不明的智能合约交互。另外,我们应更多关注DeFi产品本身和智能合约安全,分析价值基础和风险来源,不盲信APR,只投入能够承受损失的金额。特别提醒,记得用本文中提供的线索自行检查参与的类YFI项目管理员权限。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。