包含Filecoin虚拟机(FVM)的Filecoin v16 Skyr网络升级圆满完成!
它来了!
Filecoin v16 Skyr升级(包含了Filecoin虚拟机M1里程碑进展)已经在7月6日周三14:00 UTC成功完成。
这次升级标志着自两年前主网上线之后,Filecoin网络上最重大的升级转型。这次升级的重头戏是引入Filecoin虚拟机(FVM)(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0030.md)及相关的链状态迁移。Filecoin虚拟机支持多种语言,提供了基于WASM的执行环境,能够为Filecoin去中心化存储网络增加智能合约(在Filecoin上被称为actors)部署的能力。
Skyr升级,是Filecoin完全实现链上用户可编程性的两步规划中的第一步。它带来了具备无限可能的新用例和特性,可实施到这个早就具备健壮性的网络上。这个升级意味着Filecoin网络的核心逻辑(通过内建 actors(https://github.com/filecoin-project/builtin-actors)里实现),现在已经运行在FVM虚拟机M1里程碑代码之上。随着下一阶段的实现,用户还将可以向网络上部署自定义的逻辑,让Filecoin成为存储层和计算层的集合体。
这个升级里包含了什么内容?
Skyr升级在这个网络上实现了三个与FVM虚拟机相关的 Filecoin改进提议(FIPs)(https://github.com/filecoin-project/FIPs) ,这包括FIP 0030(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0030.md)、0031(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0031.md)和0032(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0032.md)。这些改进提议的实现,为我们带来了FVM虚拟机路线图(https://fvm.filecoin.io/#roadmap-4)的第一个里程碑。在升级生效的关头,网络原子性地切换到了基于WASM的新型FVM虚拟机,来作为链验证机制。相关的规格可以查看这里(https://github.com/filecoin-project/fvm-specs)。现在,所有的客户端都已经采用了FVM虚拟机实施参考架构 (ref-fvm(https://github.com/filecoin-project/ref-fvm)),它使用了 Wasmtime(https://wasmtime.dev/) 作为其Wasm运行时。
这个原子性的切换过程还包括了将基于Go语言的specs-actors(https://github.com/filecoin-project/specs-actors) 替换成基于Rust语言的内建builtin-actors(https://github.com/filecoin-project/builtin-actors) (Filecoin的actors相当于其他平台的智能合约)。这些内建 actors实现了Filecoin协议的核心特性(存储、证明、能耗审计、交易提议等),处于这个协议的核心部分。
内建actors被编译成Wasm字节码,封装成一个CARv1文件(https://ipld.io/specs/transport/car/carv1/)(bundle),并以一个manifest(https://github.com/filecoin-project/builtin-actors#importable-bundle)戳印,最后被放置在系统actors的状态里。Filecoin客户端(如Lotus、Forest和Venus)将这些bundles载入其区块存储空间(blockstores),在信息执行阶段这些字节码就可以使用了。
Skyr升级带来的另一个显著改变,是Gas模型的重构。网络现在会为执行逻辑收取Gas费用,并在Wasm指令层面执行计算。它还对syscalls和externs收取费用。这带来了更精确的Gas-时间对应度,遵从10 Gas单元对应每纳秒执行时间的基线。
此外,Skyr升级也增强了Filecoin协议的其他方面。这些改变包括了一个更安全的SnarkPack证明聚合工具(https://research.protocol.ai/blog/2021/snarkpack-how-to-aggregate-snarks-efficiently/)的新版本、链状态不再使用非UTF-8编码字符串(https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0027.md)以及修复Filecoin使用分布式随机数(https://drand.love/)时出现的off-by-one漏洞(https://github.com/filecoin-project/lotus/issues/2170)。在这里(https://github.com/filecoin-project/tpm/blob/master/Network%20Upgrades/v16.md)可以查看完整的变更列表。
测试和审计
考虑到这次升级的范围,很有必要进行深度的测试。FVM虚拟机在v14和v15版本时就已经通过完全的向后兼容性,完成了测试。这让用户能运行基于FVM虚拟机的实验性金丝雀发布节点,来汇报其所发现的任何问题。这个过程中发现了不同的问题,并逐个解决。我们十分感谢参与者及其贡献!测试向量(https://github.com/filecoin-project/test-vectors) 也是从Filecoin主网抽取出来的,用于验证FVM虚拟机的正确性。
有一个长达三个月的冲刺任务,专门对新型的内建builtin-actors套件展开了单元测试和集成测试。它的目标,是实现与现在已经废弃的specs-actors的对等测试条件。这个里程碑在5月份已经实现了。除了检查actors合约自身的正确性外,这项工作还解锁了对actors作出变更而不会有高回退风险的能力,这是相当重要的。这是在将来快速发布漏洞修复的重要前提条件。
多个测试网络已经发起,来实现更多的端对端测试。在活跃开发阶段,一个“caterpillar”测试链根据需要可在一天启动数次。这个网络最终演化成“butterflynet”,这样命名是因为它是一个用于捕捉漏洞(bug)的测试链。在这个快速测试和部署周期之后,Filecoin最主要的(也是最长时间的)测试网络calibrationnet(https://docs.filecoin.io/networks/overview/#calibration)整合了Skyr升级引入的变更,而社区的成员也被邀请到参与这些测试网络里,他们使用了不同的节点参数,这对及时发现可能存在的平台专属问题非常重要。
除了上面列举的测试工作外,代码自身也经历了多次审计。核心团队发起了内部的红队审计。此外,此外,有两个赏金计划在2022年5月到6月期间开展,它们包括了Gitcoin(https://gitcoin.co/issue/filecoin-project/community/504/100028707)、Immunefi(https://immunefi.com/bounty/filecoin/),与Filecoin安全赏金计划(https://security.filecoin.io/)一起,这些赏金对社区任何人都是开放的。我们感谢通过这些计划提交漏洞的所有人!
独立承包商Alex Wade(https://twitter.com/wadeAlexC)执行了一次为期七周的正式审计任务。这次审计覆盖了FVM M1里程碑的所有范围,在这里可以查看审计dashboard信息(https://hackmd.io/Z-1BA6MXR3qBluxixvupBw)。这次审计找出了一些潜在的安全漏洞和小问题,审计结果对相关变更的正确性给出了整体的高信任度的评价。
下一步是什么?
FVM虚拟机核心团队现正专注和投入到FVM的M2.1里程碑中:FEVM,能将EVM智能合约部署到Filecoin网络上。这个高度期待的里程碑之所以成为可能,要得益于被hypervisor启发的FVM多语言支持设计。
将EVM兼容的FVM虚拟机提上优先级,是听取了有才华的web3开发者社区的反馈意见的结果。这些反馈强烈建议利用和重用现有的以太坊和Solidity能力,在Filecoin上搭建应用。它也反映了人们在Filecoin上部署久经考验的标准EVM合约(如tokens、注册处等)的意愿。这些合约可以用作搭建大型解决方案的基石,如数据计算、Data DAOs、检索市场、自动化智能市场提议和具备无限可能的其他用例。
核心的开源价值对开发者非常重要,这意味着与现有EVM虚拟机工具的完全兼容性是FVM虚拟机的头等要务。这些工具包括Hardhat、Foundry、Remix、Truffle和MetaMask。一个即将到来的FVM Foundry Program计划(F/1)将很快开放申请,它关注那些能带来FVM虚拟机用例和技能(兼容EVM的)的开发者社区,这些社区会有意参与打造FVM虚拟机的未来。如果这说的就是你,那请保持关注!
Filecoin虚拟机原生开发也会同步进行,而未来WASM开发体验的核心工具和基础设施,正由杰出的开发团队FVM Foundry早期建造者计划(https://pl-strflt.notion.site/Welcome-to-the-FVM-Foundry-Early-Builders-Program-0c21aa082a3a48b5b9262d122204d141) (FVM Foundry F/0)推进,并得到了Open RFP Grant赞助计划(https://github.com/filecoin-project/devgrants/blob/master/rfps/fvm-open-tools-infra.md)的资助。这些工具包括了一个高层级的Rust SDK库、AssemblyScript和TinyGo SDK库、开发者工具箱以及测试和调试工具。RFP Grant赞助计划(https://github.com/filecoin-project/devgrants/blob/master/rfps/fvm-open-tools-infra.md)现正向那些有意帮助打造原生FVM虚拟机的必要组件的人开放。我们需要所有人的参与!
下一阶段的FVM虚拟机也会被一个专用的FVM虚拟机测试链支持。这个被称为Wallaby的测试链会由专门的存储提供者运行,能够进行交易和市场提议测试,从而让FVM的开发更顺利。
鸣谢
从这篇文章中可以看出,很多团队尽全力设计、建造、审计、测试和部署Skyr网络升级。这些努力包括以下团队提供的开发和测试贡献:ChainSafe(https://chainsafe.io/)、IPFS Force(https://twitter.com/force_ipfs)、Polyphene(https://polyphene.io/)和协议实验室EngRes(https://www.notion.so/pl-strflt/PL-EngRes-Public-b5086aea86ed4f81bc7d0721c6935e1e);来自SPX group(https://github.com/filecoin-project/lotus/discussions?discussions_q=label%3ASPX)、1475开发团队和StorSwift(https://storswift.com/) 等的大范围用户测试;在Immunefi(https://immunefi.com/)和Gitcoin(https://gitcoin.co/)上参与漏洞赏金计划的所有人;Alex Wade的(https://twitter.com/wadeAlexC) 审计工作;来自Zondax(https://zondax.ch/)的关键生态系统工具和利益相关者支持;以及Filecoin 基金会(https://fil.org/)的努力协调和规划工作。感谢这些个人和团队,感谢社区的热心成员以不同方式为这个里程碑作出的贡献。我们希望你与我们一样,对在Filecoin上解锁完全的用户可编程性充满热情,并持续与我们一起共同前进!
如果您也对Filecoin感兴趣,欢迎了解更多内容:
网站:https://filecoin.io
中文社区论坛:
https://github.com/filecoin-project/community-china/discussions
Slack频道:filecoin.io/slack/
Twitter: @Filecoin
博客:https://filecoin.io/zh-cn/blog/
GitHub: https://github.com/filecoin-project
Filecoin技术文档:https://docs.filecoin.io/build/
Filecoin规范:
https://spec.filecoin.io/
Filecoin区块浏览器:
https://filscan.io/#/home
关注Filecoin技术进展:https://github.com/filecoin-project
加入Filecoin社区论坛:https://github.com/filecoin-project/community/discussions
在主网上进行存储:
https://docs.filecoin.io/
扫码关注我们
微信号|Filecoin-Official