An open API service indexing awesome lists of open source software.

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.

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.