DeroAuth

Sign in with your DERO wallet.

No email. No password. Just a cryptographic proof of wallet ownership — privacy-preserving auth that never exposes your transaction history.

Zero personal dataPure TypeScriptJWT sessions
01
Connect wallet
XSWD to Engram / CLI — no extension
02
Sign challenge
Domain-bound message · nonce · 5-min expiry
03
Verify signature
Schnorr on BN256 · @noble/curves
04
Issue JWT session
24-hour token, any session middleware
session.token = eyJhbGciOiJIUzI1NiIs…9f · address: dero1qy…8f3a2c
Features

Built for privacy

Unlike Ethereum auth, signing in with DERO doesn’t expose your transaction history.

Schnorr on BN256

Pure-TypeScript signature verification via @noble/curves. No wallet needed server-side — just math.

JWT Sessions

Standard token sessions with 24-hour expiry. Compatible with any session middleware.

Domain-Bound Challenges

SIWE-style messages tied to your domain with nonce-based replay protection. 5-minute expiry.

Zero Personal Data

No email, no password, no name. Just a cryptographic address that reveals nothing about on-chain activity.

XSWD Protocol

WebSocket connection to DERO wallets (Engram, CLI). No browser extension required.

Redis-Ready

Atomic nonce consumption with Lua scripts for distributed deployments. In-memory for dev.

Quick start

A few lines of code

Drop-in React component and Next.js API handlers. Production-ready out of the box.

auth-example.tsx
import { SignInWithDero } from "dero-auth/react";
import { createAuthHandlers } from "dero-auth/next";

// React: drop-in button
export function LoginPage() {
  return <SignInWithDero onSuccess={(s) => console.log(s.address)} />;
}

// Next.js: API route handlers
export const { GET, POST } = createAuthHandlers({
  jwtSecret: process.env.JWT_SECRET!,
  domain: "myapp.com",
});

Ship private auth today.

Add wallet login in a few lines — no email, no password, no personal data.