모든 지갑 앱은 서로 매우 다른 두 가지 일을 하나의 인터페이스에 묶어 둡니다. 당신이 무엇을 보유하고 있는지 보여 주는 일, 그리고 그것을 움직이는 일입니다. 워치 월렛은 이 둘을 분리합니다. 워치 월렛은 공개 정보만 — 주소 목록, 또는 확장 공개키(xpub) — 가져올 뿐, 개인 키 정보는 전혀 보유하지 않습니다. 그 결과 지갑이 가진 권한의 정확히 절반만 갖게 됩니다. 잔액을 표시하고, 내역을 추적하고, 수신 주소를 생성하고, 심지어 서명을 기다리는 트랜잭션을 준비할 수도 있습니다. 하지만 결코 할 수 없는 일이 하나 있으니, 바로 서명입니다. 워치 월렛이 아무리 완전히 탈취당하더라도 유효한 서명은 만들어지지 않습니다. 서명에 필요한 재료가 애초에 그곳에 없기 때문입니다.
제약처럼 들리고, 실제로 제약이 맞습니다 — 다만 의도된 제약입니다. 보는 일과 서명하는 일의 분리는 모든 진지한 콜드 스토리지 구성의 조용한 근간입니다. 인터넷을 마주하는 기기는 모든 것을 알지만 아무것도 할 수 없고, 키는 아무것도 마주하지 않는 기기에 머무릅니다. 이제 워치 월렛이 어떻게 작동하는지, 무엇을 할 수 있고 무엇을 할 수 없는지, 사람들을 놀라게 하는 한 가지 프라이버시 유의점은 무엇인지, 그리고 이 분리가 일상에서 어떻게 돌아가는지 살펴보겠습니다.
하나의 시드, 두 종류의 키
모든 것은 말하기는 쉬워도 그 중요성은 아무리 강조해도 지나치지 않은 하나의 비대칭성에 기대고 있습니다. 개인 키는 서명을 만들어 내고, 그에 대응하는 공개키는 그 서명을 검증할 수만 있습니다. 개인 키에서 공개키를 계산하는 것은 즉각적이지만, 반대 방향으로 가는 것은 이 시스템 전체가 그 위에 세워진 어려운 문제입니다. 주소는 다시 공개키에서 파생되므로, 정보는 오직 한 방향으로만 — 시드에서 개인 키로, 공개키로, 주소로 — 흐를 뿐 결코 그 사슬을 거슬러 올라가지 않습니다.
계층 결정적 지갑 — 2012년에 도입되어 이제는 거의 보편화된 BIP32 표준 — 은 그 비대칭성을 단일 키에서 지갑 전체로 확장합니다. 하나의 시드가 키 쌍의 트리를 생성하고, 그 트리에는 자체적인 공개 절반이 있습니다. 바로 확장 공개키, 즉 xpub입니다. xpub는 지갑이 앞으로 사용할 모든 수신 주소를 파생할 수 있지만, 단 하나의 개인 키도 파생할 수 없습니다. 그 xpub를 다른 앱에 가져오면 지갑의 완전한 공개 얼굴을 — 모든 주소, 모든 잔액, 과거와 미래의 모든 트랜잭션을 — 그 안에 지출할 수 있는 것은 아무것도 없는 채로 복원하게 됩니다. 그것이 바로 워치 월렛입니다. 완전한 지도에서 엔진만 제거된 것이죠.
할 수 있는 것 — 그리고 멈추는 지점
구체적으로, xpub로 만든 워치 월렛은 다음을 할 수 있습니다.
- 잔액과 내역 표시 — 파생된 모든 주소에 걸쳐, 결제가 도착하고 확정될 때마다 갱신합니다.
- 새로운 수신 주소 생성 — 개인 키 근처에는 가지 않고도 입금을 받을 수 있습니다.
- 서명되지 않은 트랜잭션 구성 — 코인을 선택하고, 수수료를 설정하고, 목적지를 지정하여 — 별도의 서명 기기가 읽고 승인할 수 있는 표준 형식(비트코인에서는 일반적으로 PSBT)으로 포장합니다.
- 서명된 트랜잭션 브로드캐스트 — 다른 어딘가에서 서명이 도착하면 이를 전파합니다.
그리고 이것이 전부입니다. 어떤 상황에서도 서명하거나, 지출하거나, 잔액을 쓸어 담거나(sweep), 무언가를 승인할 수 없습니다. 트랜잭션을 마지막 바이트까지 준비할 수는 있지만, 결정적인 행위는 언제나 다른 곳에서 일어납니다. 워치 월렛이 실행되는 휴대폰을 훔쳐 봐야 훔친 것은 '보는 창'뿐입니다. 이 이름은 겸손이 아니라 정확함입니다. 이 지갑은 정말로 보기만 합니다.
워치온리 뷰는 당신이 소유한 가장 노출된 기기를 가장 위험하지 않은 기기로 바꿔 놓습니다.
콜드 스토리지가 이 분리 위에 세워지는 이유
콜드 스토리지에는 그 핵심에 하나의 모순이 있습니다. 요점은 개인 키가 인터넷에 연결된 기계에 결코 닿지 않는다는 것인데 — 그럼에도 당신은 여전히 잔액을 확인하고, 입금을 받고, 언젠가는 지출해야 하며, 그 모든 것에는 네트워크가 관여합니다. 무언가가 그 중간에 서 있어야 하고, 그 무언가가 바로 워치 월렛입니다.
표준적인 흐름은 이렇습니다. 온라인 기기의 워치온리 뷰가 서명되지 않은 트랜잭션을 구성하여 에어갭 너머로 — 보통은 QR 코드나 파일로 — 건넵니다. 키를 보유하고 네트워크 연결은 없는 오프라인 서명 기기가 무엇을 승인하도록 요청받았는지 표시하고, 서명한 뒤, 서명만을 되돌려 보냅니다. 그러면 보는 쪽 절반이 이를 브로드캐스트합니다. 키는 어느 방향으로도 결코 이동하지 않습니다. 서명되지 않은 트랜잭션이 한쪽으로 건너가고, 서명이 반대쪽으로 건너올 뿐입니다. 결정적으로, 시드 문구는 한 번이라도 온라인에 연결된 적이 있는 기계에 입력되거나, 복원되거나, 심지어 보여질 필요조차 없습니다 — 그리고 시드 문구는 단일 실패 지점이므로, 그것을 네트워크에 연결된 하드웨어에서 완전히 떼어 놓는 일은 약간의 격식을 치를 만한 가치가 있습니다.
하드웨어 월렛도 포장만 다를 뿐 같은 아키텍처입니다. 컴퓨터에 설치된 컴패니언 앱은 기능적으로 워치 월렛이고, 케이블에 연결된 기기가 서명 기기입니다 — 두 형태 모두 견고한 설계입니다. 차이는 전송 방식(USB나 블루투스 대 건너갈 때 더 쉽게 검사할 수 있는 QR 코드)과 전용 하드웨어를 아예 구입하는지 여부입니다. Ownbit의 콜드월렛 워크플로는 이 QR 방식을 평범한 휴대폰 두 대로 구현합니다 — 이에 대해서는 아래에서 더 다룹니다.
프라이버시 유의점: xpub는 하나의 지도다
워치온리 뷰가 지출 측면에서 안전하다 보니 사람들은 xpub를 대수롭지 않게 여기는데, 이는 바로잡을 필요가 있습니다. 당신의 xpub를 가진 사람은 누구나 당신의 지갑이 사용했거나 앞으로 사용할 모든 주소를 — 전체 잔액과 전체 내역을, 영원히 갱신되는 상태로 — 볼 수 있습니다. 그들은 아무것도 가져갈 수 없지만 모든 것을 지켜볼 수 있으며, 많은 보유자에게 이는 거의 그만큼 민감한 일입니다. 게다가 유출된 xpub는 조용히 교체할 수도 없습니다. 유일한 진짜 탈출구는 새로운 시드로 만든 새 지갑으로 자금을 옮기는 것뿐입니다.
그러니 xpub가 기술적으로는 공개키 정보임에도 이를 기밀로 다루세요. 거래 상대방에게는 개별 주소를 건네되, xpub 자체는 결코 건네지 마세요. xpub는 당신의 전체 금융 내역을 믿고 맡길 수 있는 앱과 서비스에만 가져오세요 — 포트폴리오 추적기는 편리하지만, 동시에 그것을 운영하는 누군가에게 지속적으로 공개하는 것이기도 합니다. 폭넓은 xpub 공유가 정말로 불가피한 유일한 곳은 멀티시그입니다. 여기서는 공동 서명자들이 공유 지갑을 구성하기 위해 xpub를 서로 교환해야 하죠. 그것은 이미 커스터디를 공유하는 사람들 사이의, 통제된 의도적 공개입니다.
사람들이 실제로 워치 월렛을 쓰는 용도
콜드 스토리지와의 페어링이 대표적인 용도이지만, 이 패턴은 평범한 상황에서도 제 몫을 톡톡히 합니다.
- 장기 보유 자산 모니터링. 지출 권한을 들고 다니지 않고도 주머니 속 휴대폰으로 저축을 지켜보세요.
- 입금 확인. 자금을 움직일 수 있는 그 무엇도 잠금 해제하지 않고, 거래소 출금이나 청구서 결제가 실제로 도착했는지 확인하세요.
- 지출 권한 없는 읽기 권한. 회계사, 감사인, 공동 창업자가 자금 내역을 손댈 능력은 전혀 없이 따라갈 수 있습니다 — 읽기와 쓰기가 별개의 권한이 되는 것이죠, 원래 늘 그랬어야 하는 방식대로.
- 공유 멀티시그 지켜보기. 2-of-3 멀티시그의 모든 참여자가 실시간으로 지갑을 추적할 수 있는 한편, 지출에는 여전히 정족수가 필요합니다. 가시성은 모두에게 열려 있지만, 권한은 임계값에 묶여 있습니다.
Ownbit가 Watch Wallet과 오프라인 휴대폰을 페어링하는 방법
Ownbit는 이 분리를 전문가용 기능이 아니라 핵심 흐름으로 녹여 냈습니다. 영구적으로 오프라인 상태로 두는 남는 휴대폰이 서명 기기가 됩니다. 표준 BIP39 시드 문구를 생성해 보관하며, 그 무엇에도 결코 연결하지 않습니다. 당신의 일상용 휴대폰은 Watch Wallet — 워치온리 절반 — 을 실행하며, 지갑의 주소를 알고, 잔액을 보여 주고, 서명되지 않은 트랜잭션을 구성합니다. 지출하려면 Watch Wallet이 서명되지 않은 트랜잭션을 QR 코드로 표시하고, 오프라인 휴대폰이 이를 스캔하여 무엇에 서명하려는지 정확히 보여 준 뒤 서명하고, 그 서명을 또 다른 QR 코드로 표시하면 온라인 휴대폰이 이를 다시 스캔해 브로드캐스트합니다. 그 두 개의 QR 코드 외에는 어떤 것도 간극을 건너지 않으며, 추가 하드웨어도 전혀 필요 없습니다. 이미 Ledger나 Trezor를 가지고 있다면, 같은 니모닉을 오프라인 휴대폰에 가져와 기존 키를 콜드 멀티시그로 편입할 수 있습니다.
신뢰 경계는 다른 모두에게 적용되는 것과 똑같이 우리에게도 적용됩니다. Ownbit의 서버는 서명을 조율할 뿐 사용자 키는 결코 보관하지 않으며, 모든 키는 표준 BIP39 시드 문구이고, 보안 모델은 Ownbit의 서버 없이도 회복이 작동하도록 설계되어 있습니다. 독립적으로 검증할 수 없는 워치온리 뷰는 당신이 어쩔 수 없이 신뢰해야 하는 화면이 하나 더 늘어난 것에 불과합니다 — 이 아키텍처의 핵심은 당신이 그럴 필요가 없다는 것입니다.
자주 묻는 질문
워치 월렛도 해킹당할 수 있나요?
탈취당할 수는 있지만, 공격자가 얻는 것은 가시성이지 자금이 아닙니다 — 훔칠 개인 키 정보가 없으므로 어떤 서명도 위조할 수 없습니다. 현실적인 위험은 기만입니다. 온라인 기기의 악성코드가 바꿔치기된 수신 주소나 조작된 트랜잭션을 표시할 수 있습니다. 바로 그렇기 때문에 서명 전에 진짜 트랜잭션 세부 정보를 보여 주는 오프라인 서명 기기가 중요하고, 큰 금액의 입금에는 서명 기기에서 주소를 확인하는 절차가 필요합니다.
제 xpub를 공유해도 안전한가요?
지출 측면에서는 안전하지만 프라이버시 측면에서는 민감합니다. xpub로는 자금을 움직일 수 없지만, 그것을 가진 사람은 당신의 지갑이 파생하는 모든 주소를 전체 잔액과 내역과 함께 무기한 볼 수 있습니다. 거래 상대방에게는 개별 주소를 공유하고, xpub는 당신의 전체 금융 상황을 믿고 맡길 수 있는 기기와 서비스, 공동 서명자에게만 남겨 두세요.
워치온리 뷰에서 암호화폐를 보낼 수 있나요?
그 자체만으로는 불가능합니다. 워치 월렛은 서명되지 않은 트랜잭션을 구성하고 서명된 트랜잭션을 브로드캐스트할 수 있지만, 서명은 개인 키를 보유한 기기 — 오프라인 휴대폰, 하드웨어 월렛, 또는 다른 서명 기기 — 에서 나와야 합니다. 이 두 절반의 페어링이 비로소 완전한 지출 흐름을 만들어 냅니다.
워치온리 뷰와 콜드월렛의 차이는 무엇인가요?
둘은 하나의 설계를 이루는 두 절반입니다. 콜드월렛은 키를 보유하고 서명하는 오프라인 기기이고, 워치 월렛은 키는 전혀 보유하지 않지만 네트워크가 요구하는 모든 것 — 잔액, 수신 주소, 서명되지 않은 트랜잭션, 브로드캐스트 — 을 처리하는 온라인 창입니다. 둘을 함께 쓰면 일상적인 사용성을 포기하지 않으면서도 키를 영구적으로 오프라인에 둘 수 있습니다.