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 2023年6月27日

#989 in 神奇豆子

Download history 123/week @ 2024-04-16 204/week @ 2024-04-23 276/week @ 2024-04-30 385/week @ 2024-05-07 690/week @ 2024-05-14 1138/week @ 2024-05-21 824/week @ 2024-05-28 304/week @ 2024-06-04 780/week @ 2024-06-11 1021/week @ 2024-06-18 304/week @ 2024-06-25 573/week @ 2024-07-02 513/week @ 2024-07-09 603/week @ 2024-07-16 530/week @ 2024-07-23 470/week @ 2024-07-30

每月下载 2,207
用于 5 crates

MIT/Apache

170KB
3K SLoC


Logo

Stylus SDK

Arbitrum上的Rust合约 »

概述

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支持rustcwasm32-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