{"id":18023164,"url":"https://github.com/rustyconover/muid-zero-knowledge-proof","last_synced_at":"2026-01-31T02:02:29.921Z","repository":{"id":146625062,"uuid":"284572336","full_name":"rustyconover/muid-zero-knowledge-proof","owner":"rustyconover","description":"Zero Knowledge Proof of Memorable Unique Identifiers (Muid)","archived":false,"fork":false,"pushed_at":"2020-08-03T01:49:26.000Z","size":28,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-25T23:33:00.197Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustyconover.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2020-08-03T01:09:52.000Z","updated_at":"2021-11-25T15:53:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"6eb784d9-7082-4c28-84a8-fd4f3c0cad10","html_url":"https://github.com/rustyconover/muid-zero-knowledge-proof","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rustyconover/muid-zero-knowledge-proof","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyconover%2Fmuid-zero-knowledge-proof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyconover%2Fmuid-zero-knowledge-proof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyconover%2Fmuid-zero-knowledge-proof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyconover%2Fmuid-zero-knowledge-proof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustyconover","download_url":"https://codeload.github.com/rustyconover/muid-zero-knowledge-proof/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyconover%2Fmuid-zero-knowledge-proof/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28926630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"online","status_checked_at":"2026-01-31T02:00:09.179Z","response_time":128,"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":[],"created_at":"2024-10-30T07:07:37.653Z","updated_at":"2026-01-31T02:02:29.906Z","avatar_url":"https://github.com/rustyconover.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# muid-zero-knowledge-proof\nZero Knowledge Proof of Memorable Unique Identifiers (Muid)\n\nIt is useful to be able to prove that you own a [Memorable Unique Identifier](https://www.microprediction.org/muids.html) without revealing the private key associated with it.\n\nThis will be useful for facilitating payments based on performance or allowing logins to a website using the Muid as your identity.\n\nThis repo uses [snarkjs](https://github.com/iden3/snarkjs) and [circon](https://github.com/iden3/circom) to construct a zero-knowledge proof that verifies that the creator has a 16 byte value that produces a specified public key prefix.\n\nMore formally it shows:\n\n`substr(Sha256(hex(private_key)), Length) === X`\n\nWhere \n\n* `private_key` is the private key of the Muid owner which is 16 bytes.  An example is: `3f06e5b0d027fb4e33a5207dd112892e` which is the hex encoded key for the Muid with the public name of \"Homeless Flea\".\n* `Length` is the length or difficulty of the Muid key.  Typically this is \u003e6.\n* `X` is the public prefix of the key. This will typically be the friendly name of the Muid.  An example is `603e1e55f1ea0ded22e4b4ce7f532f44` which when converted to a Muid is \"Homeless Flea\".\n\nSee the circuit implementation in [circuit.circom](circuit.circom) for all of the details.\n\n## Usage\n\n0. Clone this repo with submodules enabled.  \n  \n```\ngit clone --recurse-submodules git@github.com:rustyconover/muid-zero-knowledge-proof.git\n```\n\n1. First install circom and snarkjs\n\n```\nnpm install -g circom snarkjs\n```\n\n2. Run `make proof`\n\nThis may take a while as it generates a new circuit.  Typically new circuits wouldn't be made all of the time, just the inputs to the circuit would change.  Currently there is a different circuit for each key length.\n\n## Caveats\n\n1. Right now the Makefile just fakes some entropy into the Powers of Tau init steps, this is just for development purposes.  If these proofs are going to be used for real, actual entropy should be provided.\n\n## Sizes\n\nThe sizes don't seem unreasonable for online use.  Here is an example proof for a Muid with a length of 12.\n\n```\n-rw-r--r--  1 rusty  staff       786 Aug  2 21:08 proof.json\n-rw-r--r--  1 rusty  staff        95 Aug  2 21:08 public.json\n-rw-r--r--  1 rusty  staff      4935 Aug  2 21:08 verification_key.json\n-rw-r--r--  1 rusty  staff  12868364 Aug  2 21:07 circuit.r1cs\n-rw-r--r--  1 rusty  staff  14589134 Aug  2 21:07 circuit.sym\n-rw-r--r--  1 rusty  staff    466316 Aug  2 21:07 circuit.wasm\n-rw-r--r--  1 rusty  staff  22713952 Aug  2 21:08 circuit_final.zkey\n```\n\n## Future Uses\n\n1. Allow identities to be asserted for Memorable Unique Identifiers via the web which will open the door to payments and personalized leaderboards.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustyconover%2Fmuid-zero-knowledge-proof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustyconover%2Fmuid-zero-knowledge-proof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustyconover%2Fmuid-zero-knowledge-proof/lists"}