SNSIP-Agentdevnet
STEP 1 / 4Social Identity
HomeNext: Sybil resistance
Sign in with .sol

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.

Next → Step 2: Sybil resistance