#val #environment #env #object #host #interface #contract

无std soroban-env-common

Soroban合约环境通用类型和功能

17个稳定版本

21.2.1 2024年8月20日
21.2.0 2024年7月16日
21.1.2 2024年6月24日
20.3.0 2024年3月15日
0.0.3 2022年7月29日

#276 in 神奇豆子

Download history 2669/week @ 2024-05-03 2889/week @ 2024-05-10 1788/week @ 2024-05-17 1818/week @ 2024-05-24 2547/week @ 2024-05-31 2731/week @ 2024-06-07 3320/week @ 2024-06-14 2611/week @ 2024-06-21 1656/week @ 2024-06-28 1659/week @ 2024-07-05 3963/week @ 2024-07-12 2231/week @ 2024-07-19 3412/week @ 2024-07-26 3019/week @ 2024-08-02 1756/week @ 2024-08-09 2328/week @ 2024-08-16

10,884 每月下载量
用于 56 个crate(4个直接使用)

Apache-2.0

195KB
4K SLoC

rs-soroban-env

Rust合约环境接口和(可选)Soroban主机实现。

soroban-env-commoncrate包含智能合约客户端和主机之间共享环境接口的元素:定义可用环境函数的Envtrait以及可以通过WASM调用约定传递的Val类型。此外,还包括对Val子类型的轻量级包装:ObjectSymbolError等。

soroban-env-guestcrate包含环境接口的客户端存根实现,称为Guest,它依赖于主机实现提供的extern fn。这可以在提供extern fn的WASM运行时中使用。

soroban-env-hostcrate包含环境接口的主机端完整实现,称为Host。这可以在实际的区块链主机中使用,或者在SDK中本地测试。


lib.rs:

环境通用crate包含三组类型

  • Val类型,一种64位值类型,是几种不同类型(数字、布尔值、符号、对象引用)的联合,通过精心位打包进行编码。
  • 包含[Val]的特定、已知联合状态的包装类型([Object],[Symbol],[Error])。这些也是64位值,但提供针对联合状态特定的方法(例如,[Symbol]将与Rust字符串类型进行互转)。
  • 描述客户端代码和主机代码之间接口的[Env]特质。换句话说,Env描述了一组必须在合同主机中实现并由客户端(或SDK)调用的主机函数。[Env]特质上的方法只能传递64位值,通常是[Val]或包装类型之一。

该包还包含在[Val]类型和XDR类型之间进行互转的函数,并重新导出[xdr]模块下的[stellar_xdr]中的XDR定义。

依赖项

~6–32MB
~507K SLoC