Session creation
High level flow of TrioSession
- Configure/Implement transport layer TrioNetworkClient
- Configure/Implement storage layer StorageClient
- Configure/Implement MessageSigner
- Create TrioSession
- Perform MPC actions
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
-
Create new xcode project if you haven't.
-
Add SilentShard-Trio SDK using the instructions from the Installation Guide
Step 2 : Create new session
- Import module - trioinitiator
- We can Create TrioSession by calling SilentShard.ECDSA.createTrioSession() or SilentShard.EdDSA.createTrioSession() (whichever applies) by providing the following parameters
- Provide websocket client by using any of the below options :
- Providing WebsocketConfig object to let SDK use default WebsocketClient i.e. TrioNetworkClient.
- Providing custom TrioNetworkClient overriding(extending) TrioNetworkClient to override existing connect, read or write, etc. methods to add your own logic/configuration or additional process.
- Provide cloud/server public key.
- Provide storage client. (You need to implement the protocol StorageClient).
- Provide message signer. (You need to implement the protocol MessageSigner).
Example
- ECDSA
- EdDSA
Example.swift
```swift showLineNumbers title="Example.swift"
import SwiftUI
import trioinitiator
import Combine
struct ContentView: View {
var body: some View {
VStack {
let CLOUD_NODE_URI = "wss://trio-server.demo.silencelaboratories.com"
//Other party verifying-key/public-key
let cloudVerifyingKey = "9c4c79e942bbc3ff1d6ace7256404d701498056978cc4638c35832acdf821b1e"
//Create websocketConfig to let SilentShard use default WebsocketClient.
let websocketConfig = WebsocketConfig(
url: CLOUD_NODE_URI,
)
//Create storage client instance to manage keyshare state
let storageClient = CustomStorageClient()
//Create duoSession
/*
We only have to pass websocketConfig which contains the server config and
communication will be handled by internal websocketClient*/
let duoSession = SilentShard.ECDSA.createTrioSession(
messageSigner: TestECDSAMessageSigner(),
cloudVerifyingKey: String(
cloudVerifyingKey
),
websocketConfig: websocketConfig,
storageClient: storageClient
)
/*
//or for EdDSA algorithm
let duoSession = SilentShard.EdDSA.createDuoSession(
messageSigner: TestECDSAMessageSigner(),
cloudVerifyingKey: String(cloudVerifyingKey),
websocketConfig: websocketConfig,
storageClient: storageClient)
*/
}
.padding()
}
}
#Preview {
ContentView()
}
Example.swift
```swift showLineNumbers title="Example.swift"
import SwiftUI
import trioinitiator
import Combine
struct ContentView: View {
var body: some View {
VStack {
let CLOUD_NODE_URI = "wss://trio-server.demo.silencelaboratories.com"
//Other party verifying-key/public-key
let cloudVerifyingKey = "9c4c79e942bbc3ff1d6ace7256404d701498056978cc4638c35832acdf821b1e"
//Create websocketConfig to let SilentShard use default WebsocketClient.
let websocketConfig = WebsocketConfig(
url: CLOUD_NODE_URI,
)
//Create storage client instance to manage keyshare state
let storageClient = CustomStorageClient()
//Create duoSession
/*
We only have to pass websocketConfig which contains the server config and
communication will be handled by internal websocketClient*/
let duoSession = SilentShard.EdDSA.createTrioSession(
messageSigner: TestEdDSAMessageSigner(),
cloudVerifyingKey: String(
cloudVerifyingKey
),
websocketConfig: websocketConfig,
storageClient: storageClient
)
/*
//or for EdDSA algorithm
let duoSession = SilentShard.EdDSA.createDuoSession(
messageSigner: TestEdDSAMessageSigner(),
cloudVerifyingKey: String(cloudVerifyingKey),
websocketConfig: websocketConfig,
storageClient: storageClient)
*/
}
.padding()
}
}
#Preview {
ContentView()
}
CLOUD_NODE_URIis the URI of the cloud node.cloudPublicKeyis 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! 🎉