Sigma Rust
Rust implementation of ErgoScript (sigmastate-interpreter) cryptocurrency scripting language.
Crates
- ergo-lib – Overarching crate exposing wallet-related features: chain types (transactions, boxes, etc.), JSON serialization, box selection for tx inputs, tx builder and signing. Exports other crates API, probably the only crate you'd need to import. [Crates.io] [Docs]
- ergotree-interpreter – ErgoTree interpreter [Crates.io] [Docs]
- ergotree-ir – ErgoTree IR and serialization. [Crates.io] [Docs]
- ergoscript-compiler – ErgoScript compiler. [Crates.io] [Docs]
- sigma-ser – Ergo binary serialization primitives. [Crates.io] [Docs]
Bindings
- Wasm: ergo-lib-wasm [Crates.io] [Docs]
- JavaScript / TypeScript: ergo-lib-wasm-browser (browser), ergo-lib-wasm-nodejs (Node.js)
- Swift (iOS): ergo-lib-ios
- Java / JVM: ergo-lib-jni [Crates.io] [Docs]
- C: ergo-lib-c [Crates.io] [Docs]
- Go: ergo-lib-go [Go Reference] (Community maintained)
- Ruby: sigma_rb [Gem] (Community maintained)
- Python: ergo-lib-python [PyPI] [Docs] (Uses ergo-lib crate docs) | ergo-lib-python docs
Usage Examples
To get better understanding on how to use it in your project check out how its being used in the following projects:
Rust:
- Oracle Core
- Ergo Headless dApp Framework
- Ergo Node Interface Library
- Spectrum Off-Chain Services for Ergo
- AgeUSD Stablecoin Protocol
- ErgoNames SDKs
- Ergo SDK (Wasm bindings)
- Yoroi wallet (Wasm bindings)
- Ergo Desktop Wallet (Wasm bindings)
Also take a look at tests in the sigma-rust repo where various usage scenarios were implemented.