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.
mkdir wdk-demo
cd wdk-demo
npm init -y
npm install @tetherto/wdk @tetherto/wdk-wallet-evmSave as example.mjs:
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:
node example.mjsExpected 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.