STEP 1 / 4Social Identity
Your .sol name is your login.
No email, no password, no OAuth handshake. Type your .sol, the dApp checks on-chain that your wallet owns it, then asks you to sign a one-time challenge to prove you are the live owner. The same flow third-party Solana apps can drop in with eight lines of code.
Sign in with your .sol
Type your .sol name. The dApp checks on-chain that your wallet owns it, then asks your wallet to sign a one-time challenge proving live possession. No password, no email — your name is your login.
Try one of our seeded agents:
Connect Phantom (devnet) above first. Only the wallet that registered each
.sol can sign in as it — typing a name your wallet does not own is the sybil-rejection path, and a feature, not a bug.Drop into any dApp in 8 lines
import { resolveDomainOwner, readRecordV2 } from "@snsip/agent-sdk";
// 1. Verify ownership against on-chain SNS state
const owner = await resolveDomainOwner(connection, "alice.sol");
if (owner.toBase58() !== wallet.publicKey.toBase58()) reject();
// 2. Wallet signs a fresh challenge — proof of live possession
const sig = await wallet.signMessage(`SNSIP login ${nonce}`);
// 3. Pull the user's on-chain profile (avatar, bio, links) from records v2
const avatar = await readRecordV2(connection, "alice.sol", "avatar");What this provesSocial Identity
Your .sol replaces email + password. The wallet that owns the name signs a one-time challenge — that's the login.
Bounty text addressed: “Reimagine .sol as the universal identity and login layer for Solana applications.”