https://github.com/gnosisguild/enclave
Enclave is an open-source protocol for Encrypted Execution Environments (E3).
https://github.com/gnosisguild/enclave
Last synced: 3 months ago
JSON representation
Enclave is an open-source protocol for Encrypted Execution Environments (E3).
- Host: GitHub
- URL: https://github.com/gnosisguild/enclave
- Owner: gnosisguild
- License: lgpl-3.0
- Created: 2024-05-16T03:32:19.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-01-27T05:23:51.000Z (3 months ago)
- Last Synced: 2025-01-27T06:21:57.162Z (3 months ago)
- Language: Rust
- Size: 1.92 MB
- Stars: 20
- Watchers: 2
- Forks: 4
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-ccamel - gnosisguild/enclave - Enclave is an open-source protocol for Encrypted Execution Environments (E3). (Rust)
README
[![Github Actions][gha-badge]][gha] [![Hardhat][hardhat-badge]][hardhat] [![License: MIT][license-badge]][license]
# Enclave
[gha]: https://github.com/gnosisguild/enclave/actions
[gha-badge]: https://github.com/gnosisguild/enclave/actions/workflows/ci.yml/badge.svg
[hardhat]: https://hardhat.org/
[hardhat-badge]: https://img.shields.io/badge/Built%20with-Hardhat-FFDB1C.svg
[license]: https://opensource.org/license/lgpl-3-0
[license-badge]: https://img.shields.io/badge/License-LGPLv3.0-blue.svgThis is the monorepo for Enclave, an open-source protocol for Encrypted Execution Environments (E3).
## Architecture
Enclave employs a modular architecture involving numerous actors and participants. The sequence diagram below offers a high-level overview of the protocol, but necessarily omits most detail.
```mermaid
sequenceDiagram
participant Users
participant Enclave
participant CiphernodeRegistry
participant E3Program
participant ComputeProvider
participant InputValidator
participant DecryptionVerifierUsers->>Enclave: request(parameters)
Enclave->>E3Program: validate(e3ProgramParams)
E3Program-->>Enclave: inputValidator
Enclave->>ComputeProvider: validate(computeProviderParams)
ComputeProvider-->>Enclave: decryptionVerifier
Enclave->>CiphernodeRegistry: requestCommittee(e3Id, filter, threshold)
CiphernodeRegistry-->>Enclave: success
Enclave-->>Users: e3Id, E3 structUsers->>Enclave: activate(e3Id)
Enclave->>CiphernodeRegistry: committeePublicKey(e3Id)
CiphernodeRegistry-->>Enclave: publicKey
Enclave->>Enclave: Set expiration and committeePublicKey
Enclave-->>Users: successUsers->>Enclave: publishInput(e3Id, data)
Enclave->>InputValidator: validate(msg.sender, data)
InputValidator-->>Enclave: input, success
Enclave->>Enclave: Store input
Enclave-->>Users: successUsers->>Enclave: publishCiphertextOutput(e3Id, data)
Enclave->>DecryptionVerifier: verify(e3Id, data)
DecryptionVerifier-->>Enclave: output, success
Enclave->>Enclave: Store ciphertextOutput
Enclave-->>Users: successUsers->>Enclave: publishPlaintextOutput(e3Id, data)
Enclave->>E3Program: verify(e3Id, data)
E3Program-->>Enclave: output, success
Enclave->>Enclave: Store plaintextOutput
Enclave-->>Users: success
```## Security and Liability
This repo is provided WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## License
This repo created under the [LGPL-3.0+ license](LICENSE).