Giter Club home page Giter Club logo

proveth's Introduction

Proveth

Build Status Python >= 3.6 Solidity >= 0.5.0

Ethereum's design makes heavy use of Merkle trees enabling light clients to interact with the blockchain without having to download full blocks or its complete state.

Ethereum uses its own variant of Merkle trees, called Merkle Patricia Tries, which provide a dictionary-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).

(If you want to learn more about Merkle Patricia Tries, check out the links above and have a look at this cool visualisation Casey built.)

Project goals

Proveth aims to provide

  • a clearly specified format for these proofs;
  • a high-quality off-chain proof generator that can connect to an Ethereum node and generate such proofs;
  • 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.

Project state

Proveth 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".

We aim to extend this to:

  • proofs of transaction receipt inclusion/exclusion
  • proofs about the Ethereum state

Contributing

We 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.

We ❤️ tests & docs, so please write lots of them!

We follow PEP-8 for Python and the official style for Solidity.

Authors

Proveth's development was started by the Submarines group at the 2018 IC3 Ethereum bootcamp:

  • Lorenz Breidenbach
  • Tyler Kell
  • Alex Manuskin
  • Casey Detrio
  • Derek Chin
  • Shayan Eskandari
  • Stephane Gosselin
  • Yael Doweck

Acknowledgements

Our design is inspired by PeaceRelay. Thanks to Nate Rush for answering our questions.

proveth's People

Contributors

lorenzb avatar relyt29 avatar fiv0 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.