{"id":50486989,"url":"https://github.com/systemslibrarian/crypto-lab-gg20-wallet","last_synced_at":"2026-06-01T23:03:31.604Z","repository":{"id":350933904,"uuid":"1208832636","full_name":"systemslibrarian/crypto-lab-gg20-wallet","owner":"systemslibrarian","description":"Browser-based GG20 threshold ECDSA demo — Paillier encryption, distributed key generation, and joint signing without any party holding the full private key. The protocol behind Fireblocks and Coinbase MPC.","archived":false,"fork":false,"pushed_at":"2026-04-12T20:12:40.000Z","size":71,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-12T22:14:02.768Z","etag":null,"topics":["bitcoin","crypto-custody","crypto-lab","distributed-key-generation","ecdsa","ethereum","fireblocks","gg20","mpc","multiparty-computation","paillier","secp256k1","threshold-ecdsa","threshold-signatures","typescript"],"latest_commit_sha":null,"homepage":"https://systemslibrarian.github.io/crypto-lab-gg20-wallet/","language":"TypeScript","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/systemslibrarian.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-12T19:56:22.000Z","updated_at":"2026-04-12T22:03:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/systemslibrarian/crypto-lab-gg20-wallet","commit_stats":null,"previous_names":["systemslibrarian/crypto-lab-gg20-wallet"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/systemslibrarian/crypto-lab-gg20-wallet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-gg20-wallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-gg20-wallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-gg20-wallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-gg20-wallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/systemslibrarian","download_url":"https://codeload.github.com/systemslibrarian/crypto-lab-gg20-wallet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-gg20-wallet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33797128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bitcoin","crypto-custody","crypto-lab","distributed-key-generation","ecdsa","ethereum","fireblocks","gg20","mpc","multiparty-computation","paillier","secp256k1","threshold-ecdsa","threshold-signatures","typescript"],"created_at":"2026-06-01T23:03:29.594Z","updated_at":"2026-06-01T23:03:31.589Z","avatar_url":"https://github.com/systemslibrarian.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# crypto-lab-gg20-wallet\n\n## 1. What It Is\n\nGG20 Wallet demonstrates the GG20 threshold ECDSA protocol (Gennaro \u0026 Goldfeder, 2020) — the cryptographic foundation of institutional MPC custody used by Fireblocks, Coinbase MPC, and ZenGo. Threshold ECDSA allows t-of-n parties to jointly produce a standard ECDSA signature without any party ever holding the full private key. GG20 is significantly more complex than threshold Schnorr (FROST) because ECDSA's nonlinear nonce computation requires Paillier homomorphic encryption for joint computation. The protocol provides security against malicious adversaries with identifiable abort.\n\n## 2. When to Use It\n\n- ✅ Institutional crypto custody requiring no single point of key compromise\n- ✅ Signing on secp256k1 chains (Bitcoin, Ethereum) without key assembly\n- ✅ Consumer wallets with device + server 2-of-2 signing\n- ✅ Any ECDSA application requiring threshold signing without on-chain multisig\n- ❌ New protocols where Schnorr is available — use FROST instead (simpler, faster, no Paillier requirement)\n- ❌ Non-secp256k1 curves where ECDSA is not required\n- ❌ Applications where on-chain multisig is acceptable (simpler to implement, though reveals threshold policy)\n\n## 3. Live Demo\n\nLink: https://systemslibrarian.github.io/crypto-lab-gg20-wallet/\n\nSix exhibits: why ECDSA threshold is harder than Schnorr threshold, Paillier homomorphic encryption as the core MPC primitive, GG20 distributed key generation with commitment exchange, threshold signing protocol using Paillier for joint nonce computation, security analysis including range proofs and identifiable abort, and real-world deployments in Fireblocks, Coinbase MPC, ZenGo, and PayPal/Curv.\n\n## 4. How to Run Locally\n\n```bash\ngit clone https://github.com/systemslibrarian/crypto-lab-gg20-wallet\ncd crypto-lab-gg20-wallet\nnpm install\nnpm run dev\n```\n\n## 5. Part of the Crypto-Lab Suite\n\nPart of [crypto-lab](https://systemslibrarian.github.io/crypto-lab/) — browser-based cryptography demos spanning 2,500 years of cryptographic history to NIST FIPS 2024 post-quantum standards.\n\nSo whether you eat or drink or whatever you do, do it all for the glory of God. — 1 Corinthians 10:31","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemslibrarian%2Fcrypto-lab-gg20-wallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsystemslibrarian%2Fcrypto-lab-gg20-wallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemslibrarian%2Fcrypto-lab-gg20-wallet/lists"}