Codebase Overview (#200)

* Add some information about the codebase to README.md

* Added feedback
This commit is contained in:
th4s
2023-03-01 21:31:43 +00:00
committed by GitHub
parent fbe3c4d1ee
commit 4269e91239

View File

@@ -14,4 +14,37 @@ All crates in this repository are licensed under either of
- [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
- [MIT license](http://opensource.org/licenses/MIT)
at your option.
at your option.
## Useful Links
- website: <https://tlsnotary.org/>
- rust codebase: <https://github.com/tlsnotary/tlsn>
- documentation: <https://docs.tlsnotary.org/> (under development)
## Overview
- **mpc**: Home of multi-party computation libraries
- oblivious transfer: Core building block used a lot in our codebase.
- garbling: We use several variants of garbled circuit executions in our codebase
(DEAP, Dual-Ex, ZK)
- circuits: code to build circuits, with some basic circuit components
available.
- share-conversion: supports converting between additive and multiplicative
shares for performing finite-field arithmetic in 2PC.
- **tls**: Home of the TLS logic of our protocol like handshake en-/decryption, ghash, **currently outdated**
- **utils**: Utility functions which are frequently used everywhere
- **actors**: Provides actors, which implement protocol-specific functionality using
the actor pattern. They usually wrap an aio module
- **universal-hash**: Implements ghash, which is used AES-GCM. Poly-1305 coming soon.
- **point-addition**: Used in key-exchange and allows to compute a two party sharing of
an EC curve point
### General remarks
- the TLSNotary codebase makes heavy use of async Rust. Usually an aio
crate/module implements the network IO and wraps a core crate/module which
provides the protocol implementation. This is a frequent pattern you will
encounter in the codebase.
- some protocols are implemented using the actor pattern to facilitate
asynchronous message processing with shared state.