Skip to main content

Session creation

High level flow of TrioSession

TrioSession is the main object which will be used to perform all of the MPC operations supported. To create TrioSession please follow the steps below.

Step 1 : Add library to your Project


Step 2 : Create new session


  1. Provide websocket client by using any of the below options :
  2. Provide cloud/server public key.
  3. Provide storage client. (You need to implement the protocol StorageClient).
  4. Provide message signer. (You need to implement the protocol MessageSigner).

Example


Example.swift
import SwiftUI
import trio

struct ContentView: View {

var body: some View {
VStack {

// The demo server, over TLS.
let CLOUD_NODE_URI = "trio-server.demo.silencelaboratories.com"

// Other party verifying-key/public-key. Replace with your own Verifying Key.
let cloudVerifyingKey = "9c4c79e942bbc3ff1d6ace7256404d701498056978cc4638c35832acdf821b1e"

// Create websocketConfig to let SilentShard use the default WebsocketClient.
let websocketConfig = WebsocketConfig(url: CLOUD_NODE_URI, port: 443, isSecure: true)

// Create a storageClient to persist keyshares. The SDK owns keyshare
// storage and addresses every share by its keyId.
let storageClient = CustomStorageClient()

// Create a messageSigner to authenticate protocol messages. For quick-start
// we use the test signer; do not use TestECDSAMessageSigner in production.
// Provide your own MessageSigner backed by the Secure Enclave instead:
// let messageSigner = CustomMessageSigner()

// Create a TrioSession
let trioSession = SilentShard.ECDSA.trioInitiator(
// Do not use TestECDSAMessageSigner in production
messageSigner: TestECDSAMessageSigner(),
cloudVerifyingKey: cloudVerifyingKey,
websocketConfig: websocketConfig,
storageClient: storageClient
)

// or using a custom network client
// let trioSession = SilentShard.ECDSA.trioInitiator(
// messageSigner: TestECDSAMessageSigner(),
// cloudVerifyingKey: cloudVerifyingKey,
// networkClient: CustomNetworkClient(),
// storageClient: storageClient
// )
}
.padding()
}
}

#Preview {
ContentView()
}
  • CLOUD_NODE_URI is the URI of the cloud node.
  • cloudPublicKey is the cloud verifying key (Ed25519 public key).
    • This public key is used to verify the server's signature on each message
    • See example here
  • SilentShard Provides API for creating MPC TrioSession (Two-Party) using ECDSA algorithm.
  • ECDSA Provides factory methods for creating MPC session using ECDSA algorithm.
  • TrioSession Represents a two-party computation session that lets you perform MPC operations using SilentShard protocol.

You have now successfully set up the session and are ready to start performing MPC actions! 🎉