Skip to content

v3.3.0 - UTXO Address Labelling & SDK v1.1.0- #80

Latest

Choose a tag to compare

@scarlin90 scarlin90 released this 01 Sep 07:05
1f2d113

Release Notes

Signing Room v3.3.0 & @signing-room/sdk v1.1.0

SigningRoom_UTXO_Labels

This release introduces a major usability upgrade for high-stakes treasury coordination: Encrypted UTXO Address Labelling. Alongside this flagship feature, we resolved a tricky WebSocket race condition in the address book sync, patched an upstream base image CVE, and significantly improved our test suite coverage.

Because this is a non-breaking, additive protocol update, the WebSocket protocol version remains stable, ensuring backward compatibility with older clients.

✨ New Features

Address Labelling (UTXO Labelling)

Coordinators can now assign human-readable aliases (e.g., "Corporate Treasury Cold Storage" or "Primary Vault") directly to raw Bitcoin input and output addresses.

  • Zero-Knowledge: Like all metadata, address labels are end-to-end encrypted and cryptographically blinded. The relay server never learns the underlying addresses or their assigned labels.
  • Real-time Syncing: Labels applied by the Coordinator are instantly broadcasted and decrypted by all connected participants in the room.
  • Persistent Caching: Labels are securely saved to the user's local address book, meaning recognized addresses will automatically display their human-readable aliases in future signing ceremonies.
  • Forensic Auditing: Assigned labels are automatically ingested into the final PDF and CSV audit logs alongside the raw addresses.

🐛 Bug Fixes

  • Audit Log Double-Firing (Race Condition): Fixed an issue where auto-syncing the local address book during room initialization caused duplicate UPDATE_ADDRESS_LABEL network requests (and duplicate audit log entries).

  • Implemented a strictly-timed hasSyncedLocalAddressBook execution lock bound to the STATE_SYNC_DECRYPTED and ROLE_UPDATE events.

  • Added Set data structures to instantly deduplicate identical addresses (e.g., change addresses) before network calls are dispatched, ensuring completely atomic state and log updates.

  • Trivy Scan / Alpine Base Image CVE: Addressed a high-severity OpenSSL vulnerability (CVE-2026-14456) failing CI/CD Trivy scans. Upstream Nginx images were lagging, so we implemented a temporary root-escalation step in the Docker build to manually upgrade libssl3 and libcrypto3. This permanently mitigates the CVE while preserving the hardened, minimal attack surface of the unprivileged alpine-slim image.

📦 SDK Updates (@signing-room/sdk v1.1.0)

  • New Method: Added coordinator.setAddressLabel(address, label) to allow programmatic labelling of UTXOs.
  • New State Property: The RoomState interface now exposes the addressLabels dictionary.
  • New Event: The SigningRoomClient now routes the ADDRESS_LABELS_DECRYPTED action to the internal state store.

🧩 Web Component / UI Updates

  • New Webhook Event: The embedded <signing-room> widget now emits an addressLabelled CustomEvent via the WidgetDispatcherService so host applications can track when UTXOs are aliased.
  • UI Integration: Added a new "Add Label" action button to all input and output cards in the transaction overview tab.
  • Search Support & UX: The transaction search filter now accurately parses and filters against human-readable address labels. Input placeholders were also updated to explicitly prompt users to "Search by address or label..." to ensure the feature is instantly discoverable.

🛡️ Relay Worker & Security

  • Buffer Overflow Protection: Implemented a strict 200-character payload limit on both hardware signer labels and address labels within the Cloudflare Worker to protect the Durable Object against storage bloat and spam.
  • State Syncing: Updated the STATE_SYNC and UPDATE_ADDRESS_LABEL WebSockets actions to correctly map and broadcast the new blinded label properties.

🧪 Testing & Tooling Upgrades

  • Expanded E2E Coverage: Playwright tests have been heavily expanded and refined:
  • Added full UI interaction coverage for the Address Labelling flow, including filtering inputs/outputs by custom labels and verifying empty search states.
  • Added Web Component host telemetry checks to verify addressLabelled event emissions.
  • Expanded the deterministic BIP protocol test vectors to generate and validate UPDATE_ADDRESS_LABEL cryptographic cipher payloads.

Unlabelled Input:
image

Labelled Outputs:
image

Label Address Modal:
image