<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Liu</title>
    <description>The latest articles on Forem by Liu (@neuropunk87).</description>
    <link>https://forem.com/neuropunk87</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889465%2Fd7dcdb13-fa83-4872-95f4-661676c43f41.jpeg</url>
      <title>Forem: Liu</title>
      <link>https://forem.com/neuropunk87</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/neuropunk87"/>
    <language>en</language>
    <item>
      <title>Your Identity on Solana: Think "SSH Keys", Not "Usernames"</title>
      <dc:creator>Liu</dc:creator>
      <pubDate>Tue, 28 Apr 2026 12:31:56 +0000</pubDate>
      <link>https://forem.com/neuropunk87/your-identity-on-solana-think-ssh-keys-not-usernames-444j</link>
      <guid>https://forem.com/neuropunk87/your-identity-on-solana-think-ssh-keys-not-usernames-444j</guid>
      <description>&lt;p&gt;If you've built Web2 apps, the word identity probably makes you think of logins: email + password, OAuth with Google, GitHub usernames, sessions, JWTs, "Forgot password?" flows, and admin dashboards that can ban or restore an account.&lt;/p&gt;

&lt;p&gt;On Solana (and most blockchains), identity starts from a different primitive:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a cryptographic keypair&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once that clicks, the rest - wallets, accounts, token ownership, signing-starts to feel less like magic and more like a familiar security model you already trust in other contexts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web2 identity is "accounts in someone else's database"
&lt;/h2&gt;

&lt;p&gt;In Web2 your identity is fragmented across services:&lt;/p&gt;

&lt;p&gt;GitHub: &lt;code&gt;@yourname&lt;/code&gt;&lt;br&gt;
Work: your corporate email&lt;br&gt;
Bank: phone number + KYC&lt;br&gt;
Random SaaS tool: "Sign in with Google"&lt;br&gt;
Each identity lives inside a company's database and rules. You "own" the account as long as the company recognizes you as the legitimate user. If something goes wrong, you depend on their processes:&lt;/p&gt;

&lt;p&gt;password resets&lt;br&gt;
support tickets&lt;br&gt;
account recovery&lt;br&gt;
moderation decisions&lt;br&gt;
region restrictions&lt;br&gt;
Even if the system is secure, the underlying idea is: a service provider grants access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solana identity is "proof by signature"
&lt;/h2&gt;

&lt;p&gt;On Solana, there isn't a global "sign in" service. Instead, you prove who you are by doing something only you can do:&lt;/p&gt;

&lt;p&gt;signing with your private key.&lt;/p&gt;

&lt;p&gt;A Solana &lt;strong&gt;keypair&lt;/strong&gt; contains:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public key&lt;/strong&gt; → your on-chain address (shareable)&lt;br&gt;
&lt;strong&gt;Private key&lt;/strong&gt; → your proof of ownership (never share)&lt;br&gt;
When you create a transaction (send SOL, mint a token, interact with a program), your wallet signs it with the private key. Validators can verify the signature using the public key, without ever learning the private key.&lt;/p&gt;

&lt;p&gt;This is the key difference:&lt;/p&gt;

&lt;p&gt;Web2: "I know the password" (or I have an OAuth token)&lt;br&gt;
Solana: "I can produce a valid cryptographic signature"&lt;br&gt;
No password database. No centralized recovery. No admin override.&lt;/p&gt;

&lt;h2&gt;
  
  
  The best analogy: SSH keys
&lt;/h2&gt;

&lt;p&gt;If you've used SSH, this will feel extremely familiar.&lt;/p&gt;

&lt;p&gt;With SSH:&lt;/p&gt;

&lt;p&gt;You generate a keypair.&lt;br&gt;
You put the public key on a server (in &lt;code&gt;authorized_keys&lt;/code&gt;).&lt;br&gt;
You prove you're allowed in by signing a challenge with your private key.&lt;br&gt;
Solana works similarly, except:&lt;/p&gt;

