Development update - February 2019


#1

Hey everyone,

Our team has been working hard this past month. We’re excited to share our progress in this February dev update.
I want to highlight a few things that are really exciting – the network is currently working round-trip for “sunny day” scenarios(!!). Now, energy is focused on “rainy day” scenarios – what happens and how to recover when things don’t go as planned.

To recap, these are the network components we can expect in Discovery:

  • Contract: the Enigma contract on Ethereum provides the consensus layer in the network
  • Javascript Library: The Enigma JS library is the interface to the Enigma network for secret contract developers, and the entry point for dApp users.
  • Enclave: The code running inside the Trusted Execution Environment (TEE, which is SGX in the case of Intel) is written in Rust, and contains Enigma’s adaptation of WASM that runs the bytecode for secret contract in a Virtual Machine inside the secure hardware. It receives the secret contract inputs encrypted from the user, and encrypts its outputs so that only the user can decrypt them.
  • Peer-to-Peer (P2P) component: Each enclave communicates one-on-one with its networking component.
  • Principal Node: A special instance of the enclave code that manages the encryption keys to maintain the state of secret contracts across the network.
  • Remote Attestation Proxy: A secure webserver online that Enigma provides as an interface to Intel Remote Attestation Service.

All these components are now working together. Specifically:

  1. We are able to exchange encryption keys between the Javascript library (client) and the enclave using Elliptic Curve Diffie-Hellman (ECDH)
  2. we can write secret contracts in Rust, compile them into WASM, and deploy them on the network
  3. we have enclaves requesting and obtaining state encryption keys valid for a limited period of time in the network
  4. we can execute secret contracts by encrypting the inputs and getting back the correct encrypted outputs, that only one client can decrypt.

This is a big step for us, and we’re excited to share our progress with you and hear any feedback or thoughts from the community.

PS: If you want to help as a beta tester for the network, fill out our developer interest form!