Skip to main content
A server co-signer is a server node that uses the threshold signature scheme (TSS) Node package to automate transaction signing without manual intervention. This allows you to automate your transaction signing process and improve the overall efficiency of your workflows. To ensure the safety of your assets and transactions, it is highly recommended that you also set up a TSS Node callback server to add custom risk controls to your signing process.

Technical architecture

The following diagram illustrates how the server co-signer interacts with the Cobo Wallet-as-a-Service (WaaS) service and the TSS Node callback server, as well as the key components in each of these systems: server co-signer's technical architecture

Server co-signer (TSS Node)

The TSS Node, which serves as a server co-signer, consists of the following main components that work together to ensure security and efficiency:

TSS logic

Implements core TSS operations, such as generating key shares, signing transactions and messages, and resharing keys, based on the MPC-TSS protocol.

Secrets.db

Provides encrypted storage for your MPC Wallets’ key shares and the TSS Node’s callback private key. The callback private key is used to sign the node’s JSON Web Tokens (JWTs) sent to the TSS Node’s callback server. The database file itself is encrypted to ensure the security of its contents. The callback private key is generated during TSS Node initialization, and the key shares are generated after completing key generation or resharing operations.

Embedded risk control module

A module within the TSS Node that implements the embedded risk control mechanism, one of the two risk control mechanisms provided by the server co-signer solution. When both mechanisms are enabled, a task request must be approved by both the embedded risk control module and all TSS Node callback servers to proceed. If any component (embedded or callback) rejects the operation, it will be denied.

Callback risk control module

A module within the TSS Node that implements the TSS Node callback mechanism, one of the two risk control mechanisms provided by the server co-signer solution. This module:
  • Sends task request details to the TSS Node callback server for risk assessment.
  • Receives and processes approval/rejection decisions made by the TSS Node callback server.
It is strongly recommended that you use the TSS Node callback mechanism to add custom risk controls, especially for key signing requests.

Configs

Contains configurations for the TSS Node, including:
  • Embedded risk control rules that are used by the embedded risk control module to decide whether to approve or reject a TSS operation request.
  • Configurations about the TSS Node callback servers, including the callback server’s URL and public key which is used to verify the callback server’s JWT.
  • System configurations, such as the operating environment.
To learn more about the configuration options, see Configure the TSS Node.

Metrics

You can configure to export server metrics to your InfluxDB database in order to monitor the performance of the TSS Node. To learn more about the configuration details of metrics, see Configure the TSS Node.

Cobo WaaS Service

The Cobo Wallet-as-a-Service (WaaS) 2.0 service requests the server co-signer to generate key shares, sign transactions or messages, or reshare keys for your MPC Wallets.

TSS Node callback server

The TSS Node callback server is a server that implements the TSS Node callback mechanism, one of the two risk control mechanisms provided by the server co-signer solution. You can enhance security by setting up one or more TSS Node callback servers that:
  • Implements custom risk control rules and provides real-time approval/rejection for transaction or message signing, key generation, or key resharing.
  • Uses JWTs to authenticate requests from the TSS Node
  • If any configured callback server rejects a transaction, the entire operation will be denied regardless of other approvals.
The callback server should store two keys: a private key used to sign the JWT sent to the TSS Node, and the TSS Node’s callback public key used to verify the TSS Node’s JWT. Cobo provides example callback server implementations in multiple programming languages to help you quickly develop your callback server. You can find these examples in our GitHub repository.

Next Steps

Now that you understand the architecture, you can:
  1. Set up a server co-signer
  2. Configure your risk controls
  3. Back up your key shares and learn other disaster recovery options.
Feel free to share your feedback to improve our documentation!