13次发布
0.5.2 | 2024年7月10日 |
---|---|
0.5.0 | 2024年5月10日 |
0.4.3 | 2024年2月23日 |
0.4.2 | 2023年11月28日 |
0.1.0 |
|
#989 in 神奇豆子
每月下载 2,207 次
用于 5 crates
170KB
3K SLoC
Stylus SDK
概述
Stylus SDK使智能合约开发者能够使用Rust编程语言编写针对Arbitrum链的程序。Stylus程序编译成WebAssembly,然后可以部署在链上,与Solidity智能合约并行执行。Stylus程序不仅成本低、速度快,而且实现了WebAssembly之前被认为不可能的功能:EVM互操作性。
有关部署Rust智能合约的信息,请参阅Cargo Stylus CLI工具。有关Stylus的更多信息,请参阅Stylus:轻松入门。有关Stylus Rust开发的简单介绍,请参阅快速入门指南。
Rust SDK的全面文档可以在此处找到。
功能亮点
SDK使开发者能够轻松地在Rust中开发与Ethereum ABI等效的Stylus合约。它提供了一套完整的类型和快捷方式,可以抽象出Ethereum存储布局的细节,使开发者能够轻松地仅用Rust编写。有关功能的深入探讨,请参阅全面的功能概述。
SDK中提供的一些功能包括
- 泛型、基于存储的Rust类型,用于编程具有最佳存储缓存的等效Solidity智能合约。
- 编写通用语言的通用方法和入口点的简单宏。
- 自动导出Solidity接口,实现跨编程语言的互操作性。
- 由功能丰富的Alloy支持的强大原始类型。
使用Stylus SDK编写的Rust程序可以与Solidity智能合约通过ABI等效进行调用,反之亦然。事实上,现有的Solidity DEX可以在不修改的情况下列出Rust代币,反之亦然。
use stylus_sdk::{alloy_primitives::U256, prelude::*};
// Generate Solidity-equivalent, Rust structs backed by storage.
sol_storage! {
#[entrypoint]
pub struct Counter {
uint256 number;
}
}
#[external]
impl Counter {
// Gets the number value from storage.
pub fn number(&self) -> Result<U256, Vec<u8>> {
Ok(self.number.get())
}
// Sets a number in storage to a user-specified value.
pub fn set_number(&mut self, new_number: U256) -> Result<(), Vec<u8>> {
self.number.set(new_number);
Ok(())
}
}
此外,Stylus SDK支持#[no_std]
,以便合约可以选择退出标准库。事实上,整个SDK都可用,因此不需要特殊的特征标志。这可以有助于减少二进制大小,并且在像密码学这样的纯计算用例中可能更可取。
大多数用户将想要使用标准库,因为Stylus VM支持rustc
的wasm32-unknown-unknown
目标三元组。未来我们可能还会添加wasm32-wasi
,以及浮点数和SIMD,这些Stylus VM目前还不支持。
不知道Rust?
Stylus VM支持不仅仅是Rust。事实上,任何编译成WebAssembly的编程语言原则上都可以部署到Stylus启用的链上。下表包括SDK的官方端口,更多即将推出。
仓库 | 用例 | 许可 |
---|---|---|
Rust SDK | 一切! | Apache 2.0或MIT |
C/C++ SDK | 密码学和算法 | Apache 2.0或MIT |
Bf SDK | 教育 | Apache 2.0或MIT |
Cargo Stylus | 部署Stylus程序 | Apache 2.0或MIT |
想要自己编写? 加入我们在discord的#stylus
频道!
开发Stylus程序
Stylus SDK是创建和部署WebAssembly程序到Arbitrum链的构建模块之一。要从hello-world示例创建新的Stylus项目并在链上部署,请查看以下一些我们的工具
仓库 | 用例 | 许可 |
---|---|---|
Stylus Hello World | Rust Stylus入门模板 | Apache 2.0或MIT |
Cargo Stylus CLI | 部署Stylus程序 | Apache 2.0或MIT |
许可
© 2022-2023 Offchain Labs, Inc.
本项目许可采用以下之一
任选其一。
本项目的SPDX许可证标识符为MIT OR Apache-2.0
。
依赖项
~12MB
~200K SLoC