本文介绍了 Vyper 0.3.10 版本中引入的 O(1) 选择器表(Sparse, Constant Time Jump Tables,SCTJTs)技术,该技术通过两级哈希表结构优化了合约中函数调用的方法 ID 查找过程,可以根据用户的性能约束,选择针对 gas 优化或针对代码大小优化,显著提升了 Vyper 合约的性能,使其在 gas 消耗和代码大小上与手写的 Huff/Assembly/Bytecode 合约具有竞争力。
本文介绍了 Vyper 编译器如何建模和维护EVM内存,解释了Vyper函数的内存布局,变量如何分配和释放,以及调用约定如何与内存分配交织。它可以帮助开发者理解如何构建合约以节省gas,以及如何防止与DynArrays分配相关的某些DoS场景。同时,对于研究Vyper编译器的人来说,这是一份有用的资料,文中包含了许多对Vyper代码库的引用。
DynArrays
本文回顾了 Vyper 团队在 Devcon Bangkok 上的活动,包括 Vitalik 在主题演讲中对 Vyper 的赞扬,Vyper 展台的盛况,以及与以太坊社区的互动和合作。文章还提到了 Vyper 周边产品的受欢迎程度,以及未来 Vyper 的发展计划,例如发布新的 Vyper 课程。
本文总结了 Vyper 编译器在过去一年中为提升安全性和稳定性所做的努力,包括增加安全预算、进行多次安全审计、发起漏洞赏金计划、实施合约监控系统等。文章还介绍了 Vyper 团队在测试和形式化验证方面的工作,以及未来的发展计划,强调了社区支持对 Vyper 安全的重要性。
这份报告总结了Vyper编译器代码审计的结果,发现了2个高风险、7个中风险和22个低风险的问题。
该文章深入分析了 Vyper 编译器中存在的漏洞,该漏洞影响了 Curve.Fi 流动性池,导致其被利用。文章详细追溯了漏洞的产生、发展和修复过程,解释了 @nonreentrant 装饰器在特定 Vyper 版本中的失效原因,以及攻击者如何利用此漏洞获利。此外,文章还总结了经验教训,并提出了改进 Vyper 安全性的措施和未来计划。
@nonreentrant