A protocol module for tetherto/wdk that adds pre-transaction, condition-based access. Cryptographically signed attestations and trust profiles, verifiable offline. OAuth proves who you are — wallet auth proves what you hold.
WDK ships four protocol categories out of the box. We add a fifth — Wallet Auth — as a first-class module alongside them.
Velora
USDT0 / LayerZero
Aave
MoonPay
InsumerAPI
Each WDK protocol module exposes a typed interface that wallet apps compose into their flow. SwapProtocol has quoteSwap() and swap(). LendingProtocol has supply(), borrow(), repay(). WalletAuthProtocol has two verbs for the two jobs it does: attest an address against a set of on-chain conditions, and produce a signed multi-dimensional trust profile. Both are pre-transaction checks. Neither touches private keys.
Evaluate 1–10 on-chain conditions against any address. Returns an ECDSA P-256 signed boolean, with optional ES256 JWT output and EIP-1186 Merkle proofs.
36+ signed checks across stablecoins, governance, NFTs, and staking. Add Solana, XRPL, or Bitcoin addresses for additional dimensions. Each check is individually signed.
Three distinct buyers for a pre-transaction check inside a self-custodial wallet. WDK touches all three.
WDK explicitly targets "humans, machines, and AI agents." When an autonomous agent holds keys, the operator wants programmable constraints the agent can't argue its way around — plus a cryptographic audit trail the operator can verify after the fact.
Creator-payment tools, remittance apps, treasury products — anything that needs a policy layer between "user clicks send" and "transaction broadcasts." Travel Rule, sanctions, counterparty risk. Drop-in, portable attestation format.
Before accepting an incoming payment, show a trust profile on the sending wallet. A creator wants to know a payment isn't from a mixer. A merchant wants to know the USDT isn't about to be frozen.
| Method | Maps to | Signed | Credits |
|---|---|---|---|
attest({ address, conditions, jwt?, merkleProof? }) |
POST /v1/attest | ECDSA P-256 + optional ES256 JWT | 1 (2 with merkleProof) |
trust({ address, solanaAddress?, xrplAddress?, bitcoinAddress? }) |
POST /v1/trust | ECDSA P-256 | 3 (6 with merkleProof) |
Every result carries a signature (sig) and key ID (kid) that let any party verify the result offline, without calling the API, against the public JWKS:
Use any standard JOSE or JWT library, or npm install insumer-verify for a convenience wrapper. If you request jwt: true on attest(), the output is also a standard ES256 JWT — Kong, Nginx, Cloudflare Access, and AWS API Gateway can verify it the same way they verify any other JWT.
InsumerAPI covers 33 chains: 30 EVM networks (Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, BNB, and the full major-EVM set), plus Solana, XRPL, and Bitcoin. The module works today on every WDK surface that overlaps: wdk-wallet-evm, wdk-wallet-solana, and wdk-wallet-btc. It also covers XRPL natively, even though WDK does not yet ship an XRPL wallet module.
Not yet covered: TRON, TON, and Lightning/Spark. Apps on those WDK runtimes can still call attest() or trust() against any EVM, Solana, Bitcoin, or XRPL address the user holds — they just can’t condition on (for example) a TRC-20 balance yet. Those three chains are on the roadmap; the request shape will be identical when they land. Multi-chain addresses (solanaAddress, xrplAddress, bitcoinAddress) are routed automatically based on each condition’s chainId.
Free tier ships 10 attestation credits on every new key — enough to run the module end-to-end before spending anything. When a wallet app needs more, credits are purchased on-chain via POST /v1/credits/buy: no Stripe, no signup, no fiat. Supported rails: USDC or USDT on any major EVM chain (auto-detected from the transaction), USDC on Solana, or BTC on Bitcoin. Credits post as soon as the transaction confirms on-chain.
Node.js ≥ 18 (uses built-in fetch), Bare Kit and React Native (pass a fetch override in the constructor), and browsers (CORS is enabled on api.insumermodel.com). The module is ESM-only and ships with no runtime dependencies.
npm install @insumermodel/wdk-protocol-wallet-auth — then get a free API key with 10 credits.