https://github.com/thedlop/sigma_rb
Ruby bindings for https://github.com/ergoplatform/sigma-rust
https://github.com/thedlop/sigma_rb
Last synced: 6 months ago
JSON representation
Ruby bindings for https://github.com/ergoplatform/sigma-rust
- Host: GitHub
- URL: https://github.com/thedlop/sigma_rb
- Owner: thedlop
- License: mit
- Created: 2022-04-20T23:14:48.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-07-19T14:12:59.000Z (over 3 years ago)
- Last Synced: 2025-03-21T22:17:03.787Z (8 months ago)
- Language: Ruby
- Size: 5.13 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ergo - sigma_rb - rust` via the C interface. [`Ruby`, `C`, `Rust`] *(Community, ErgoHack)* (📚 SDKs & Libraries <a id="sdks--libraries"></a> / 🤝 Community SDKs/Libraries <a id="community-sdkslibraries"></a>)
README
# sigma_rb
Ruby wrapper around C bindings for ErgoLib from [Sigma-Rust](https://github.com/ergoplatform/sigma-rust)
# Installation
This project wraps the C bindings of Sigma-Rust and so they are required for using this gem. As the Sigma-Rust API changes over time, gem versions are tied to specific Sigma-Rust versions.
| Sigma_rb Version | Sigma-Rust Version |
| ---------------- | -------------------|
| 0.2.0 | 0.18.0 |
| 0.1.3 - 0.1.5 | 0.16.0 |
## Build ErgoLib Dependencies
Checkout the supported Sigma-Rust version on the [releases](https://github.com/ergoplatform/sigma-rust/releases) page .
### Build the ergo-lib-c bindings
I will provide instructions below but it may be worth reading over the [directions in Sigma-Rust too](https://github.com/ergoplatform/sigma-rust/tree/develop/bindings/ergo-lib-c)
Sigma-Rust uses Rust to generate these C bindings and so you will need Rust. I recommend downloading the nightly version of Rust as you will need nightly Rust for the next step.
After checking out the proper Sigma-Rust and starting at it's root directory:
```
cd bindings/ergo-lib-c
cargo build --release -p ergo-lib-c
```
This will build a release version of `libergo.a` located at `target/release/libergo.a` from the root directory. You will need to copy/move this to a C LIBRARY search path on your system. For my system I can use `/usr/local/lib` . This usually depends on OS.
```
sudo cp ../../target/release/libergo.a /usr/local/lib/
```
### Build ergo-lib-c header file
While still in the `bindings/ergo-lib_c` directory you can generate the header file with:
```
cbindgen --config cbindgen.toml --crate ergo-lib-c --output h/ergo_lib.h
```
You will need to copy/move this header to a C INCLUDE search path. On my system I can use `/usr/local/include` .
```
sudo cp h/ergo_lib.h /usr/local/include/
```
## Add to Gemfile
Once you have `libergo.a` and `ergo_lib.h` downloaded and placed in locations your C compiler can find you should be able to to install the gem.
In Gemfile
```
gem 'sigma_rb', '0.1.3'
```
Run bundle to install
```
bundle
```
After a successful install you can use it by requiring `sigma`
```
require 'sigma'
puts Sigma::BoxValue.units_per_ergo
```
# Examples
Check out `tests/sigma` for usage examples. The transaction tests are probably the most involved, located at [tests/sigma/transaction_test.rb](https://github.com/thedlop/sigma_rb/blob/master/tests/sigma/transaction_test.rb).
# Documentation
Generated documentation can be viewed on [RubyDoc](https://www.rubydoc.info/gems/sigma_rb).
# Thank You
Thank you to the Ergo Development community for consistent words of encouragement. Big thanks to Sigma-Rust maintainers for providing the C bindings which made this possible. Thank you to the iOS bindings developers as it was a constant reference for this work.