Skip to main content

Introduction

Welcome to the Sodot developer docs.

These docs will help you get started using Sodot MPC SDK.
On the left hand side you will find guides to help you quickly start using our SDK, as well as a full API reference for the SDK that includes detailed 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 SDK

Sodot MPC SDK is a highly performant MPC infrastructure that is handcrafted for companies that build custody and wallet products in Web3.

The SDK is 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 can be integrated seamlessly without requiring any prior cryptography knowledge.

info

Our cryptography code was audited by NCC Group (July 2023)

Quickstart

Get started with installation.
Key Generation and Signing guides can be found here.

Additionally, a full client-server key sharing example is provided here.

How Does It Work?

The SDK takes care of all the cryptography related to MPC, secure communication between client devices, and optionally storage of the secret material on the devices.

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:

  • A backend 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 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:

Diagram

In the diagram we consider three users named Alice, Bob and Charlie, using a Sodot MPC SDK based application named SafeApp on their mobile devices. The users' communication is relayed via Sodot Relay Server. The diagram depicts the general flow of information between the users.



Why do you need a Relay Server?

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.

Security Notice

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 start using the SDK, so you can experience this yourself.