Skip to content

Libraries

WDK

Upstream wallet SDK intended for future wallet integration.

Verified 19 October 2026

A future app could add wallet functionality through WDK directly.

Status in Unstoppable Stack

Current generated wallet code is a stub. This project provides no working payment path.

How it works

WDK composes wallet modules around a common account API. A chain-specific module derives accounts and implements that chain's operations.

This isolated upstream demonstration derives a disposable address. It does not implement a checkout, send money or connect the generated wallet stub to an app.

The seed exists only for this process and is not saved. Application wallet integration would need a separate design for secret storage, recovery and user approval.

Run an example

Before you run

Upstream-only experiment. Wallets remain outside the core preview. This example performs no balance lookup, signing or transfer.

Use Node 22.17+ and npm for installation. Start in a new directory for this example so its ./data storage cannot collide with another example. Save each file below with the exact filename shown, then run the commands in order.

bash
mkdir wdk-demo
cd wdk-demo
npm init -y
npm install @tetherto/wdk @tetherto/wdk-wallet-evm

Save as example.mjs:

js
import WDK from '@tetherto/wdk'
import WalletManagerEvm from '@tetherto/wdk-wallet-evm'
// Disposable demonstration wallet: never use it to receive funds.
const wdk = new WDK(WDK.getRandomSeedPhrase()).registerWallet(
  'ethereum', WalletManagerEvm, { provider: 'https://eth.drpc.org' }
)
try {
  const account = await wdk.getAccount('ethereum', 0)
  console.log(await account.getAddress())
} finally {
  wdk.dispose()
}

Run from this example directory:

bash
node example.mjs

Expected result

A new 0x-prefixed address. No seed is printed or saved, and no transaction is sent.

Example verification

The code shown here ran successfully in a local check on 19 October 2026. This verifies the small example, not production readiness, public-network reachability or every platform.

API essentials

  • WDK.getRandomSeedPhrase(): create temporary seed material for the demonstration.
  • registerWallet(name, module, config): select a chain implementation. getAccount(name, index) selects an account; getAddress() returns its public address.
  • dispose(): release SDK-managed wallet resources. Application-owned copies of secrets need their own lifecycle.

Troubleshooting and limits

  • Never fund the displayed disposable address: this example intentionally provides no recovery flow.
  • The configured provider is not a managed service supplied by this project. Provider failures should be surfaced by the consuming app.
  • Wallet scaffolds remain stubs. A working upstream address example does not establish a supported payment feature.

Next steps

Need help? Report an issue with your CLI version, platform, command and first relevant error.