Introduction
Welcome to the Sodot developer docs.
These docs will help you get started using Sodot MPC Infra.
On the left hand side you will find guides to help you quickly start using our SDK and our deployable MPC signer (Vertex), as well as a full API reference for the SDK and Vertex that includes examples for each type of MPC operation.
In case you have any questions please feel free to contact us.
About Us
Sodot enables custody and wallet providers to leverage highly performant MPC in order to generate and manage private keys, elevating the security and UX of their product, while staying in full control.
Our Mission
Sodot was founded with a clear mission - building the world’s most performant and robust MPC infrastructure, that will enable leading companies to build superior products with the security and UX their customers deserve.
We are deeply focused, mission-driven, and highly committed to excellence in our journey to achieving that mission.
Team
Sodot was founded by a seasoned team of MPC and cybersecurity experts, with over 20 years of experience.
Our team's expertise spans various sectors, including the private sector, elite cybersecurity intelligence units, and academia.
Sodot MPC Infra
Sodot MPC SDK and Vertex provide a highly performant MPC infrastructure that is handcrafted for companies that build custody and wallet products in Web3.
The SDK and Vertex are designed to maximize the control and independence of our customers. Therefore, it can be deployed fully on-premise, allowing full data privacy and operational independence.
Our MPC SDK and Vertex can be integrated seamlessly without requiring any prior cryptography knowledge.
Our cryptography code was audited by Trail of Bits (September 2024) and NCC Group (July 2023).
Overview
Sodot MPC Infra allows for generating, managing and utilizing Web3 signing keys by leveraging MPC in order to mitigate the inherent risk involved with mananging a sensitive private key.
Sodot MPC Infra supports generating and signing with a distributed private key, that is distributed into any number of shares on any combination of mobile, web or server.
However there are 2 prominent settings for utilizing Sodot MPC Infra.
Custody Operations
For any custodial product (i.e. custodians, market-makers, exchanges, etc.) we recommend utilizing our deployable Vertex REST service that leverages Secure Enclave technology in the following manner:
Self-Custodial Wallets
For any self-custodial product (i.e. wallets, Wallet-as-a-Service) we recommend utilizing our SDK on the client side and deploying a Vertex on the backend in the following manner:
Quickstart
SDK
Get started with the installation guides for each SDK:
For Key Generation and Signing guides, refer to the following links:
- Go SDK Getting Started
- Node.js SDK Getting Started
- React Native SDK Getting Started
- Web SDK Getting Started
Additionally, a full client-server key sharing example is provided here.
Vertex
Get started with using the Vertex by following the Vertex section here.
How Does It Work?
Sodot MPC Infra takes care of all the cryptography related to MPC, secure communication between client devices. For the Vertex secure storage of the secret material as well as running the MPC protocols from withing Secure Enclaves is also included.
In order to make this work seamlessly, communication between devices goes through a relay server. The general flow for each key generation or signing operation looks like this:
- The Vertex service creates a Room in the relay server, which is given a unique Room Id.
- Then, the Room Id must be sent to all devices/servers that will participate in the MPC operation.
- All devices with a Room Id will then connect to that Room in the relay server.
- When all parties have connected, the SDK/Vertex on all devices will start running the MPC operation (e.g. signing or key generation).
We show this with an example of a signing operation between 3 different users:
In the diagram we consider three users named Alice, Bob and Charlie, using either the Sodot MPC SDK or Vertex on their devices/servers. The users' communication is relayed via Sodot Relay Server. The diagram depicts the general flow of information between the users.
In order for any set of clients that are mobile to communicate with each other, having them connect via a relay server allows communication to work smoothly even in adverse network environments where peer-to-peer communication is not possible.
The relay server provides no cryptographic services, therefore, even in the case of a breach of this server, the signing keys remain safe as well as each and every key share of the clients. All data flowing through the relay server is end-to-end encrypted so that the relay server knows nothing about the data being relayed.
Next we will show how to deploy and use a Vertex and how to install and use the SDK.