Skip to content

stellar/rs-soroban-env

rs-soroban-env

Rust contract-environment interface and (optional) host implementation for Soroban.

The soroban-env-common crate contains elements of the shared environment-interface between smart contract guest and host: the Env trait that defines the set of available environment functions as well as the Val type that can pass back and forth through the Wasm calling convention. Additionally small wrappers around subtypes of Val are included: Object, Symbol, Error, etc.

The soroban-env-guest crate contains the guest-side stub implementation of the environment interface called Guest dependent on extern fns provided by the host implementation. This can be used in a Wasm runtime that provides the extern fns.

The soroban-env-host crate contains the host-side full implementation of the environment interface called Host. This can be used either in the real blockchain host, or for local testing in the SDK. It also contains the shared implementation for Soroban fee compution (fees.rs) and a library for 'end-to-end' invocation of contracts menat to be used for applying transactions on-chain (e2e_invoke.rs).

The soroban-simulation crate contains the utilities for simulating the Soroban transactions 'end-to-end': given an invocation specification and provided with on-chain storage access, this allows users to record all the information necessary for submitting the transaction on-chain, such as the storage access footprint, necessary resources, recorded authorization payloads that need to be signed etc.

The soroban-builtin-sdk-macros and soroban-env-macros are crates dedicated to macros used internally by soroban-env-host. The former imitates the contract function and type definitions used by generated by rs-soroban-sdk, and the latter contains misc internal macros.

The soroban-bench-utils crate contains the utilties for running the benchmarks using for calibration of the Soroban execution costs via benchmarks.

The soroban-synth-wasm and soroban-test-wasms are crates used for tests that use smart contract. The former synthesizes simple parametric Wasms, and the latter contains various pre-compiled smart contract contracts used by tests.