Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nymtech/sphinx
A Sphinx implementation in Rust
https://github.com/nymtech/sphinx
Last synced: 1 day ago
JSON representation
A Sphinx implementation in Rust
- Host: GitHub
- URL: https://github.com/nymtech/sphinx
- Owner: nymtech
- License: apache-2.0
- Created: 2019-11-01T10:24:40.000Z (about 5 years ago)
- Default Branch: develop
- Last Pushed: 2024-05-21T13:53:46.000Z (6 months ago)
- Last Synced: 2024-11-04T20:42:24.923Z (4 days ago)
- Language: Rust
- Size: 667 KB
- Stars: 272
- Watchers: 13
- Forks: 23
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ccamel - nymtech/sphinx - A Sphinx implementation in Rust (Rust)
README
## Sphinx
A [Sphinx](https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf) packet implementation in Rust.
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge)](https://opensource.org/licenses/Apache-2.0)
[![Build Status](https://img.shields.io/github/actions/workflow/status/nymtech/sphinx/build.yml?branch=develop&style=for-the-badge&logo=github-actions)](https://github.com/nymtech/sphinx/actions?query=branch%3Adevelop)
[![codecov](https://img.shields.io/codecov/c/github/nymtech/sphinx?style=for-the-badge&logo=codecov)](https://codecov.io/gh/nymtech/sphinx)### Prerequisites
* rust (stable) : https://www.rust-lang.org/
* docker (for code coverage reports): https://www.docker.com/### Testing
`cargo test` will run the unit and integration tests.
### Code coverage reporting
If you want to find out how you're doing in terms of code coverage, [install docker](https://www.docker.com) and then run the code coverage shell script at `./scripts/coverage_report.sh`. Docker will download all the dependencies (get a coffee!), and output an HTML code coverage report at `coverage/tarpaulin-report.html`. Open the generated file in your browser to check coverage.
Unit + integration test coverage is currently well above 90%, please ensure that any pull requests maintain good test coverage.
### Benchmarks
To run benchmarks, use:
```
cargo bench
```Rust benchmarks run the operation multiple times to give a consistent output and report back in the number of nanoseconds (billionths of a second) per iteration. `1000000000 / result` gives you the number of operations per second.
For later reference, on Dave's i7 Dell XPS-13 (2018) laptop (our test reference machine :)) output is as follows.
```
test tests::bench_new ... bench: 386.348 us/iter
test tests::bench_process ... bench: 157.322 us/iter
```* `1000000 / 386.348` = ~2588 packet creations per second
* `1000000 / 157.322` = ~6356 packet unwrappings per second