Upgrading from v70 to v73

We officially end support for our previous long-term release, Builder Vault v70 LTS, at 2027-03-14. We therefore recommend that you upgrade to our most recent LTS version, Builder Vault v73 LTS. Builder Vault v73 LTS will be officially supported with bug-fixes and other patches until at least 2028-03.

This page guides you through the necessary steps for upgrading Builder Vault from v70 LTS to v73 LTS.

New Features

Builder Vault v73 comes with a number of new features and other improvements, most notably:

Deprecation Notice

🚧
DKLs19 is still supported in v73 LTS, but may not be part of future LTS versions. We recommend upgrading to the DKLs23 protocol (upgrade instructions here). Note keys generated with DKLs19 can automatically be used with the DKLs23 protocol.

Upgrade Instructions

When upgrading from v70 LTS to v73 LTS you need to take the following into account:

We always recommend to backup your data before attempting an upgrade of the system. See our recommendations for upgrading for more on how to upgrade Builder Vault in general.

Required changes and other important recommended changes are described in more detail below.

Backup and Restore Key Share

In v70 LTS the BackupKeyShare exported an unencrypted key share from an MPC node and the key share could later be imported using RestoreKeyShare. In v73 LTS, these methods have been renamed to ExportKeyShare and ImportKeyShare. Moreover, the exported key share is now encrypted using the a wrapping key.

📘
IMPORTANT
The exported key is now encrypted using a provided public wrapping key. If you use the exported key share as a back up, so you can later restore the MPC node, it is important that you either:

  1. Make sure that the corresponding private wrapping key is available when you want to restore. You can for example keep the private wrapping key in a protected environment such as an HSM. The benefit of this is that the backup is not sensitive and can be stored and replicated anywhere.
  2. Alternatively, you can use a "dummy" wrapping key and unwrap the exported data immediately after you have called ExportKeyShare. This gives you the raw, unencrypted, key share backup similarly to how BackupKeyShare worked in v70 LTS. It is then your responsibility to store the unencrypted key share backup in a secure way.

In v73 LTS, the export can (optionally) include presignatures as well. If presignatures are exported, they are removed from the MPC node to reduce the risk of reusing a presignature.

If you used BackupKeyShare and RestoreKeyShare in v70 LTS you need to:

  1. Change your code so it matches the new method names of the SDK.
  2. Rename BackupKeyShare and RestoreKeyShare to ExportKeyShare and ImportKeyShare in the MPC node's configuration file.
  3. Consider how to handle the new required wrapping key (store the private wrapping key safely, or use a dummy wrapping key, as explained above).

Export and Import Key Shares

In v70 LTS the ExportKeyShares and ImportKeyShares methods exports and imports wrapped and re-randomized key shares of a key, one key share to each MPC node. These methods have been renamed to ExportKey and ImportKey in v73 LTS, but the functionality remains unchanged.

If you use these methods, you need to

  1. Change your code so it matches the new method names of the SDK.
  2. Rename ExportKeyShares and ImportKeyShares to ExportKey and ImportKey in the MPC node's configuration file.

Direct Node Communication (WebSocket and TCP)

Builder Vault v73 LTS introduces updates to how MPC nodes communicate with each other.

Previously, direct communication was configured using MPCTCPServer and MPCWebSocketServer in the MPC node configuration file. These are now replaced with a new unified communication server:MPCDirectServer.

If you use direct raw TCP connections, you can keep using the old MPCTCPServer, though we recommend switching to the new MPCDirectServer.

If you use direct WebSocket communication between nodes, you are required to switch to the new MPCDirectServer since the old MPCWebSocketServer has been removed.

Switching breaks node-to-node communication, so you will need to do this for all your MPC nodes in sync. See this for more on how to set up the new MPCDirectServer.

The new MPCDirectServer is essentially a drop-in replacement for MPCTCPServer. However, with MPCDirectServer, if an MPC node specifies the address of another node, it means that this node will initiate the communication. So if you used MPCTCPServer and both MPC nodes had the address of each other, you will need to remove it from one of the nodes, or include symmetricConnection=true in the connection string.

General Purpose MPC

Builder Vault v73 LTS contains a number of changes and improvements related to general purpose MPC. This affects the AES, HMAC, AN10922, RFC5642 operations as well as the hardened BIP32 available via the ECDSA protocols DKLs19 and DKLs23.

Changes to the Java SDK