https://github.com/stellar/rs-soroban-env
Rust environment for Soroban contracts.
https://github.com/stellar/rs-soroban-env
Last synced: 5 months ago
JSON representation
Rust environment for Soroban contracts.
- Host: GitHub
- URL: https://github.com/stellar/rs-soroban-env
- Owner: stellar
- License: apache-2.0
- Created: 2022-04-26T03:10:13.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2026-01-14T00:54:14.000Z (6 months ago)
- Last Synced: 2026-01-14T04:40:13.784Z (6 months ago)
- Language: Rust
- Homepage:
- Size: 29.9 MB
- Stars: 74
- Watchers: 13
- Forks: 50
- Open Issues: 71
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# 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.