{"id":19798159,"url":"https://github.com/mutinywallet/vss-rs","last_synced_at":"2025-05-01T04:30:23.191Z","repository":{"id":196944981,"uuid":"693373884","full_name":"MutinyWallet/vss-rs","owner":"MutinyWallet","description":"Rust implementation of a VSS Server","archived":false,"fork":false,"pushed_at":"2024-06-14T14:46:41.000Z","size":101,"stargazers_count":6,"open_issues_count":3,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-06T08:27:20.390Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MutinyWallet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-09-18T22:51:41.000Z","updated_at":"2024-08-29T18:12:45.000Z","dependencies_parsed_at":"2024-06-14T16:24:05.003Z","dependency_job_id":null,"html_url":"https://github.com/MutinyWallet/vss-rs","commit_stats":null,"previous_names":["mutinywallet/vss-rs"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MutinyWallet%2Fvss-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MutinyWallet%2Fvss-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MutinyWallet%2Fvss-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MutinyWallet%2Fvss-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MutinyWallet","download_url":"https://codeload.github.com/MutinyWallet/vss-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251823988,"owners_count":21649781,"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-11-12T07:28:18.889Z","updated_at":"2025-05-01T04:30:22.898Z","avatar_url":"https://github.com/MutinyWallet.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vss-rs\n\nA rust implementation of a VSS server. Based on [LDK's `vss-server` reference implementation](https://github.com/lightningdevkit/vss-server). See the [API Contract](https://github.com/lightningdevkit/vss-server/blob/main/app/src/main/proto/vss.proto).\n\n## Usage\n\nYou need a postgres database and an authentication key. These can be set in the environment variables `DATABASE_URL`\nand `AUTH_KEY` respectively. These can be set in a `.env` file in the root of the project. If you do not have an\nauthentication key, leave this unset and the server will skip authentication.\n\nTo run the server, run `cargo run --release` in the root of the project.\n\n## Configuration\n\nvss-rs is configured via environment variables, which may be set in an `.env` file in the working directory, or injected dynamically (command-line prefix, container orchestration, etc.) See `.env.sample`.\n\n - `DATABASE_URL`: a postgres connection string of the format `postgres://u:p@host[:port]/dbname`\n - `VSS_PORT`: (optional; default 8080) host port to bind\n - `AUTH_KEY`: (optional; default none) hex-encoded ES256K public key\n - `SELF_HOST`: (optional; default false)\n - `ADMIN_KEY`: (optional; default none) key to use as bearer token to trigger admin actions like migration\n\n## Database\n\nScheme migrations can be run manually via `diesel-cli`, or automatically on startup when `SELF_HOST` is true.\n\nThey can also be triggered _ad hoc_ by passing a bearer token corresponding to `ADMIN_KEY` to the `/migrations` endpoint.\n\n## CORS\n\nCORS headers are supplied with responses, and Origin headers are validated against the list when handling requests. This behavior is disabled when `SELF_HOST` is true.\n\nIf you intend to host this in a public-facing way (_i.e._, not just on `localhost`), you'll need to add your domain to the `ALLOWED_ORIGINS` in `main.rs`.\n\n## Authentication\n\nIn production usage, the VSS clients (lightning wallets) should authenticate with a [JSON Web Token(JWT)](https://datatracker.ietf.org/doc/html/rfc7519) issued by an identity provider (not included in VSS-RS). \n\n### Authentication Key\n\nThe authentication key, set with `AUTH_KEY`, is a hex-encoded ECDSA _public_ key on the p256k1 curve and is used to validate the signature on a client-supplied JWT. The VSS client may have obtained the JWT from any issuing party as long as you set the appropriate public key here. The JWT should have set the `alg` parameter to `ES256K`. This is uncommon and should not be confused with `ES256`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmutinywallet%2Fvss-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmutinywallet%2Fvss-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmutinywallet%2Fvss-rs/lists"}