{"id":13566325,"url":"https://github.com/nymtech/sphinx","last_synced_at":"2025-05-14T15:06:55.749Z","repository":{"id":37337142,"uuid":"218963871","full_name":"nymtech/sphinx","owner":"nymtech","description":"A Sphinx implementation in Rust","archived":false,"fork":false,"pushed_at":"2025-04-09T08:31:32.000Z","size":801,"stargazers_count":276,"open_issues_count":13,"forks_count":24,"subscribers_count":12,"default_branch":"develop","last_synced_at":"2025-04-13T10:51:40.297Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nymtech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-11-01T10:24:40.000Z","updated_at":"2025-04-09T08:31:35.000Z","dependencies_parsed_at":"2023-11-14T16:40:27.502Z","dependency_job_id":"d95a8bdb-2440-49a1-afee-faa7c773c327","html_url":"https://github.com/nymtech/sphinx","commit_stats":{"total_commits":373,"total_committers":7,"mean_commits":"53.285714285714285","dds":"0.42895442359249325","last_synced_commit":"ca107d94360cdf8bbfbdb12fe5320ed74f80e40c"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fsphinx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fsphinx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fsphinx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nymtech%2Fsphinx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nymtech","download_url":"https://codeload.github.com/nymtech/sphinx/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254169328,"owners_count":22026211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:02:07.219Z","updated_at":"2025-05-14T15:06:55.692Z","avatar_url":"https://github.com/nymtech.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"## Sphinx\n\nA [Sphinx](https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf) packet implementation in Rust.\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge)](https://opensource.org/licenses/Apache-2.0)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/nymtech/sphinx/build.yml?branch=develop\u0026style=for-the-badge\u0026logo=github-actions)](https://github.com/nymtech/sphinx/actions?query=branch%3Adevelop)\n\n### Prerequisites\n\n* rust (stable) : https://www.rust-lang.org/\n* docker (for code coverage reports): https://www.docker.com/\n\n### Testing\n\n`cargo test` will run the unit and integration tests.\n\n### Versioning\n\nWhilst this crate hasn't been strictly following the semver versioning conventions, the following changes have been\nmade:\n\n#### v0.1.0\n\ninitial release\n\n#### v0.1.1\n\nupdates crypto dependencies, including dalek libraries\n\n#### v0.2.0\n\nfixes uses of undefined scalar multiplications and transitions to using pure x25519 instead\n\n#### v0.3.0\n\nallows using the library with either the v0.2.0 or v0.1.1 crypto (for backwards compatibility reasons). it also changes\nthe public API to expose version information which has further been reinterpreted to no longer map to the semver version\nof this library\n\n#### v0.3.1\n\nadded additional public methods on the `Version`\n\n#### v0.3.2\n\nadded version method to allow constructing SURBs with legacy headers\n\n#### v0.4.0\n\nremoved processing and creation of packets with undefined operations\n\n#### v0.5.0\n\n- temporarily restored processing and creation of packets with undefined operations as additional breaking changes had\n  to be added to v0.3.2 release\n- removed `RoutingKeys` in favour of `ExpandedSharedSecret` and added `ReplyTag`\n- type adjustments\n\n#### v0.6.0\n\n- new way of deriving `PayloadKey` that uses seed obtained from the `ExpandedSharedSecret` to reduce sizes of `SURB`s\n- API changes\n\n### Benchmarks\n\nTo run benchmarks, use:\n\n```\ncargo bench\n```\n\nRust benchmarks run the operation multiple times to give a consistent output and report back in the number of\nnanoseconds (billionths of a second) per iteration. `1000000000 / result` gives you the number of operations per second.\n\nFor later reference, on Dave's i7 Dell XPS-13 (2018) laptop (our test reference machine :)) output is as follows.\n\n```\ntest tests::bench_new     ... bench:     386.348 us/iter\ntest tests::bench_process ... bench:     157.322 us/iter\n```\n\n* `1000000 / 386.348` = ~2588 packet creations per second\n* `1000000 / 157.322` = ~6356 packet unwrappings per second\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnymtech%2Fsphinx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnymtech%2Fsphinx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnymtech%2Fsphinx/lists"}