Node Communication:
- Multi-instance optimizations. This breaks compatibility with older multi-instance versions.
Node Configuration:
- Log configuration parser moved to viper and internal go-toml upgraded to go-toml/v2. Configuration now uses a custom Duration struct for proper unmarshalling
- Configuration parser moved from go-toml to viper, allowing multiple configuration files to be parsed as one and overriding configuration values with environment variables
Client API:
- Node.js SDKv2
- C SDKv2: Removed a output parameter from sign that was never used.
Patch changes (no effect on compatibility):
- Fixed a bug in the s3 audit logger location
- Upgraded to Go 1.22.0 (<https://go.dev/doc/devel/release#go1.22.minor>)
- Added cosign to pipeline, signing our docker images pushed to the ECR and Nexus registries.
- Fixed an issue with empty structs in configuration
- Fixed some memory issues that could appear when running under high load in C and Java SDKs.
- Fix README example for gitlab.com/Blockdaemon/go-tsm-sdkv2
Patch changes (no effect on compatibility):
- Fixed error that caused problems, when running lots of requests using libtsmclient, and dependent SDKs (nodejs, Java JNI/JCE)
Introduced cold wallet functionality that combines offline storage security with hot wallet operational flexibility. This hybrid approach provides enhanced protection for high-value assets while maintaining transaction capabilities:
Secure offline key storage isolated from network connectivity
Complete transaction lifecycle support including initiation, approvals, signing, verification and auditing
Broadcast capabilities to publish signed transactions to the blockchain
Cold Wallet CLI
Released a command-line interface tool designed to streamline cold wallet deployment and configuration. The CLI automates the setup process and generates the necessary configuration files for supported operating systems:
MacOS deployment support in Docker containerized mode
Linux deployment support using systemd service management
Node Communication:
- Added BIP-340 signature support to SEPD19S
Client API:
- C and Java SDKv2: Added methods for TsmUtils utility methods from the Go SDK.
- OIDC Access Token Authentication: Added the posibility to use static public key
- C and Java SDKv2: Added Embedded client with encryptor and configuration with OIDC authentication
- Java SDKv2: Changed names on SessionConfig creation to align with Go SDK, and changed Embedded Client creation to match Go.
- Go SDKv2: Generalized EdDSA to other schnorr variants. Renamed all EdDSA methods in SDKv2 to Schnorr and added support for BIP-340 signatures
Client Communication:
- EdDSA signatures are now identified as Schnorr signatures
Patch changes (no effect on compatibility):
- Added build tag to Go mobile, to fix error introduced in Go 1.20
- Upgraded to Go 1.21.6 (<https://go.dev/doc/devel/release#go1.21.minor>)
- When API keys are enabled, create the applications on startup instead of on demand
Client API:
- Go SDKv2: OIDC Access token authentication
- Go SDKv2: GenerateECDSAKeyPair() now returns pointer
Patch changes (no effect on compatibility):
- Fixed migration from versions prior to 55.0.0 with BIP-32 hard derived keys in the database
- Android and iOS SDKv2: Added TSM utilities (tsmutils)
Patch changes (no effect on compatibility):
- Fixed security issue with DKLS19
- Fix bug in tsmcli preventing it from working with a single MCP node
- Go SDKv1: Un-deprecate keyClient.Delete()
Client API:
- Java SDKv2: Added JNA based Java SDK for SDKv2
- C SDKv2: Changed Session Config to take a map like the Go SDK and added the broadcast API
Patch changes (no effect on compatibility):
- Print log configuration when starting nodes
- Added logging on error for the C SDKv2
- Trailing slash in issuer URL is now removed before validating
- libtsmclient, Node.js SDK, Java SDK now logs sessionID for EdDSA and ECDSA that takes sessionID as input.
Node Configuration:
- Port option has been removed from the multiinstance configuration.
Node Communication:
- Multi-instance optimizations. This breaks compatibility with older multi-instance versions.