{"id":13531858,"url":"https://github.com/dalek-cryptography/merlin","last_synced_at":"2025-06-10T17:39:34.841Z","repository":{"id":44930938,"uuid":"143331196","full_name":"dalek-cryptography/merlin","owner":"dalek-cryptography","description":"Composable proof transcripts for public-coin arguments of knowledge","archived":false,"fork":false,"pushed_at":"2023-03-09T22:43:11.000Z","size":96,"stargazers_count":128,"open_issues_count":7,"forks_count":74,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-08T23:51:25.888Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dalek-cryptography.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-08-02T18:27:32.000Z","updated_at":"2025-06-02T01:02:44.000Z","dependencies_parsed_at":"2024-01-13T23:18:08.578Z","dependency_job_id":"ff6e63fb-f695-4077-b0ec-4473dc19cd98","html_url":"https://github.com/dalek-cryptography/merlin","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dalek-cryptography%2Fmerlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dalek-cryptography%2Fmerlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dalek-cryptography%2Fmerlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dalek-cryptography%2Fmerlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dalek-cryptography","download_url":"https://codeload.github.com/dalek-cryptography/merlin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dalek-cryptography%2Fmerlin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259118827,"owners_count":22808063,"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-01T07:01:06.323Z","updated_at":"2025-06-10T17:39:34.798Z","avatar_url":"https://github.com/dalek-cryptography.png","language":"Rust","funding_links":[],"categories":["Cryptography"],"sub_categories":["Zero Knowledge Proofs"],"readme":"\u003cimg\n width=\"33%\"\n align=\"right\"\n src=\"https://merlin.cool/merlin.png\"/\u003e\n \n## Merlin: composable proof transcripts for public-coin arguments of knowledge\n\n[Merlin][merlin_cool] is a [STROBE][strobe]-based transcript\nconstruction for zero-knowledge proofs. It automates the Fiat-Shamir\ntransform, so that by using Merlin, non-interactive protocols can be\nimplemented as if they were interactive.\n\nThis is significantly easier and less error-prone than performing the\ntransformation by hand, and in addition, it also provides natural\nsupport for:\n\n* multi-round protocols with alternating commit and challenge phases;\n\n* natural domain separation, ensuring challenges are bound to the\n  statements to be proved;\n\n* automatic message framing, preventing ambiguous encoding of\n  commitment data;\n\n* and protocol composition, by using a common transcript for multiple\n  protocols.\n\nFinally, Merlin also provides a transcript-based random number\ngenerator as defense-in-depth against bad-entropy attacks (such as\nnonce reuse, or bias over many proofs). This RNG provides synthetic\nrandomness derived from the entire public transcript, as well as the\nprover's witness data, and an auxiliary input from an external RNG.\n\nMore details on the design of Merlin and how to use it for proof\nsystems can be found on the [Merlin website][merlin_cool].\n\n## Features\n\nThe `nightly` feature is passed to `clear_on_drop`; it may be replaced\nwith a no-op in the future (since `clear_on_drop` is an implementation\ndetail).\n\nThe `debug-transcript` feature prints an annotated proof transcript to\n`stdout`; it is only suitable for development and testing purposes,\nshould not be used in released crates, and should not be considered stable.\n\nAn example of an annotated transcript for a Bulletproof rangeproof can\nbe [found here][bp_transcript].\n\n## About\n\nMerlin is authored by Henry de Valence, with design input from Isis\nLovecruft and Oleg Andreev.  The construction grew out of work with Oleg\nAndreev and Cathie Yun on a [Bulletproofs implementation][bp].\nThanks also to Trevor Perrin and Mike\nHamburg for helpful discussions.  Merlin is named in reference to\n[Arthur-Merlin protocols][am_wiki] which introduced the notion of\npublic coin arguments.\n\nThe header image was created by Oleg Andreev as a composite of Arthur Pyle's\n[The Enchanter Merlin][merlin_pyle] and the Keccak Team's [θ-step\ndiagram][keccak_theta].\n\nThis project is licensed under the MIT license.\n\n[merlin_cool]: https://merlin.cool\n[bp]: https://doc.dalek.rs/bulletproofs/\n[strobe]: https://strobe.sourceforge.io/\n[am_wiki]: https://en.wikipedia.org/wiki/Arthur%E2%80%93Merlin_protocol\n[merlin_pyle]: https://commons.wikimedia.org/wiki/File:Arthur-Pyle_The_Enchanter_Merlin.JPG\n[keccak_theta]: https://keccak.team/figures.html\n[bp_transcript]: https://gist.github.com/hdevalence/9db3997cc275597eeae1ec2461b8e2a1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalek-cryptography%2Fmerlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdalek-cryptography%2Fmerlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalek-cryptography%2Fmerlin/lists"}