Advancing our WaaS: New Demo
This demo shows the current state of our Wallet-as-a-Service (WaaS) platform, from initial setup to account recovery. Everything runs through our TypeScript SDK against a local devnet, and the wallets are smart contracts whose keys are WebAuthn passkeys.
Setup: org, app, and publishable key
The demo starts on the developer dashboard. The developer signs up, which also creates their first organization, then creates an app and generates a publishable key for it. That key is what the SDK uses to connect to the API.
Creating a user wallet
On the Account tab, an end user signs in with email and password. Creating their wallet registers a passkey on the device with Touch ID, then deploys the wallet on-chain. Each wallet has two keys from the start: the user's passkey (the primary key) and a server-held guardian key.
Executing a transaction
The wallet executes a transaction as a 2-of-2 signed call: the user's primary passkey and the server guardian both sign. The demo submits it and the response comes back with a transaction hash, a block number, and a success status.
Adding a new passkey, approved by an existing one
Adding a device registers a fresh passkey locally and posts a pending approval request. Approval has to come from a device that already holds an on-chain key. In the demo, the existing primary passkey signs the approval, the new key ("Device 2") is added to the on-chain key set, and the wallet then reports two active keys. A new device cannot add itself; an existing key must authorize it.
Account recovery with a timelock
Recovery handles a lost primary passkey. The user registers a fresh passkey, and the server, acting as guardian, adds it to the wallet under a timelock. The key is registered right away but cannot sign until the timelock passes; once it does, the device can act as the new primary. The delay is the safeguard: it gives the real owner time to react if a recovery they did not start is ever attempted.
Summary
The demo covers org and app setup, user wallet creation, a signed transaction, cross-device key approval, and timelocked recovery, all driven through our TypeScript SDK against on-chain smart-contract wallets secured by passkeys.