Phantom을 Web App에 연결하면서 ‘Login’에 대한 생각이 바뀌었다

발행: (2026년 4월 28일 AM 10:05 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Overview

#100DaysOfSolana 4일 차에 브라우저 지갑에 연결되는 작은 Vite 앱을 만들었습니다. 기능 자체는 약 30줄의 코드에 불과하지만, 이로 인해 일어난 사고 방식의 전환은 측정하기 어렵습니다.

Minimal Web App

다음과 같은 최소 웹 앱:

  • @wallet-standard/appgetWallets() 로 설치된 지갑을 감지
  • wallet.chains 를 확인해 Solana 호환 지갑만 필터링
  • 한 번의 버튼 클릭으로 Phantom 연결 요청
  • 연결된 주소와 devnet 잔액 표시
import { getWallets } from "@wallet-standard/app";

const { get } = getWallets();
const solanaWallets = get().filter(wallet =>
  wallet.chains.some(chain => chain.startsWith("solana:"))
);

API 키 없음. 백엔드 없음. 세션 관리 없음. 모든 것을 지갑이 처리합니다.

Trust Model Comparison

Web 2에서는 “Sign in with Google” 이 편리한 기능처럼 보입니다: 신원을 Google에 넘기고, Google이 앱에 토큰을 발급합니다. 앱은 Google을 신뢰하고, 사용자는 Google을 신뢰합니다. 모든 것이 Google을 통해 흐릅니다.

Phantom을 사용할 때는 앱이 개인 키를 절대 보지 못하고 중앙 인증 서버와도 통신하지 않습니다. 앱은 지갑 확장 프로그램에 연결 요청을 보내고, 지갑은 사용자가 승인하도록 프롬프트합니다. 사용자가 승인하면 앱은 공개 주소만 받습니다—그 외는 없습니다. 이후 서명이 필요한 모든 행동은 동일한 승인 흐름을 거칩니다.

신뢰 모델이 완전히 뒤바뀝니다:

  • 앱은 당신을 인증하지 않습니다.
  • 당신이 스스로 인증하고, 앱은 그 결과만 관찰합니다.

“Sign in with Phantom” 은 “Web 3용 Google 로그인” 이 아닙니다. 여권을 보여주는 것에 가깝습니다: 앱은 당신이 누구인지에 대한 증명을 보지만, 여권 자체는 절대 보관하지 않습니다.

Looking Ahead

챌린지 2주 차는 트랜잭션 작성과 온‑체인 토큰 이동에 초점을 맞춥니다. 사용자가 버튼을 클릭하고, Phantom이 승인을 요청하고, 트랜잭션이 devnet에 올라가는 전체 흐름을 직접 경험해 보는 것이 기대됩니다.

Call for Feedback

함께 따라하고 있다면, 아래에 지갑 설정 경험을 남겨 주세요. 브라우저‑지갑 모델에 대해 놀란 점이 있었나요?

#100DaysOfSolana 여정의 일부.

0 조회
Back to Blog

관련 글

더 보기 »