계정 & 결제
Web3Map 계정의 모든 것: 로그인 방법, 연결된 지갑, My Page, 플랜 상태, 그리고 Base에서 USDC로 Pro 시간을 구매하는 방법을 다룹니다.
Web3Map은 계정 없이도 사용할 수 있습니다. 앱을 여는 순간 공개 데이터에 대한 전체 읽기 권한을 가진 게스트 세션이 자동으로 발급됩니다. 계정은 아이덴티티(커뮤니티 보드의 닉네임), 두 번째 로그인 수단(지갑), 또는 유료 플랜이 필요할 때 유용해집니다. 유료 액세스는 구독이 아니라 시간으로 판매됩니다. Pro 시간 블록을 구매하면 시간이 차감되고, 모두 소진되면 Free 기능 세트로 자연스럽게 돌아갑니다.
티어 한눈에 보기
| 티어 | 획득 방법 | 앱에 표시되는 설명 |
|---|---|---|
| 게스트 | 자동 발급, 계정 불필요. 로그아웃 상태로 앱을 열면 발급됩니다. | My Page에는 표시되지 않습니다. /mypage를 여는 게스트는 로그인 페이지로 리디렉션됩니다. |
| Free | 이메일 또는 지갑으로 계정을 생성합니다. | Core graph access for anyone exploring the arbitrage network. |
| Pro | Membership Plans에서 Base의 USDC로 구매합니다. | Full access to the live arbitrage surface. |
| Max | 현재 앱 내에서는 구매할 수 없습니다. 체크아웃에서는 Pro 시간만 구매할 수 있습니다. | Maximum premium access for the live arbitrage surface. |
| Admin | 내부 운영자 티어로, 일반 사용자에게는 제공되지 않습니다. | Internal operator tier with unrestricted access. |
계정이 추가하는 것과 Pro가 추가하는 것
계정 (Free)
커뮤니티 보드와 상단 내비게이션에 표시되는 닉네임, 보드에 글을 쓸 수 있는 권한, My Page 접근, 그리고 두 번째 로그인 수단으로 지갑을 연결하는 기능이 추가됩니다. 게스트는 글을 쓸 수 없고 My Page를 열 수 없습니다.
Pro
프리미엄 아비트라지 스냅샷(공개 스냅샷의 60초 대비 30초마다 갱신), 편집 가능한 필터와 임계값, DEX 레그의 컨트랙트 주소 표시, 그리고 비공개 Telegram 알림이 제공됩니다. 각 항목이 실제로 어떻게 열리는지는 Arbitrage 대시보드와 Telegram 알림을 참고하세요.
My Page 둘러보기
My Page는 /mypage에 있으며 이 가이드의 모든 내용이 모여 있는 곳입니다. 로그인된 계정이 필요하며, 게스트는 /login으로 리디렉션됩니다.
- 상단 내비게이션
왼쪽의 브랜드 마크 WEB3MAP을 누르면 Graph 뷰로 돌아갑니다. 그 뒤로 네 개의 탭이 이어집니다: Graph, Arbitrage, Board, My Page(이 페이지에 있는 동안 항상 강조 표시). 오른쪽에는 게스트에게 Login 버튼이 보이고, 로그인한 사용자에게는 로그아웃 아이콘 옆에 닉네임이 표시됩니다. 닉네임이 설정되지 않았다면 라벨은 Member로 대체됩니다.
- 왼쪽 사이드바
맨 위에는 닉네임의 첫 글자를 보여주는 아바타(없으면 W), 닉네임(없으면 Member), 그리고 티어 라벨 Free tier, Pro tier, Max tier, Admin 중 하나가 표시됩니다. 그 아래에 두 개의 링크 그룹이 이어집니다: Profile과 Overview가 있는 Account, 그리고 Membership Plans와 Premium Alerts가 있는 Billing입니다. 링크를 클릭하면 해당 섹션으로 부드럽게 스크롤되고 URL 해시가 갱신되며, 직접 스크롤하면 활성 링크가 현재 위치를 따라갑니다. 푸터에는 All systems normal 문구와 함께 녹색 점, 그리고 버전 v1.0이 표시됩니다.
- 사이드바 접기 토글
토글 버튼(접근성 라벨 Collapse sidebar와 Expand sidebar)으로 사이드바를 아이콘만 남기고 접을 수 있습니다. 모바일에서는 사이드바가 접힌 상태로 시작합니다.
- 섹션 순서
메인 컬럼은 항상 위에서 아래로 다음 순서로 쌓입니다: Connected Methods와 Display name(프로필 섹션), Current plan 카드(개요), Membership Plans, 마지막으로 Premium alerts. 페이지 푸터에는 WEB3MAP과 Account · v1.0이 표시됩니다.
참고: Premium Alerts 사이드바 항목과 Premium alerts 섹션은 Pro, Max, 운영자 계정에서만 렌더링됩니다. Free 계정에서는 이 섹션이 흐리게 표시되는 것이 아니라 아예 존재하지 않습니다. Telegram 알림 설정은 별도 페이지에서 다룹니다: Telegram 알림.
팁: My Page의 플랜 상태는 30초마다 자동으로 갱신됩니다. 구매나 만료 후 아무것도 하지 않아도 약 30초 안에 페이지가 최신 상태를 따라잡습니다.
로그인
로그인 페이지는 /login에 있습니다. 페이지에는 Cross-chain arbitrage intelligence 태그라인이 붙은 Web3Map 로고, Sign In / Sign Up 탭이 있는 이메일 폼, or 구분선, 지갑 버튼, v1.0 · secured access 문구, 그리고 맨 아래의 ← Continue as guest 버튼이 표시됩니다. 로그인 방법은 세 가지입니다: 이메일과 비밀번호, EVM 지갑, 게스트 모드.
이메일과 비밀번호
- Sign In / Sign Up 탭
기존 계정 로그인과 새 계정 생성 사이를 전환합니다. 아래의 폼 필드는 탭에 따라 바뀝니다.
- EMAIL 필드
플레이스홀더는 you@example.com입니다. 이메일이 계정 식별자입니다. 이메일 인증 단계는 없습니다: 주소를 링크나 코드로 확인하지 않으며, 가입 직후 계정이 바로 활성화됩니다.
- PASSWORD 필드
플레이스홀더는 Sign In 모드에서 Enter password, Sign Up 모드에서 Min 4 characters입니다. 서버는 최소 4자를 요구하며, 더 짧은 비밀번호는 가입 시 거부됩니다.
- NICKNAME 필드 (Sign Up 전용)
플레이스홀더는 How you'll appear in chat입니다. 2자에서 32자까지 가능합니다. 커뮤니티 보드와 상단 내비게이션에 사용되는 표시 이름이며, 나중에 My Page에서 변경할 수 있습니다.
- 제출 버튼
모드에 따라 Sign In, Create Account, Complete Migration 중 하나로 표시됩니다. 처리 중에는 Signing in..., Creating account..., Completing migration...으로 바뀝니다.
주의: 현재 셀프서비스 비밀번호 재설정 기능이 없습니다. 비밀번호를 잊어도 의지할 복구 폼이 없으므로 자격 증명을 안전한 곳에 보관하세요. 실용적인 안전망은 가입 후 My Page에서 지갑을 연결해 두는 것입니다. 그러면 지갑이 같은 계정으로 들어가는 두 번째 독립적인 경로가 됩니다.
레거시 계정의 일회성 마이그레이션
일부 오래된 계정은 첫 로그인 시 일회성 업그레이드가 필요합니다. 해당되는 경우 로그인 시도가 실패하는 대신 파란색 안내가 표시됩니다: This account needs a one-time migration step. Review the password and submit again to complete migration. 입력한 비밀번호가 정확한지 확인하고 폼을 다시 제출하세요. 버튼이 Complete Migration으로 바뀌며, 이 한 번의 추가 제출 후 정상적으로 로그인됩니다. 이 단계는 다시 반복되지 않습니다.
지갑 로그인
or 구분선 아래의 Sign in/up with Wallet 버튼(OKX와 MetaMask 아이콘이 겹쳐 표시됨)을 누르면 지갑 선택 창이 열립니다.
- OKX Wallet
OKX 브라우저 확장 프로그램의 Ethereum(EVM) 측으로 로그인합니다. 확장 프로그램이 설치되어 있지 않거나 EVM 프로바이더를 노출하지 않으면 OKX Wallet (Ethereum) not detected. 메시지가 표시됩니다.
- MetaMask
MetaMask 확장 프로그램으로 로그인합니다. 설치되어 있지 않으면 MetaMask not detected. 메시지가 표시됩니다.
지원되는 지갑은 이 두 개가 전부이며, 둘 다 EVM 지갑입니다. Solana 지갑은 지원되지 않습니다. 제품에서 관련된 유일한 메시지는 Solana wallets are not available right now. 오류뿐입니다.
- 지갑을 선택합니다.
확장 프로그램이 계정 연결을 요청합니다. 마지막으로 사용한 지갑은 다음번을 위해 기억됩니다.
- 일회성 챌린지에 서명합니다.
서버가 고유한 챌린지 메시지를 생성하고 지갑이 서명을 요청합니다. 이는 일반 메시지 서명입니다: 트랜잭션이 아니고, 자금을 옮기지 않으며, 가스 비용도 들지 않습니다. 서명은 해당 주소를 제어하고 있음을 증명합니다.
- 로그인 완료.
이전에 본 적이 있는 주소라면 해당 계정으로 로그인됩니다. 지갑 선택 창 푸터에 새 주소에 대한 규칙이 명시되어 있습니다: New wallets create an account automatically. 완전히 새로운 지갑은 이메일이 연결되지 않은 새 Free 계정으로 들어가며, 이메일은 나중에 추가할 수 있습니다(Connected Methods 참고).
선택 창은 Close wallet picker 버튼, Escape 키, 또는 배경 클릭으로 닫을 수 있지만, 서명이 진행 중일 때는 잠겨서 절반쯤 끝난 로그인이 방치되지 않도록 합니다.
게스트 모드
계정 없이 앱을 열면 게스트 세션이 조용히 발급되므로, 둘러보기 위해 로그인 페이지를 방문할 필요가 없습니다. 로그인 페이지의 ← Continue as guest는 같은 동작을 명시적으로 수행합니다: 먼저 이전 세션 복원을 시도하고, 없을 때만 새 게스트 세션을 발급합니다. 게스트 세션은 만료되면 자동으로 갱신됩니다. 게스트가 막히는 곳은 보드 글쓰기와 My Page뿐이며, My Page는 게스트를 /login으로 리디렉션합니다.
로그인 오류 메시지
| 메시지 | 표시 시점 | 대처 방법 |
|---|---|---|
| Incorrect email or password. | 이메일과 비밀번호 조합이 어떤 계정과도 일치하지 않았습니다. | 두 필드를 다시 확인하세요. 비밀번호 재설정 기능이 없다는 점을 기억하세요. 지갑도 연결해 두었다면 대신 지갑으로 로그인하세요. |
| Too many recent sign-in attempts. Please wait {N} second(s) and try again. | 반복된 시도에 대한 속도 제한입니다. 서버가 대기 시간을 알려주지 않으면 메시지는 Please wait a moment and try again.으로 끝납니다. | 명시된 초만큼 기다린 후 다시 시도하세요. |
| This account has been disabled. | 계정이 존재하지만 비활성화되었습니다. | 자격 증명 문제가 아니므로 재시도해도 해결되지 않습니다. |
| Login failed: {status} | 그 외 모든 서버 응답에 대한 일반 폴백입니다. | 다시 시도하세요. 계속되면 서비스에 일시적인 문제가 있을 수 있습니다. |
Connected Methods
My Page의 첫 번째 카드는 Connected Methods(키커 Sign-in)입니다. 부제가 계정 모델을 정확히 설명합니다: Each account may hold one email identity and up to one linked wallet in the current MVP. 즉, 하나의 계정에는 최대 두 개의 문, 이메일 하나와 지갑 하나로만 들어갈 수 있으며, 이 카드에서 두 문을 모두 관리합니다.
- Email & Password 행
이메일 주소가 연결되어 있으면 주소를 표시하고(주소를 가져올 수 없으면 Enabled), 없으면 Not linked를 표시합니다. 페이지가 데이터를 불러오는 동안에는 Loading...으로 표시됩니다. 오른쪽 칩은 연결 시 Active, 아니면 None입니다.
- Attach email & password
이메일 아이덴티티가 아직 없는 지갑 우선 계정에서만 표시됩니다. 인라인 폼은 이메일(플레이스홀더 you@example.com)과 비밀번호(플레이스홀더 Create a password)를 입력받으며, 제출 버튼은 Attach email & password, 처리 중에는 Saving...으로 표시됩니다. 성공하면 세션 토큰이 갱신되고 카드가 업데이트됩니다. 구체적인 이유 없이 실패하면 인라인 오류는 Failed to add email & password입니다. 지갑 전용 계정이라면 이메일 연결을 권장합니다. 브라우저 확장 프로그램에 의존하지 않는 두 번째 로그인 경로가 생기기 때문입니다.
- Wallet 행
연결된 주소를 축약형으로 표시합니다. 앞 6자, 줄임표, 마지막 6자 순입니다(예:
0x1234…abcdef). 없으면 Not linked입니다. 칩은 Active 또는 None입니다.- Link a wallet
아직 지갑이 연결되지 않았을 때 사용할 수 있습니다. 로그인 페이지와 같은 지갑 선택 창이 연결 모드로 열립니다: 키커 Account, 제목 Link a Wallet, 부제 Attach a wallet to this account, 푸터 규칙 One wallet per account in MVP. 흐름은 지갑 로그인과 동일합니다: 지갑을 연결하면 서버가 챌린지를 발급하고, 지갑이 일반 메시지에 서명하며(트랜잭션 없음, 가스 없음), 연결이 완료됩니다. 이후 아이덴티티 목록이 자동으로 새로고침됩니다.
- Unlink wallet
연결된 지갑을 계정에서 제거합니다. 처리 중에는 버튼이 Unlinking...으로 표시되고, 일반 실패 메시지는 Failed to unlink wallet입니다. 연결 해제 후에는 그 지갑으로 로그인할 수 없고 계정은 이메일로만 접근할 수 있으므로, 해제 전에 이메일 아이덴티티가 존재하고 비밀번호를 알고 있는지 확인하세요.
하드 게이트: 연결된 지갑은 결제 지갑이기도 합니다. Pro 결제는 정확히 이 주소에서 서명되어야 합니다. 체크아웃 시 지갑 확장 프로그램에 다른 계정이 활성화되어 있으면 결제가 Active wallet does not match the linked billing wallet. 메시지와 함께 멈추며, 지갑을 연결된 주소로 되돌릴 때까지 진행되지 않습니다. 어떤 주소를 연결할지 신중하게 결정하세요. 계정의 열쇠이자 결제 출처이기 때문입니다.
표시 이름
Connected Methods 아래에는 Display name 카드(키커 Profile)가 있습니다. 부제가 이름이 표시되는 위치와 규칙을 모두 설명합니다: Your nickname appears on the community board and in the top nav. 2 to 32 characters. 닉네임은 보드에서의 공개 아이덴티티이므로, 정돈된 상태로 유지할 가치가 있는 단 하나의 프로필 필드입니다.
- Nickname 행
현재 닉네임(설정되지 않았으면 대시 플레이스홀더)을 연필 모양 Edit 버튼 옆에 표시합니다.
- Edit
행을 텍스트 입력으로 전환하며 {n}/32 형식의 실시간 글자 수 카운터가 표시됩니다. 검증은 앞뒤 공백을 제거한 값에 대해 실행됩니다: 2자에서 32자 사이여야 하며, 그렇지 않으면 인라인 오류 Nickname must be between 2 and 32 characters.가 표시됩니다.
- Save / Cancel
Save는 변경을 저장하고(처리 중 라벨은 Saving...), Cancel은 변경을 버립니다. 서버가 구체적인 이유 없이 업데이트를 거부하면 폴백 오류는 Failed to update nickname.입니다. 새 이름은 상단 내비게이션과 이후의 보드 활동에 즉시 반영됩니다.
현재 플랜
개요 섹션은 Current plan 키커가 붙은 단일 히어로 카드입니다. "지금 어떤 플랜이고 얼마나 남았는가"에 대한 정확하고 항상 최신인 답입니다. 카드의 모든 내용은 실시간 엔타이틀먼트에서 파생되며, 페이지가 30초마다 다시 확인합니다.
- 티어 이름과 설명
큰 제목이 현재 티어입니다: Free, Pro, Max, Admin 중 하나이며, 그 아래에 해당하는 한 줄 설명이 표시됩니다(정확한 문자열은 위의 티어 표에 있습니다).
- 상태 배지
셋 중 하나입니다: 만료될 것이 없는 Free에서는 Complimentary, 유료 기간이 끝났을 때는 Expired, 그 외에는 Active. 라이프타임 엔타이틀먼트는 절대 Expired를 표시하지 않습니다.
- Time remaining
카드 오른쪽의 카운트다운입니다. 형식은 남은 시간에 따라 달라집니다. 아래 표를 참고하세요.
- 진행 막대
현재 유료 기간 중 경과한 비율만큼 채워집니다(라이프타임 플랜은 가득 찬 막대를 표시). 왼쪽 라벨은 Started와 현지 형식의 기간 시작일(예: Jun 12, 2026)이며, 없으면 대시입니다. 중앙에는 {n}% elapsed, 라이프타임 플랜에서는 Lifetime이 표시됩니다. 오른쪽 라벨은 Expires와 종료일입니다. 라이프타임 플랜에서는 라벨이 Validity로 바뀌고 날짜는 대시입니다.
- Member와 Account
카드 푸터에는 Member(닉네임)와 Account, 즉
#XXXX-XXXX형식의 짧은 일련번호가 표시됩니다. 일련번호는 계정 id의 처음 8자를 대문자로 바꾸고 4-4로 나눈 값입니다. 계정을 가리키는 편리하고 안정적인 참조입니다.
카운트다운 형식
| 남은 시간 | 큰 숫자 | 아래 캡션 |
|---|---|---|
| 라이프타임 액세스 | ∞ | lifetime access |
| 남은 시간 없음 (또는 기간이 없었던 경우) | 0과 단위 d | no active period |
| 7일 이상 | {days}와 단위 d | {hours}h left today |
| 1일에서 7일 | {days}d | {hours}h {minutes}m |
| 1시간에서 1일 | {hours}h | {minutes}m |
| 1시간 미만 | {minutes}m | ending soon |
| 엔타이틀먼트가 아직 로드되지 않음 | 대시 | entitlement not set |
Membership Plans
결제 섹션의 제목은 Membership Plans(키커 Access)이며, 부제가 전체 가격 모델을 제품에 렌더링되는 그대로 한 문장으로 설명합니다: Pay only for the time you want. No subscription, no auto-renewal — Pro stays active until the balance you purchased runs out.
이 문장은 문자 그대로입니다. 제품 어디에도 반복 청구가 없습니다. 원하는 크기의 Pro 시간 블록을 구매하면 블록이 초 단위로 소비되고, 아무것도 갱신되지 않습니다. 가격 자체는 실시간입니다: 섹션이 열릴 때 서버에서 현재 숫자를 불러옵니다. 로딩 중에는 Loading current Pro pricing...이 표시되고, 가져오기에 실패하면 Pricing temporarily unavailable.이 표시됩니다.
Free 카드
Free 카드의 가격은 $0이고 보조 라벨은 Complimentary · always on이며, 세 가지 포함 기능을 나열합니다:
- Graph + asset explorer
- Public arbitrage snapshot (30s)
- Community board access
카드 모서리 태그는 Free 플랜일 때 Current, 그 외에는 Baseline으로 표시됩니다. 카드의 버튼 영역은 정보 표시용일 뿐 클릭할 수 없습니다: Free 계정에서는 Current baseline, 유료 티어에서는 Always included로 표시되며, 결제를 해도 무료 기능이 사라지지 않는다는 점을 상기시켜 줍니다.
Pro 카드
- 실시간 가격 칩
from, 일일 달러 금액, / day 순으로 표시됩니다. 일일 금액은 현재 월 가격을 30으로 나눈 값으로 실시간 서버 가격에서 계산되며, 이 문서가 구체적인 숫자를 적지 않는 이유이기도 합니다. 할인이 활성화되면 원래 일일 가격이 옆에 취소선으로 표시되고, 할인 배지에 현재 할인 라벨이 표시됩니다.
- No auto-renewal 칩
X 아이콘이 있는 작은 칩입니다. 마우스를 올리면 툴팁 Time you buy never auto-renews.가 표시됩니다. "구독 없음"은 이 결제 모델에서 가장 중요한 단 하나의 사실이므로, 구매가 일어나는 바로 그 자리에 이 사실이 보이도록 칩이 존재합니다.
- 예시 줄
가격 아래에 Example 표기와 함께 실시간 월 금액, 그리고 activates 30 days. Pick any amount or duration at checkout.이 이어집니다. 일일 금액이 실제 구매에서 무엇을 의미하는지 보여주는 기준점입니다. 가격을 불러오지 못한 경우 이 줄에는 대신 Pricing temporarily unavailable.이 표시됩니다.
- 구매 CTA
클릭 가능한 상태일 때 카드의 버튼이 업그레이드 모달을 엽니다. 라벨은 티어와 가격 상태에 따라 달라집니다. 아래 표를 참고하세요.
| 버튼 라벨 | 표시 시점 | 클릭 가능 여부 |
|---|---|---|
| Start Pro | Free 플랜일 때. | 예, 업그레이드 모달을 엽니다. |
| Add more time | 이미 Pro일 때. 구매는 기존 잔액 위에 쌓입니다. | 예, 업그레이드 모달을 엽니다. |
| Max access | Max일 때. 체크아웃에서는 Pro 시간만 구매할 수 있어 구매할 것이 없습니다. | 아니요. |
| Admin access | 운영자 계정. | 아니요. |
| Loading pricing... | 실시간 가격을 아직 가져오는 중입니다. | 아니요, 잠시 기다리세요. |
| Pricing unavailable | 가격 가져오기가 실패했습니다. | 아니요, 나중에 페이지를 다시 로드하세요. |
참고: 결제로 부여되는 시간은 엄격하게 비례합니다: 지불한 달러는 실시간 월 요율로 Pro 시간(초)으로 변환됩니다(월 가격 전액은 30일, 절반은 15일, 이런 식으로 초 단위까지 내려갑니다). 일부 긴 기간에는 기간 할인이 적용되며, 체크아웃이 해당 프리셋 옆에 할인을 표시합니다. 모든 요율, 할인, 최소 구매 금액은 실시간 정책 값이므로, 다른 어디에 적힌 것보다 항상 앱의 숫자를 신뢰하세요.
Pro 업그레이드: 결제 단계별 안내
Pro는 x402 결제 프로토콜을 사용해 Base 네트워크에서 단 한 번의 일회성 USDC 전송으로 결제됩니다. 사용자 입장에서는 연결된 지갑의 typed-data 서명 한 번이 결제의 전부입니다. 구독이 생성되지 않고, 다시 청구할 수 있는 어떤 것도 저장되지 않으며, 모달이 명시적인 상태 줄과 함께 모든 단계를 안내합니다.
주의: 연결된 EVM 지갑이 유일한 전제 조건입니다. 계정에 연결된 지갑이 없으면 모달에 빨간색 메시지 Link an EVM wallet before upgrading.이 표시되고, 지갑이 연결될 때까지 모든 결제 시도가 오류와 함께 중단됩니다. 먼저 Connected Methods에서 지갑을 연결하세요. 지갑이 연결되어 있으면 모달이 상태 줄 아래에 Linked wallet:과 축약된 주소로 이를 확인해 줍니다.
모달 구성
- 헤더
키커 x402 · Base USDC, 제목 Upgrade to Pro, 그리고 Close 버튼. 키커가 결제 레일의 이름을 표시하므로, 어떤 일이 일어나기 전에 지갑이 무엇과 상호작용할지 알 수 있습니다.
- Price by 토글
두 가지 모드가 있습니다: USD amount(지출할 금액을 입력하면 살 수 있는 시간이 표시됨)와 Duration(원하는 기간을 입력하면 비용이 표시됨). 모달은 현재 월 가격이 미리 채워진 USD amount 모드로 열리고, 그 금액에 대한 견적이 즉시 생성되어 첫 순간부터 요약이 채워집니다.
- You pay 카드
힌트는 in Base USDC입니다. $ 접두사와 USD 접미사가 있는 달러 입력 필드입니다. 카드 푸터는 USD 모드에서 Buys(이어서 결과 기간), Duration 모드에서 Equals로 표시됩니다. 기간은 헤드라인과
{d}d {h}h {m}m {s}s같은 축약형 두 가지로 표시됩니다. 두 카드 사이의 linked 커넥터는 두 카드가 항상 같은 견적을 양쪽에서 설명한다는 것을 나타냅니다.- You get 카드
힌트는 Pro access time이고, 선택에 기간 할인이 적용되는 경우 할인 라벨 뒤에 price가 붙습니다. Days, Hours, Min, Sec 라벨이 붙은 4필드 기간 그리드(각 플레이스홀더 0)가 있어 초 단위까지 구매할 수 있습니다. 푸터는 Duration 모드에서 Costs, USD 모드에서 Equals로 표시되고, 그 뒤에 달러 금액과 on Base가 이어집니다(네트워크 라벨은 견적에서 가져오며, Base가 기본값이자 프로덕션 네트워크입니다).
- 기간 프리셋
1 hour, 1 day, 1 week, 30 days, 90 days, 1 year 칩이 한 줄로 표시됩니다. 기간 할인 대상이 되는 프리셋은 칩 자체에 할인 라벨을 표시하므로, 가격이 꺾이는 지점을 가장 빨리 확인하는 방법입니다. 기본 기간은 30일입니다.
- 견적 요약 행
견적이 생기면 번호가 매겨진 세 행이 이를 요약합니다. 행 01 Pro access time: 견적이 부여하는 정확한 기간. 행 02 You pay: 정확한 USDC 금액과 on Base. 행 03 Quote valid for: {m}:{ss} remaining 형식의 실시간 카운트다운과 auto-signed on pay 안내. 견적은 15분간 유효합니다. 60초 미만으로 남으면 경고가 표시됩니다: Quote expires in under 60 seconds. Create a fresh quote if you need more time. 만료된 후에는: Quote expired. Create a fresh quote before paying. 결제가 성공하면 요약에 정산 참조 줄이 추가됩니다: Settlement: 뒤에 참조 번호가 붙습니다.
- 액션 버튼
메인 버튼은 Continue to payment(견적이 없거나 무효화됨), Pay with linked wallet(견적 준비됨), Retry settlement(서명된 결제가 캐시되어 있고 정산만 남음) 순으로 진행됩니다. 진행 중인 단계에서는 비활성화됩니다. 보조 버튼은 상황에 따라 나타납니다: 만료 후 Create fresh quote, 복구 가능한 오류 후 Reset, 그리고 Pro가 활성화되면 모달을 닫는 단일 Done 버튼.
팁: 달러 필드, 기간 그리드, 프리셋 등 어떤 입력이든 수정하면 현재 견적이 즉시 무효화됩니다. 이는 의도된 동작입니다: 견적은 정해진 시간에 대한 정해진 가격이므로 어떤 변경이든 새 견적을 만들어야 합니다. 버튼은 다시 Continue to payment로 돌아갑니다.
결제 시 실제로 일어나는 일
- 견적이 생성됩니다.
서버가 입력한 금액 또는 기간을 실시간 가격 기준의 고정 오퍼로 변환합니다. 상태: Creating quote... 다음 Quote ready. 15분 유효 카운트다운이 시작됩니다.
- 결제가 준비됩니다.
Pay with linked wallet을 누르면 먼저 브라우저 수준의 중복 결제 잠금을 획득하고(두 탭이 동시에 결제할 수 없도록), 연결된 지갑을 다시 검증하며(방금 연결했다면 모달에 잠시 Checking for the linked wallet. If you just linked it, this can take a few seconds.가 표시될 수 있음), 정확한 x402 결제 요구 사항을 가져옵니다. 상태: Preparing x402 payment...
- 지갑이 연결되고 Base로 전환됩니다.
상태: Waiting for wallet connection... 지갑이 다른 네트워크에 있으면 Web3Map이 자동으로 Base로 전환을 요청합니다(상태 Switching wallet to Base...). 지갑에 Base가 아직 설정되어 있지 않으면 네트워크 추가 프롬프트가 먼저 나타납니다. 지갑에서 이 프롬프트들을 승인하세요.
- 주소가 확인됩니다.
활성 지갑 계정은 정확히 연결된 결제 지갑이어야 합니다. 불일치 시 상태 Wallet mismatch와 메시지 Active wallet does not match the linked billing wallet.로 흐름이 중단됩니다. 지갑 확장 프로그램에서 활성 계정을 연결된 주소로 전환한 후 다시 시도하세요.
- 한 번 서명합니다.
상태: Waiting for wallet signature... 지갑에는 트랜잭션 확인이 아닌 typed-data 서명 요청이 표시됩니다. 이 단 한 번의 서명은 견적에 명시된 정확한 USDC 금액만을 승인하며, 그 이상은 아무것도 승인하지 않습니다. 이 흐름에서 서명하는 것은 이것뿐입니다.
- 정산.
서명된 결제가 제출되어 Base에서 정산됩니다. 상태: Submitting payment... 다음 Settling payment... 네트워크가 혼잡하면 모달이 점점 길어지는 간격(시도 사이 5, 10, 20, 그다음 30초)으로 자동 재시도하며, Retrying settlement...와 안내 Payment may still be processing. Retrying settlement in {n}s without asking you to sign again.을 표시합니다. 서명은 재사용되며, 한 번의 결제에 대해 두 번 서명을 요청받는 일은 없습니다.
- 세션이 업그레이드됩니다.
상태: Applying upgraded session... 다음 Refreshing membership... 페이지가 엔타이틀먼트를 다시 읽고(첫 읽기가 늦으면 1, 2, 4초 후 재시도하며 안내 Payment settled. Refreshing your membership again in {n}s. 표시) Pro activated에 도달합니다. Done을 눌러 모달을 닫으면 Current plan 히어로에 새 잔액이 표시됩니다.
상태 줄 용어
모달은 항상 다음 단계 라벨 중 정확히 하나를 대략 이 순서로 표시합니다. 어떤 라벨이 비정상적으로 오래 화면에 떠 있다면, 아래 문제 해결 표에서 어떤 라벨에 사용자 조치가 필요한지 확인할 수 있습니다.
| 상태 라벨 | 의미 |
|---|---|
| Choose amount or duration | 대기 상태. 아직 유효한 견적이 없습니다. 입력값을 설정하세요. |
| Creating quote... | 서버가 선택한 내용의 가격을 산정하는 중입니다. |
| Quote ready | 고정 오퍼가 존재하며 15분 카운트다운이 진행 중입니다. |
| Preparing x402 payment... | 결제 요구 사항을 가져오고 서명 스택을 로드하는 중입니다. |
| Waiting for wallet connection... | 지갑 확장 프로그램에 연결을 요청하는 중입니다. 팝업을 확인하세요. |
| Switching wallet to Base... | 지갑에 네트워크 전환을 요청하는 중입니다. 프롬프트를 승인하세요. |
| Wallet mismatch | 활성 지갑 주소가 연결된 결제 지갑이 아닙니다. 조치가 필요합니다. |
| Waiting for wallet signature... | typed-data 서명 요청이 지갑에 열려 있습니다. 지갑에서 승인하거나 거절하세요. |
| Submitting payment... | 서명된 결제가 정산을 위해 전송되는 중입니다. |
| Settling payment... | Base에서 정산이 진행 중입니다. |
| Retrying settlement... | 정산이 일시적인 오류를 만나 새 서명 없이 재시도되는 중입니다. |
| Applying upgraded session... | 결제가 정산되었고 세션 토큰이 업그레이드되는 중입니다. |
| Refreshing membership... | 구매를 반영하기 위해 페이지가 엔타이틀먼트를 다시 읽는 중입니다. |
| Pro activated | 완료. Done 버튼이 모달을 닫습니다. |
| Payment needs attention | 복구 가능한 오류입니다. 메시지를 읽은 후 Reset 또는 제안된 재시도 버튼을 사용하세요. |
| Payment cannot continue | 이번 시도에 대한 최종 오류입니다. 새 견적으로 처음부터 다시 시작하세요. |
결제 문제 해결
| 메시지 | 의미와 해결 방법 |
|---|---|
| Active wallet does not match the linked billing wallet. | 지갑 확장 프로그램에 다른 계정이 선택되어 있습니다. 확장 프로그램을 열어 모달의 Linked wallet: 옆에 표시된 주소로 전환한 후 다시 시도하세요. 결제는 정확히 그 주소에서만 허용됩니다. |
| Quote expired. Continue to payment to create a fresh quote before paying. | 진행 도중 15분 견적이 만료되었습니다. 청구된 금액은 없습니다. 버튼을 눌러 현재 가격으로 새 견적을 받으세요. |
| Quote expired. Create a fresh quote before paying. | 같은 상황이 제출 전에 감지된 경우입니다. Create fresh quote를 사용하세요. |
| Another billing payment is already in progress in this browser. Finish or close that payment before starting another. | 중복 결제 잠금입니다. 이 브라우저의 다른 탭이나 창에 진행 중인 결제가 있습니다. 그 결제를 완료하거나 닫으세요. 잠금은 10분 후 저절로 해제되기도 합니다. |
| Payment may still be processing. Retry settlement in a few minutes or refresh the page to check Pro status before starting a new payment. | 자동 정산 재시도가 모두 소진되었습니다. 중요: 결제가 여전히 정산될 수 있습니다. 몇 분 기다렸다가 Retry settlement를 누르거나(기존 서명을 재사용합니다), 페이지를 새로고침해 Current plan 카드를 확인한 후에 다시 결제하세요. 그래야 이중 결제를 피할 수 있습니다. |
| Payment settled, but membership refresh is delayed. Refresh the page or wait a moment and check your Pro status before starting another payment. | 결제 자체는 성공했고, 페이지의 멤버십 표시만 지연되고 있습니다. 페이지를 새로고침하세요. 두 번째 결제를 시작하지 마세요. |
| Linked wallet is still syncing. Please wait a moment and try again. | 방금 지갑을 연결했고 서버가 아직 따라잡지 못했습니다. 몇 초 기다렸다가 다시 시도하세요. |
| Linked EVM wallet not available. | 브라우저가 연결된 주소를 보유한 지갑 확장 프로그램에 접근하지 못했습니다. 확장 프로그램이 설치되어 있고, 잠금 해제되어 있으며, 이 사이트에서 사용이 허용되어 있는지 확인하세요. |
| Quote amount is below the minimum purchase | 달러 금액이 실시간 최소 구매 정책보다 낮습니다. 금액을 올리세요. 최소 금액은 고정된 숫자가 아니라 서버 측 값입니다. |
| Quote amount is too small to grant at least one second | 금액이 Pro 0초로 반올림됩니다. 금액을 올리세요. |
| A linked wallet is required for billing | 모달을 열고 견적을 받는 사이에 계정의 연결된 지갑이 사라졌습니다. Connected Methods에서 지갑을 연결하세요. |
| Lifetime entitlements are not billable in v1 | 라이프타임 액세스 계정은 추가 시간을 구매할 수 없습니다. |
| Tier changes are not supported in v1 | 체크아웃은 Pro 시간만 판매하며, 계정을 다른 티어로 전환할 수 없습니다. |
| Payment failed. You can retry or create a new quote. | 일반 실패입니다. 다시 시도하거나, 입력을 수정해 견적을 무효화한 후 처음부터 다시 시작하세요. |
안전: 업그레이드 흐름은 시드 문구나 개인 키를 절대 요구하지 않고, 어떤 주소로 자금을 직접 보내라고 요청하지 않으며, 트랜잭션 확인 창을 열지 않습니다. 표시되는 것은 연결 프롬프트, 선택적인 네트워크 전환 프롬프트, 그리고 견적에 명시된 정확한 USDC 금액에 대한 typed-data 서명 한 번뿐입니다. 그 외의 무언가가 표시된다면 즉시 멈추고 모달을 닫으세요.
플랜 연장과 만료 시 일어나는 일
시간 추가
Pro 사용 중에는 Pro 카드의 버튼이 Add more time으로 표시되며 완전히 동일한 체크아웃을 엽니다. 새 구매는 현재 잔액 위에 쌓입니다: 10일이 남은 상태에서 30일을 구매하면 40일이 됩니다. 만료를 기다릴 필요가 없고, 일찍 충전해도 불이익이 없습니다.
만료 시
구매한 잔액이 소진되면 변경은 자동으로 이루어지며 어떤 것도 파괴하지 않습니다:
- Current plan 히어로의 배지가 Expired로 바뀌고 카운트다운은 0과 no active period를 표시합니다.
- 계정이 Free처럼 동작합니다: 공개 스냅샷, 잠긴 기본 필터, 마스킹된 컨트랙트 주소. Arbitrage 대시보드 페이지에 설명된 그대로입니다.
- Telegram 전송이 중단됩니다. 전송에는 활성 엔타이틀먼트가 필요하기 때문입니다. 봇 연결, 알림 규칙, 음소거 목록은 삭제되지 않고 그대로 유지되며, 시간을 추가하면 전송이 재개됩니다.
- 그 외에는 아무것도 제거되지 않습니다. 닉네임, 연결된 지갑, 보드 게시물, 환경 설정 모두 만료 후에도 유지됩니다.
참고: Pro는 구독이 아니라 구매한 시간이므로 취소할 갱신도, 중단할 반복 청구도 없습니다. 구매한 시간은 흐르는 대로 소비될 뿐입니다. 사용할 것으로 예상되는 기간만 구매하세요. 나중에 언제든 Add more time으로 연장할 수 있습니다.
체크아웃 규칙에서 알아둘 만한 두 가지 엣지 케이스가 있습니다: 라이프타임 액세스 계정은 추가 시간을 구매할 수 없고(Lifetime entitlements are not billable in v1), 체크아웃으로는 계정을 다른 티어로 옮길 수 없습니다(Tier changes are not supported in v1). Max 계정에 구매 옵션 대신 비활성화된 Max access 버튼이 보이는 이유입니다.
세션과 로그아웃
- 닉네임 버튼 (상단 바)
로그인 상태에서는 로그아웃 아이콘이 있는 닉네임이 상단 내비게이션 오른쪽 끝에 있습니다(호버 툴팁은 Logout ({nickname})). 클릭하면 즉시 로그아웃되고 새 게스트 세션으로 전환됩니다.
- 세션 수명
로그인된 세션은 백그라운드에서 스스로 갱신되므로 정상적인 사용 중에 타이머로 로그아웃되지 않습니다. 게스트 세션에는 갱신 자격 증명이 없어, 만료되면 앱이 조용히 새 게스트 세션을 발급합니다. 실질적인 효과는 같습니다: 죽은 세션에 갇히는 일은 없습니다.
주의: 닉네임 버튼은 확인 대화 상자 없이 즉시 로그아웃합니다. 프로필을 보려던 것뿐이라면 대신 My Page 탭을 사용하세요. 로그아웃하면 세션이 게스트 세션으로 교체되므로, 화면의 프리미엄 콘텐츠는 다시 로그인할 때까지 공개 뷰로 되돌아갑니다.
문제 해결
이 페이지의 모든 내용에 대한 증상별 해결 요약입니다. 결제 단계 메시지는 Pro 업그레이드에 자체 상세 표가 있습니다.
| 증상 또는 메시지 | 원인 | 해결 방법 |
|---|---|---|
| Incorrect email or password. | 자격 증명이 일치하지 않았습니다. | 두 필드를 다시 확인하세요. 비밀번호 재설정 기능이 없습니다. 지갑이 연결되어 있다면 지갑으로 로그인하세요. |
| Too many recent sign-in attempts. Please wait {N} second(s) and try again. | 로그인 속도 제한. | 명시된 시간만큼 기다린 후 다시 시도하세요. |
| This account has been disabled. | 계정이 비활성화되었습니다. | 자격 증명 문제가 아니므로 재시도해도 해결되지 않습니다. |
| 로그인 대신 파란색 마이그레이션 안내가 표시됨 | 일회성 마이그레이션 단계가 필요한 레거시 계정. | 입력한 비밀번호를 확인하고 다시 제출하세요. 버튼은 Complete Migration으로 표시됩니다. 추가 제출 한 번이면 되고, 이후 다시는 나타나지 않습니다. |
| OKX Wallet (Ethereum) not detected. / MetaMask not detected. | 지갑 확장 프로그램이 없거나, 비활성화되어 있거나, EVM 프로바이더를 노출하지 않습니다. | 확장 프로그램을 설치하거나 활성화한 후 페이지를 새로고침하고 다시 시도하세요. |
| Ethereum wallet account not available. | 지갑이 연결되었지만 계정을 제공하지 않았습니다. | 지갑 잠금을 해제하고 계정이 선택되어 있는지, 사이트 연결이 허용되어 있는지 확인하세요. |
| Solana wallets are not available right now. | EVM 지갑(OKX Wallet, MetaMask)만 지원됩니다. | 지원되는 두 EVM 지갑 중 하나를 사용하세요. |
| Wallet authentication failed | 일반적인 지갑 로그인 실패로, 주로 서명 거절이 원인입니다. | 다시 시도하고 지갑에서 서명 요청을 승인하세요. |
| Nickname must be between 2 and 32 characters. | 공백 제거 후 닉네임이 너무 짧거나 깁니다. | 2자에서 32자 사이의 이름을 선택하세요. |
| 결제가 Settling payment... 또는 Retrying settlement...에서 멈춘 것처럼 보임 | 정산 중 네트워크 혼잡. | 모달을 열어 두세요. 재시도는 자동이며 서명을 재사용합니다. 재시도가 소진되면 소진 메시지를 따르세요: 기다리거나, Retry settlement를 누르거나, 새로고침 후 플랜을 확인한 다음 다시 결제하세요. |
| 결제가 Wallet mismatch에서 중단됨 | 지갑의 활성 계정이 연결된 결제 지갑과 다릅니다. | 지갑 확장 프로그램에서 활성 계정을 Linked wallet: 옆에 표시된 주소로 전환한 후 다시 시도하세요. |
| Pricing temporarily unavailable. | 실시간 가격 가져오기가 실패해 Pro 카드가 가격을 표시할 수 없고 버튼이 Pricing unavailable로 표시됩니다. | 페이지를 새로고침하거나 나중에 다시 방문하세요. 표시 문제일 뿐 계정 문제가 아닙니다. |
| My Page가 계속 로그인 페이지로 리디렉션됨 | 게스트 세션 상태입니다. My Page에는 계정이 필요합니다. | 로그인하거나 계정을 만든 후 /mypage를 다시 여세요. |
| 구매나 만료 직후에도 플랜 배지가 그대로임 | 엔타이틀먼트 뷰는 30초 주기로 갱신됩니다. | 최대 30초 기다리거나 페이지를 다시 로드하세요. |