介绍
区块链开发的EVM技术栈与传统的Web2开发环境有着显著差异,从处理Etherscan上的字节码到防范Solidity中的各种代码漏洞,这些挑战让许多开发者感到陌生。这种差异在Solidity-EVM技术栈与Rust、C++或Python等主流语言之间形成了一道明显的”鸿沟”。随着区块链技术的持续演进,业界迫切需要弥合这一差距,推动更加灵活可组合的Web3开发模式。
本文将重点介绍Offchain Labs在斯坦福区块链周期间发布的创新项目Arbitrum Stylus。这个具有里程碑意义的项目通过统一EVM与WASM执行环境,致力于建立智能合约可组合性的新标准。我们将首先探讨该项目的开发背景,随后深入分析其技术实现细节,最后展望其对Web3生态的潜在影响。
Arbitrum Stylus的开发背景
Arbitrum Stylus的诞生源于对区块链开发领域两个核心痛点的思考:如何提升开发的可及性,以及如何优化智能合约的执行效率。
降低区块链开发门槛
Electric Capital开发者报告数据。图片来源[1],检索于2023年10月20日。
Electric Capital的开发者报告显示,当前每月活跃的区块链开发者约2万人[1]。虽然这一数字近年来增长显著,但与使用Rust或C++等主流语言的开发者群体相比仍相去甚远。随着区块链技术的普及,如何让更多开发者便捷地进入智能合约开发领域成为亟待解决的问题。
一个有效的解决方案是将智能合约开发与现有主流语言生态相融合。这在Solana和Cosmos等非EVM生态中已有先例,Rust已成为这些平台的标准智能合约语言。然而在EVM生态中,Solidity仍是主要的开发语言。Arbitrum Stylus通过支持开发者使用Rust等主流语言编写智能合约并部署到EVM兼容链上,正在改变这一现状。
提升合约执行效率
近年来去中心化应用的爆发式增长导致链上计算需求激增,特别是在以太坊网络上。网络拥堵带来的高额Gas费用催生了一系列提升公链吞吐量的创新方案,其中Arbitrum是该领域最具代表性的项目之一。其核心产品包括Arbitrum One L2链和基于Nitro技术的L2堆栈。
Arbitrum Stylus是这一技术演进的自然延伸。与之前专注于优化交易间效率的方案不同,Stylus将优化重点放在了交易内部执行层面。通过支持WebAssembly(WASM)执行合约,Stylus合约的执行速度提升了一个数量级,有望显著降低Gas费用,其内存访问成本比EVM降低了100-500倍[2]。
Stylus:实现WASM与EVM的互操作性
WebAssembly与Arbitrum Nitro
要理解Stylus为何比传统EVM引擎更高效和可组合,首先需要了解WebAssembly(WASM)的作用。WASM是一种汇编语言形式的二进制代码,需要编译器将Rust或C++等高级语言转换为这种机器可读格式。
WASM专为Web浏览器优化,能够显著提升基于JavaScript的Web应用性能。作为一种可移植、模块化的汇编语言,WASM支持开发者直接使用多种主流语言编写代码片段[3]。
Arbitrum Nitro升级后,链上争议都在WASM环境中处理,这意味着Nitro拥有适用于任意WASM代码的欺诈证明系统[2]。这一特性为编译为WASM的程序提供了安全保障。
Arbitrum Stylus在Nitro的WASM欺诈证明器基础上,增加了基于领先WASM引擎Wasmer的执行引擎,其执行速度远超Geth处理EVM字节码的效率[2]。完整的执行和证明能力使得智能合约可以完全基于WASM编写、执行和验证。由于Rust和C++等语言可直接编译为WASM,开发者现在可以使用这些主流语言开发智能合约。
EVM与Stylus EVM+对比示意图。图片来源[2]。
EVM+引擎的一致性设计
Arbitrum Stylus在支持Rust等WASM兼容语言的同时,完全保留了Solidity智能合约的执行能力。通过并行支持EVM和WASM两个执行引擎,开发者可以灵活选择用Solidity或Rust编写应用的不同组件。
这种设计自然引出一个关键问题:Stylus VM如何管理两个引擎之间的协调?如何判断何时切换执行环境?
解决方案是:基于EVM的合约会编译为常规字节码执行,而WASM合约则会在开头添加特殊标识。当调用合约时,Stylus VM通过这些标识自动选择合适的执行引擎。这种设计还确保了高度的互操作性——WASM合约可以调用Solidity合约,反之亦然。这也是Stylus与其他采用WASM的区块链的关键区别:它确保WASM合约与EVM合约完全兼容,既保持向后兼容性,又能利用EVM生态的流动性。
从另一个角度看,区块链本质上是一个”世界状态机”,通过EVM定义的状态转换来演进。Stylus的EVM和WASM引擎使用相同的Trie结构来读写世界状态,两者都会产生状态变化来更新链上数据,区别仅在于计算这些状态变化的方式。
EVM+引擎的成本优势
前文提到WASM引擎能显著降低执行成本,现在让我们具体分析这一优势的实现机制。以一个简单的加法指令(如2+3)为例:
在EVM中执行这个操作需要多个步骤[5]:支付Gas费用并进行内存表查找、处理跟踪逻辑、弹出堆栈中的两项、执行加法运算、推送结果。其中只有第四步是实际的计算操作,其他步骤都是EVM系统的固定开销。
而在WASM环境下,同样的加法操作只需一步:执行单个x86或ARM ADD指令。这种极简的执行流程使得WASM的加法操作比EVM便宜约150倍。为了精确计量这些细微的成本差异,Stylus VM引入了”ink”这一新的Gas计量单位,默认定义为1 Gas的1/10000,链管理者还可以根据需要进行调整[5]。
EVM ADD与WASM ADD操作对比。图片来源[7]。
需要注意的是,使用WASM环境需要支付1.14亿Gas的固定激活费用,每次调用Stylus程序还需128-2048个Gas[5]。因此对于简单的加法操作,切换到WASM环境可能并不划算。但对于内存密集型智能合约,这些节省会累积成显著优势。例如在EVM中分配3.8MB内存需要约3200万Gas,而在Stylus WASM VM中仅需约6.4万Gas,节省了500倍[6]。这意味着许多在EVM中因Gas限制而无法实现的内存密集型应用,在Stylus VM中将变得可行。
Stylus开启的新应用场景
内存密集型应用
Arbitrum Stylus最令人期待的创新之一是支持链上内存密集型应用。这将催生一系列全新应用场景,如生成式AI NFT、高频交易和链上游戏[7]。特别是对于以高内存需求著称的AI计算,Stylus VM可能成为使其在链上可行的关键技术,同时保持与EVM合约的完全互操作性。
替代VM与EVM流动性的融合
Stylus的EVM兼容性及其支持的互操作能力,意味着基于WASM的合约可以直接利用EVM生态丰富的流动性和用户基础。考虑到Solana和Cosmos等平台已使用Rust等WASM兼容语言作为智能合约语言,这些生态的开发者可以轻松将其合约移植到EVM生态,立即获得EVM的网络效应。
通用库与开发工具
支持Rust和C++等主流语言的另一优势是能够利用这些生态成熟的工具链。开发者不仅可以访问丰富的通用库(涵盖从密码学到文件I/O的各种功能),还能使用强大的调试工具如C/C++的GDB工具包。这些都将显著提升Web3开发的便利性,降低区块链开发的学习曲线。
物联网与DePIN的链上计算
WASM的高效执行特性使Stylus VM有望实现链上计算与物联网设备的集成。虽然WASM最初设计用于浏览器环境,但其轻量、模块化的架构也非常适合资源受限的物联网设备[8]。
这使得Arbitrum Stylus特别适合支持去中心化物理基础设施网络(DePIN)的发展。DePIN利用区块链网络和代币激励机制来维护各类物理基础设施[9]。通过Stylus VM,这些物联网设备可以高效运行基于WASM的计算,同时通过Arbitrum生态接入EVM的流动性[10]。
结论
本文深入探讨了Arbitrum Stylus的开发背景、技术实现和行业影响。通过支持多种主流编程语言,Stylus使区块链开发变得更加平易近人和高效。它将主流语言的可组合性与EVM流动性相结合,开创了包括内存密集型应用在内的一系列新场景。可以说,Stylus是一个定义下一代可组合智能合约的里程碑项目,它正在模糊Web2与Web3开发的界限,构建更高效、集成化的区块链开发堆栈。
感谢您阅读斯坦福区块链评论!订阅支持我们打造专业的Web3行业期刊。
注:本文基于对Offchain Labs的Rachel Bousfield和《斯坦福区块链评论》主编Jay Yu的访谈内容整理而成。Arbitrum Stylus于2023年9月发布。
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/10728.html