Session creation
High level flow of the SDK
- Setup the websocket client to connect and communicate with the cloud node
- Setup the storage client to store mobile keyshare
- Start a new mpc session
- Perform MPC actions
Start a new session
- ECDSA
- EdDSA
main.dart
import 'dart:io';
import 'package:silent_shard_sdk/silent_shard_sdk.dart' as sdk;
Future<sdk.EcdsaSession> setup([String cloudVerifyingKeyHex = 'SERVER_PUBLIC_KEY_HEX']) async {
/// The port number is the port number of the cloud node.
const port = 8080;
/// The nodeUri is the URI of the cloud node. It is the IP address of the cloud node.
/// Localhost url used for Android and iOS is shown below.
/// 10.0.2.2 is the IP address of the Android emulator.
/// 0.0.0.0 is the IP address of the iOS simulator.
final nodeUri = Platform.isAndroid ? '10.0.2.2:$port' : '0.0.0.0:$port';
final cloudClient = sdk.CloudClient(
baseUri: nodeUri,
isSecure: false,
);
final session = await sdk.createDuoEcdsaSession(
cloudClient: cloudClient,
cloudVerifyingKeyHex: cloudVerifyingKeyHex,
storageClient: sdk.SimpleStorageClient(),
);
return session;
}
main.dart
import 'dart:io';
import 'package:silent_shard_sdk/silent_shard_sdk.dart' as sdk;
Future<sdk.EddsaSession> setup(
[String cloudVerifyingKeyHex = 'SERVER_PUBLIC_KEY_HEX']) async {
/// The port number is the port number of the cloud node.
const port = 8080;
/// The nodeUri is the URI of the cloud node. It is the IP address of the cloud node.
/// Localhost url used for Android and iOS is shown below.
/// 10.0.2.2 is the IP address of the Android emulator.
/// 0.0.0.0 is the IP address of the iOS simulator.
final nodeUri = Platform.isAndroid ? '10.0.2.2:$port' : '0.0.0.0:$port';
final cloudClient = sdk.CloudClient(
baseUri: nodeUri,
isSecure: false,
);
final session = await sdk.createDuoEddsaSession(
cloudClient: cloudClient,
cloudVerifyingKeyHex: cloudVerifyingKeyHex,
storageClient: sdk.SimpleStorageClient(),
);
return session;
}
-
Initialize an ECDSA session with the EcdsaSession class.
-
CloudClient: is a class that handles the WebSocket communication with the cloud node.
-
SessionConfig: is a configuration object that contains the necessary information for the session.
-
CLOUD_NODE_URIis the URI of the cloud node. -
cloudVerifyingKeyis the Hex encoded cloud verifying key (Ed25519 public key).- This public key is used to verify the server's signature on each message
- See example here
You have now successfully set up the session and are ready to start performing MPC actions! 🎉