用途:Arbitrum Stylus 是 Arbitrum 的第二个虚拟机,基于 WASM,与 EVM 在 Arbitrum One(链 ID 42161)和 Nova(42170)上并行运行。可用 Rust、C、C++ 编写合约,编译为 WASM 后部署到与 Solidity 合约相同的链,两者共享状态,可通过标准 ABI 编码调用互相调用。
主要能力:提供 stylus-sdk(Rust crate),支持 #[storage]、#[entrypoint]、#[public] 等属性宏;提供 StorageU256、StorageAddress、StorageBool、StorageVec、StorageMap、StorageString、StorageBytes 等类型化存储原语,槽位布局与 EVM 256 位存储兼容;支持 sol! 宏定义事件、evm::log 发出事件、msg/block 上下文;可导出 Solidity 兼容 ABI,viem、ethers.js、cast、Remix 等工具均可调用。
使用方式:安装 Rust 后执行 rustup target add wasm32-unknown-unknown,再 cargo install cargo-stylus;用 cargo stylus new 创建项目;用 cargo stylus check 校验 WASM;用 cargo stylus deploy 部署并自动激活;手动部署时需另行调用 cargo stylus activate。测试可用 motsu 框架。
限制:Stylus 不是独立链;合约部署后必须激活,否则调用回滚;WASM 环境禁用浮点运算,需用定点数学;Stylus 合约不能使用 CREATE/CREATE2 部署其他合约,工厂模式需用 Solidity 实现;内部以 ink 计量(默认 1 gas = 10,000 ink);SDK crate 名为 stylus-sdk,而非 arbitrum-sdk;stylus-sdk 0.6+ 推荐属性式 API 替代旧 sol_storage! 宏。激活为一次性成本,主网约 1400 万 gas,随合约大小变化。