&lt;p&gt;the "server" is the entire network&lt;br&gt;
the same keypair works across every Solana app&lt;br&gt;
the "authorized actions" aren't shell access, but transaction permissions&lt;br&gt;
Your identity isn't a profile page. It's the ability to sign.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public keys aren't usernames (and that's intentional)
&lt;/h2&gt;

&lt;p&gt;A Solana address is essentially a &lt;strong&gt;32-byte Ed25519 public key&lt;/strong&gt;, commonly shown in &lt;strong&gt;Base58&lt;/strong&gt; encoding, like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Base58 is used because it avoids visually confusing characters (like &lt;code&gt;0&lt;/code&gt; vs &lt;code&gt;O&lt;/code&gt;, &lt;code&gt;I&lt;/code&gt; vs &lt;code&gt;l&lt;/code&gt;). But more importantly, an address is not a "name." It's not stored in a user table. It doesn't need to be "available." It's just a public key.&lt;/p&gt;

&lt;p&gt;In Web2, a username exists because a company maintains a mapping:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;username -&amp;gt; account record -&amp;gt; permissions&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;On Solana, the mapping is more like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;public key -&amp;gt; what the blockchain state says this key controls&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's why you can't email Solana support to "claim" an address or reset it. The network doesn't know what an email is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wallets are identity managers (not identity providers)
&lt;/h2&gt;

&lt;p&gt;So where do wallets fit in?&lt;/p&gt;

&lt;p&gt;A wallet (Phantom, Solflare, Ledger, a CLI keypair file, etc.) is basically a tool to:&lt;/p&gt;

&lt;p&gt;store private keys (or help you derive them from a seed phrase)&lt;br&gt;
show you your public address&lt;br&gt;
sign transactions when you approve&lt;br&gt;
When a dApp says "Connect wallet," it's not doing OAuth. It's asking:&lt;/p&gt;

&lt;p&gt;"Do you control this public key, and will you sign messages/transactions to prove it?"&lt;/p&gt;

&lt;p&gt;This is why "identity" on Solana is portable. Your keypair works across apps without integrations, because every app can rely on the same cryptographic standard: signature verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ownership beats permissions
&lt;/h2&gt;

&lt;p&gt;In Web2, you often get permission to access stuff. In Solana, you have ownership backed by cryptography.&lt;/p&gt;

&lt;p&gt;If your public key owns tokens, NFTs, or has authority over an on-chain account, that's not because a company granted it. It's because Solana programs enforce rules like:&lt;/p&gt;

&lt;p&gt;only the signer for this public key can move these tokens&lt;br&gt;
only the authorized key can update this account's data&lt;br&gt;
only the governance voter can cast this vote&lt;br&gt;
That's what people mean when they say "self-custody." It's empowering - but it also comes with responsibility.&lt;/p&gt;

&lt;p&gt;No password reset means: lose the private key, lose the identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What on-chain identity enables
&lt;/h2&gt;

&lt;p&gt;Once identity is "a key that can sign," a bunch of things become possible across the whole ecosystem:&lt;/p&gt;

&lt;p&gt;You can hold tokens and use them anywhere.&lt;br&gt;
You can interact with programs (DeFi, NFTs, games) without creating new accounts each time.&lt;br&gt;
You can build reputation tied to an address: governance participation, on-chain activity, achievements.&lt;br&gt;
You can have multiple identities: one wallet for public activity, another for savings, another for dev/testing.&lt;br&gt;
It's not just a replacement for usernames - it's a universal authentication primitive for an entire network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;If Web2 identity is "a bunch of accounts I rent from companies," then Solana identity is:&lt;/p&gt;

&lt;p&gt;"a keypair I control, and my signature is my login."&lt;/p&gt;

&lt;p&gt;Once you start viewing your wallet like an SSH agent and your address like a public key, Solana becomes much easier to reason about.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
