{"id":13497893,"url":"https://github.com/lorenzb/proveth","last_synced_at":"2025-12-30T00:43:47.258Z","repository":{"id":37732958,"uuid":"142331737","full_name":"lorenzb/proveth","owner":"lorenzb","description":"Generate \u0026 verify Merkle-Patricia-proofs for Ethereum","archived":false,"fork":false,"pushed_at":"2022-12-08T04:50:03.000Z","size":207,"stargazers_count":106,"open_issues_count":10,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-31T14:36:44.659Z","etag":null,"topics":["ethereum","python","smartcontracts","solidity"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lorenzb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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-25T17:21:37.000Z","updated_at":"2024-06-18T11:41:42.000Z","dependencies_parsed_at":"2023-01-24T16:00:11.348Z","dependency_job_id":null,"html_url":"https://github.com/lorenzb/proveth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lorenzb%2Fproveth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lorenzb%2Fproveth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lorenzb%2Fproveth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lorenzb%2Fproveth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lorenzb","download_url":"https://codeload.github.com/lorenzb/proveth/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246110289,"owners_count":20725028,"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":["ethereum","python","smartcontracts","solidity"],"created_at":"2024-07-31T20:00:44.043Z","updated_at":"2025-12-30T00:43:47.233Z","avatar_url":"https://github.com/lorenzb.png","language":"Python","funding_links":[],"categories":["Specific statements"],"sub_categories":["Polynomial and vector commitments"],"readme":"# Proveth\n\n[![Build Status](https://travis-ci.org/lorenzb/proveth.svg?branch=master)](https://travis-ci.org/lorenzb/proveth)\n![Python \u003e= 3.6](https://img.shields.io/badge/python-%3E%3D%203.6-blue.svg)\n![Solidity \u003e= 0.5.0](https://img.shields.io/badge/solidity-%3E%3D%200.5.0-blue.svg)\n\nEthereum's design [makes heavy use](https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/) of [Merkle trees](https://en.wikipedia.org/wiki/Merkle_tree) enabling *light clients* to interact with the blockchain without having to download full blocks or its complete state.\n\nEthereum uses its own variant of Merkle trees, called [Merkle Patricia Tries](https://github.com/ethereum/wiki/wiki/Patricia-Tree), which provide a [dictionary](https://en.wikipedia.org/wiki/Associative_array)-like interface and enable the generation and verification of small proofs (logarithmic in the number of items in the dictionary) that a given key-value-pair is present/absent from the dictionary. Ethereum uses Merkle Patricia Tries to store transactions, transactions receipts, and the *state* (all accounts with their balances, code, and storage).\n\n(If you want to learn more about Merkle Patricia Tries, check out the links above and have a look at this [cool visualisation](https://beta.observablehq.com/@cdetrio/ethereum-txtrie-merkle-patricia-trie-viz) Casey built.)\n\n## Project goals\n\nProveth aims to provide\n- a [clearly specified format for these proofs](specification.md);\n- a high-quality off-chain proof generator that can connect to an Ethereum node and generate such proofs;\n- a high-quality on-chain proof verifier (smart contract) that can verify a proof that a given transaction/state item/... is indeed part of the Ethereum blockchain.\n\n## Project state\n\nProveth is under active development. We currently support generating and verifying proofs of transaction inclusion/exclusion, i.e. proofs of statements of the form \"the transaction `tx` was present/absent at index `i` in the block with blockhash `h`\".\n\nWe aim to extend this to:\n- proofs of transaction receipt inclusion/exclusion\n- proofs about the Ethereum state\n\n## Contributing\n\nWe welcome contributions. Have a look at any open issues, add more tests/documentation or come up with your own improvements. Before starting work on a large PR, we suggest opening an issue to discuss your approach with the maintainers.\n\nWe ❤️ tests \u0026 docs, so please write lots of them!\n\nWe follow [PEP-8](https://www.python.org/dev/peps/pep-0008/) for Python and the [official style](http://solidity.readthedocs.io/en/v0.4.24/style-guide.html) for Solidity.\n\n## Authors\n\nProveth's development was started by the *Submarines* group at the [2018 IC3 Ethereum bootcamp](http://www.initc3.org/events/2018-07-12-IC3-Ethereum-Crypto-Boot-Camp.html):\n- Lorenz Breidenbach\n- Tyler Kell\n- Alex Manuskin\n- Casey Detrio\n- Derek Chin\n- Shayan Eskandari\n- Stephane Gosselin\n- Yael Doweck\n\n## Acknowledgements\n\nOur design is inspired by [PeaceRelay](https://medium.com/@loiluu/peacerelay-connecting-the-many-ethereum-blockchains-22605c300ad3). Thanks to Nate Rush for answering our questions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Florenzb%2Fproveth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Florenzb%2Fproveth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Florenzb%2Fproveth/lists"}