{"id":13531636,"url":"https://github.com/ZenGo-X/multi-party-schnorr","last_synced_at":"2025-04-01T19:32:30.070Z","repository":{"id":51098606,"uuid":"140167998","full_name":"ZenGo-X/multi-party-schnorr","owner":"ZenGo-X","description":"Rust implementation of multi-party Schnorr signatures over elliptic curves.","archived":false,"fork":false,"pushed_at":"2021-05-24T06:58:31.000Z","size":2569,"stargazers_count":166,"open_issues_count":15,"forks_count":41,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-05-21T13:54:11.437Z","etag":null,"topics":["blockchain","cryptocurrency","cryptography","rust","schnorr","schnorr-signatures","secret-shares"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZenGo-X.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-08T12:59:40.000Z","updated_at":"2024-05-21T07:37:37.000Z","dependencies_parsed_at":"2022-09-01T16:03:42.945Z","dependency_job_id":null,"html_url":"https://github.com/ZenGo-X/multi-party-schnorr","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenGo-X%2Fmulti-party-schnorr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenGo-X%2Fmulti-party-schnorr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenGo-X%2Fmulti-party-schnorr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenGo-X%2Fmulti-party-schnorr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZenGo-X","download_url":"https://codeload.github.com/ZenGo-X/multi-party-schnorr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246700713,"owners_count":20819923,"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":["blockchain","cryptocurrency","cryptography","rust","schnorr","schnorr-signatures","secret-shares"],"created_at":"2024-08-01T07:01:04.510Z","updated_at":"2025-04-01T19:32:26.861Z","avatar_url":"https://github.com/ZenGo-X.png","language":"Rust","funding_links":[],"categories":["Cryptography","Rust"],"sub_categories":["Digital Signature"],"readme":"[![Build Status](https://travis-ci.com/ZenGo-X/multi-party-schnorr.svg?branch=master)](https://travis-ci.com/zengo-x/multi-party-schnorr)\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nMulti Party Schnorr Signatures\n=====================================\nThis library contains several Rust implementations of multi-signature Schnorr schemes. \nGenerally speaking, these schemes can be classified into: \n1. {n,n}-multi-signature scheme. These schemes require that all parties engage in cooperation to issue the signature. \n2. {t,n}-threshold-signature schemes (TSS). These schemes require that any subset of at least t+1 parties engage in cooperation to issue a valid signature.\n\n## Different protocol implementation\nThis repo implements different Schnorr multi-signature schemes. There is tradoffs between these schemes with respect to type, performance, communications rounds and security assumptions. \nWe use abbreviations DLP, ROM, ASM for respectively, discrete log problem, random oracle model, algebraic group model. \n\n| protocol | Type | Rounds | Assumptions | comments | \n| ----------| --------|-------|----------| --- |\n| Boneh, et al.(MuSig) [2] (section 5)|  {n,n} | 3 | DLP, ROM | fixes the security proof of [1]  \n| Nick, et al.(MuSig2) [3] |  {n,n} | 2 | DLP, ROM, AGM  | improvement on [2]  \n| Micali, et al. [4] |  {n,n} | 3 | DLP, ROM | \n| Stinson-Strobl [5] |  {t,n} | 3 | DLP, ROM |  See (*)\n\n\n(*)  For more efficient implementation we used the DKG from [Fast Multiparty Threshold ECDSA with Fast Trustless Setup](http://stevengoldfeder.com/papers/GG18.pdf). The cost is robustness: if there is a malicious party out of the n parties in DKG the protocol stops and if there is a malicious party out of the t parties used for signing the signature protocol will stop\n\n\n\n**Disclaimers**: \n\n(1) This code should not be used for production at the moment.\n\n(2) This code is not secure against side-channel attacks\n\n(3) The code does not contain a network layer (if you are interested, check [white-city](https://github.com/KZen-networks/white-city) for ongoing effort, contribtutions are welcome)\n\n\u003c!---\nGet Started\n=====================================\n[schnorr_bip_test_vector_2](https://github.com/KZen-networks/multi-party-schnorr/blob/master/src/protocols/aggsig/test.rs#L137)\n\n[schnorr_two_party_signing](https://github.com/KZen-networks/multi-party-schnorr/blob/master/src/protocols/aggsig/test.rs#L26)\n\n[threshold 3 out of 5 with 4 parties in signing](https://github.com/KZen-networks/multi-party-schnorr/blob/master/src/protocols/thresholdsig/test.rs#L61)\n---\u003e\n\n\n\nContact\n-------------------\nFeel free to [reach out](mailto:github@kzencorp.com) or join the ZenGo X [Telegram](https://t.me/joinchat/ET1mddGXRoyCxZ-7) for discussions on code and research.\n\nLicense\n-------\nThe library is released under the terms of the GPL-3.0 license. See [LICENSE](LICENSE) for more information.\n\n## References\n\n[1] \u003chttps://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/simple_schnorr_multi_signatures_with_applications_to_bitcoin.pdf\u003e\n\n[2] \u003chttps://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/compact_multi_signatures_for_smaller_blockchains.pdf\u003e\n\n[3] \u003chttps://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/musig2_simple_two_round_schnorr_multi_signatures.pdf\u003e\n\n[4] \u003chttps://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/accountable_subgroups_multisignatures.pdf\u003e\n\n[5] \u003chttps://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/provably_secure_distributed_schnorr_signatures_and_a_threshold_scheme.pdf\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZenGo-X%2Fmulti-party-schnorr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZenGo-X%2Fmulti-party-schnorr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZenGo-X%2Fmulti-party-schnorr/lists"}