Smart Contract Library

The Smart Contract Library extends the EVM with encrypted data types and operations. It is deployed on the host blockchain and provides:

  • Encrypted data types (ebool, eaddress, estring, euint32)
  • Arithmetic operations (e.add, e.sub, e.mul)
  • Comparison operations (e.eq, e.le, e.gt)
  • Conditional operations (e.select)
  • Decryption operations (e.asyncDecrypt)

This library allows developers to write smart contracts that handle encrypted data without modifying the underlying blockchain.

Confidential Compute Nodes

The confidential compute nodes run in Trusted Execution Environments (TEEs) and execute confidential computations. Each compute node:

  • Runs the Inco computation binary in a secure enclave
  • Processes encrypted operations based on blockchain events
  • Validates access control before decryption

Decryption Nodes + Callback Relayer

Multiple decryption nodes operate in a quorum of TEEs to ensure security and reliability.

This is how a ciphertext can be converted into plaintext, and settled back onchain:

  • Monitors blockchain for decryption requests
  • Forwards decryption requests to the decryption network (TEEs)
  • Collects signed results from the decryption network
  • Submits decryption results back to the blockchain via callback transactions

The signed results are verified on the host chain to ensure that the decryption attestations are coming from the trusted set of decryption nodes.

Client-side JavaScript Library

The JavaScript Library provides client-side functionality for interacting with the host chain and Inco:

  • Encrypts user inputs using the network’s public key
  • Handles ephemeral key and EIP-712 signature generation for reencryption requests
  • Decrypts results locally for the user