Skip to main content
This guide covers all breaking changes when upgrading from dstack OS v0.3.x to v0.5.x.

Docker Compose Changes

Socket Path Update

Update your docker-compose.yml file:

Guest SDK Changes

Client Initialization

JavaScript:
Python:

Key Derivation Methods

The ambiguous deriveKey() method is now split for clarity: JavaScript:
Python:

⚠️ CRITICAL: Wallet Helper Functions - ADDRESS WILL CHANGE

Important: The secure functions apply SHA256 hashing which results in DIFFERENT wallet addresses. Plan your migration carefully! JavaScript Migration:
Python Migration:

Migration Strategy for Wallets

Since wallet addresses will change, you need to plan your migration:
  1. For new applications: Use secure functions from the start
  2. For existing applications with funds:
    • Deploy both old and new wallet systems in parallel
    • Transfer funds from old wallets to new secure wallets
    • Update all references to wallet addresses
    • Only deprecate old system after confirming all funds are migrated
  3. If you must keep the same address (NOT RECOMMENDED):

Remote Attestation

Quote generation now requires manual hashing for data larger than 64 bytes: JavaScript:
Python:

New Features in v0.5.x

Event Emission (Advanced)

Extends RTMR3 with custom events. This is an advanced feature for attestation purposes.
Note: Not available in simulator. Requires dstack OS v0.5.0+.

KMS Public Key Verification

When deploying with encrypted environment variables, the SDK now includes a function to verify that encryption keys from the KMS are legitimate, preventing man-in-the-middle attacks. JavaScript:
Python:

HTTP API Changes

Endpoint Format

Migration Checklist

  1. Update SDK version
  2. Update docker-compose.yml
    • Change socket mount from /var/run/tappd.sock to /var/run/dstack.sock
  3. Update client code
    • Replace TappdClient with DstackClient
    • Replace deriveKey() with getKey()
  4. ⚠️ CRITICAL: Plan wallet migration
    • Wallet addresses WILL change with secure functions
    • Transfer funds from old to new wallets
    • Update all address references
  5. Update attestation code
    • Add manual hashing for getQuote() if data > 64 bytes
  6. Test thoroughly
    • Verify new wallet addresses
    • Test fund transfers
    • Test attestation flows

Common Issues and Solutions

Issue: Wallet addresses changed unexpectedly

Cause: Using secure functions changes the address due to SHA256 hashing
Solution: This is expected. Plan migration of funds and update address references

Issue: Need to keep old wallet address temporarily

Cause: Cannot migrate funds immediately
Solution: Use legacy functions temporarily (security risk) while planning migration

Issue: Socket connection errors

Cause: Old socket path in docker-compose.yml
Solution: Update volume mount to /var/run/dstack.sock

Issue: Quote generation fails

Cause: Data exceeds 64 bytes without hashing
Solution: Hash data before passing to getQuote()

Need Help?