Watch-only Wallets
Reading and spending are separate capabilities in Orbinum. A viewing key lets an accountant, auditor or dashboard see what you hold without any ability to move it.
Because v3 derives every secret as a separate branch of your seed, read access can
be handed out without spend authority. exportViewingCredential produces a
credential that omits the spending key by type — not by a runtime check, so a
credential cannot carry spend authority by accident.
@orbinum/wallet-sdk is a private package. This snippet shows the shape of the inputs, not
something you can install and run. Reaching this API requires
wallet SDK access.
import { deriveIdentity, exportViewingCredential } from '@orbinum/wallet-sdk';
const identity = deriveIdentity(rootSecret, 'v3');
// Sees what arrived. Cannot spend, cannot see what you paid.
const readOnly = exportViewingCredential(identity);
// Adds payment history — hand this over only deliberately.
const auditor = exportViewingCredential(identity, { includeOutgoing: true });
includeOutgoing is opt-in for a reason: the incoming key reveals what you
received, while the outgoing key reveals who you paid. The second is the
payment graph, a strictly larger secret than a list of amounts.
A v3 spending key on its own decrypts nothing and spends nothing. The scalar that spends a received note is derived from the shared secret, which comes from the viewing key — so a wallet has to hold both. Back up the root, not one key.