WalletConnect란 무엇이며 SSP와 어떻게 작동하는가

·7분 읽기·작성자: SSP Editorial Team
SSP Wallet 브라우저 확장과 SSP Key 모바일 앱을 dApp에 연결하는 WalletConnect QR code.

WalletConnect란 무엇이며 SSP와 어떻게 작동하는가

탈중앙화 거래소, NFT 마켓플레이스, 혹은 대출 앱을 열고 옆에 QR code가 붙은 "Connect Wallet" 버튼을 본 적이 있다면, 당신은 이미 WalletConnect를 만난 셈입니다. 자기 보관 지갑을 사람들이 실제로 쓰는 앱과 잇는 조용한 배관이 바로 그것입니다. SSP 사용자에게 질문은 "WalletConnect가 무엇인가"만이 아니라 "내가 그것을 쓸 때 보안의 무엇이 바뀌고, 무엇이 그대로인가"입니다.

짧은 답은 이렇습니다. WalletConnect는 문입니다. 당신의 키와 SSP의 2-of-2 보호는 원래 있던 자리에 그대로 머뭅니다.

WalletConnect가 실제로 무엇인가

WalletConnect는 탈중앙화 애플리케이션(dApp)과 지갑 사이에서 서명 요청을 옮기기 위한 개방형 프로토콜입니다. 수탁자가 아닙니다. 자금을 보관하지 않습니다. 당신의 시드 문구나 개인 키를 보지 않습니다. 지갑과 dApp이 WalletConnect를 통해 연결되면, 두 끝점은 릴레이 네트워크를 거쳐 암호화된 세션을 수립하고, 메시지는 그 세션 위에서 오갑니다. 릴레이는 암호화된 덩어리만을 볼 뿐이며, 그것을 읽을 수 있는 것은 두 끝점뿐입니다.

이는 생태계 거의 어디에서나 쓰이고 있고, 바로 그 때문에 지갑 측의 하나의 흐름만으로 매번 새 흐름을 익히지 않고도 수백 개의 앱을 오갈 수 있습니다. 프로토콜은 docs.walletconnect.com에서 공개적으로 문서화되어 있으며, WalletConnect 호환 앱의 긴 카탈로그는 ethereum.org/en/dapps에서 찾을 수 있습니다.

기본 흐름, 단계별로

연결 의식은 어떤 dApp을 쓰든 거의 언제나 같습니다.

  1. dApp이 "Connect Wallet" 옵션을 보여주고 QR code를 제시하거나, 모바일이라면 딥 링크를 제시합니다.
  2. 당신은 SSP를 열고, dApp에 연결하기를 선택하고, QR code를 스캔합니다(혹은 링크를 따라갑니다).
  3. SSP는 dApp이 무엇을 요청하는지를 보여줍니다. 세션, 당신의 주소, 연결되는 체인.
  4. 당신은 세션을 승인합니다. 이제 SSP와 dApp 사이에 암호화된 채널이 열려 있습니다.
  5. dApp에서 서명이 필요한 동작을 할 때마다 — swap, 토큰 승인, 입금 — dApp은 채널을 통해 서명 요청을 보냅니다. SSP는 무엇이 요청되고 있는지를 정확히 보여줍니다.
  6. 당신이 결정합니다. 승인하면 서명 과정은 SSP 안에서 진행되고, 서명된 트랜잭션은 dApp으로 돌아가 dApp이 그것을 브로드캐스트합니다.
  7. 끝나면 세션을 끊습니다.

주목할 중요한 점은 이렇습니다. dApp은 결코 당신의 개인 키를 묻지 않습니다. 서명을 요청합니다. 각 서명은 당신이 자신의 지갑에서 내리는 별개의 결정입니다.

서명 모델이 SSP에 어떻게 맞물리는가

여기서 SSP는 대부분의 지갑이 흉내 낼 수 없는 방식으로 그림을 바꿉니다. 전형적인 단일 서명 지갑에서는 모든 서명 요청이 지갑 UI 안의 단 한 번의 승인입니다 — 빠르지만 단일 실패 지점이기도 합니다. 그 단일 기기가 침해되거나, 적대적인 요청에 "승인"을 누른다면, 서명은 일어나 버립니다.

SSP는 2-of-2 multisig 지갑입니다. Key 1은 SSP Wallet 브라우저 확장에 살고 있습니다. Key 2는 당신의 휴대전화 안 SSP Key 모바일 앱에 살고 있습니다. 모든 트랜잭션은 매번 두 키를 모두 필요로 합니다. 이 모델은 당신이 WalletConnect를 쓸 때도 사라지지 않습니다 — 거기까지 뻗어갑니다.

dApp이 WalletConnect를 통해 서명 요청을 보낼 때:

  • 요청은 먼저 당신의 컴퓨터에 있는 SSP Wallet 확장에 도착합니다.
  • 당신은 dApp이 무엇을 서명하라고 하는지를 점검합니다 — 계약, 금액, 체인, 그리고 보기로 선택했다면 calldata까지.
  • 확장에서 승인합니다. 확장은 서명의 자기 몫을 생산합니다.
  • 요청은 공동 서명을 위해 당신의 휴대전화에 있는 SSP Key로 푸시됩니다. 거기서도 같은 세부 사항을 보게 됩니다.
  • 휴대전화에서 승인합니다. SSP Key가 자기 몫을 생산합니다.
  • 두 몫이 하나의 유효한 서명으로 합쳐지고 dApp으로 돌아갑니다.

UTXO 체인에서는 이것이 BIP-48 multisig 서명으로 일어나고, EVM 체인(Ethereum, Polygon, Base, BNB Smart Chain, Avalanche)에서는 Schnorr로 집계된 2-of-2 서명이 ERC-4337 smart account에 의해 검증됩니다. 다른 암호, 같은 성질입니다. 두 기기, 두 번의 승인, 한 번의 트랜잭션. EVM 쪽을 더 깊게 읽고 싶다면 SSP의 account abstraction 아키텍처를 보고, 기초 개념은 2-of-2 multisig가 무엇인지를 보세요.

확장을 속인 피싱 dApp은 여전히 당신의 휴대전화를 통과해야 합니다. 그게 핵심의 전부입니다.

알아두어야 할 보안적 함의

WalletConnect는 당신의 보안을 약화시키지 않습니다. 당신이 주의해야 할 대상을 바꿀 뿐입니다. 아래 위험들은 WalletConnect 고유의 것이 아니지만, 연결된 dApp은 그것들을 만나기 쉬운 곳입니다.

피싱 dApp. 누구나 인기 프로토콜처럼 보이는 사이트를 만들어 연결을 요청할 수 있습니다. 지갑은 어느 쪽이 진짜인지 알 길이 없습니다. 연결하기 전에 늘 올바른 도메인에 있는지 확인하세요. 쓰는 앱은 즐겨찾기에 등록하고, 검색 광고나 채팅 링크로 접근하지 마세요.

악의적인 서명 요청. 세션이 일단 열리면 dApp은 임의의 서명을 요청할 수 있습니다. swap 인터페이스가, 낯선 계약에게 토큰 잔액을 비울 권한을 주는 토큰 승인을 당신에게 건넬 수 있습니다. SSP가 보여주는 것을 읽으세요. 서명 요청이 낯설어 보이면 — 모르는 계약, 무제한 승인, 당신 것이 아닌 주소로의 전송 — 거부하세요. 휴대전화에서의 2-of-2 검토는 그것을 잡아낼 당신의 두 번째 기회입니다.

눈먼 서명. 서명되는 데이터가 불투명한 경우가 있습니다 — 사람이 읽을 수 있는 필드로 해독되지 않는 긴 16진수 문자열입니다. 눈먼 서명 요청은 의심하며 다루세요. 당신이 무엇에 서명하는지의 사람이 읽을 수 있는 의도를 보여주는 앱을 선호하세요.

링크와 앱의 혼동. WalletConnect는 프로토콜입니다. 많은 지갑이 이를 구현합니다. "Use WalletConnect"라고 적힌 사이트는 특정 브랜드의 신뢰 신호가 아닙니다 — 그것은 배관 표준입니다. "그 dApp이 WalletConnect를 쓴다"와 "그 dApp이 안전하다"를 혼동하지 마세요.

범위가 정해진 권한. 세션은 특정 체인과 메서드로 제한될 수 있습니다. SSP가 세션 요청을 보여줄 때 무엇이 요청되고 있는지 보세요. 앱이 실제로 필요로 하는 것보다 더 많이 요구하는 세션을 거절하는 데에는 아무 해도 없습니다.

잊혀진 세션. 잊은 세션도 여전히 세션입니다. 어떤 dApp의 프런트엔드가 나중에 침해되면, 활성 세션은 발판이 됩니다. 끝나면 끊는 습관을 들이세요.

이것을 작동하게 하는 구체적 습관

몇 가지 작은 규율이 당신의 WalletConnect 사용을 깔끔하게 유지합니다.

  • dApp의 URL을 검증한 뒤에 연결 QR을 스캔하세요. 채팅이나 광고의 링크를 클릭하기보다 직접 도메인을 입력하세요.
  • 모든 서명 요청을 읽으세요. 어떤 계약이 호출되고 있나요? 어떤 체인에서? 어떤 금액으로? 무제한 토큰 승인은 고정 금액의 승인과는 다른 것입니다 — 둘 다 정당할 수 있지만, 당신이 무엇에 서명하는지는 알아야 합니다.
  • 휴대전화의 확인을 두 번째 시선으로 쓰세요. 컴퓨터에서는 괜찮아 보였던 요청이 휴대전화에서는 잘못되어 보였다면 거절하세요. 두 기기는 알아챌 기회가 두 번이라는 뜻입니다.
  • 끝나면 세션을 끊으세요. SSP가 세션 목록을 줍니다. 그것을 "열린 문들의 목록"처럼 다루세요.
  • 감사 이력이 있는 평판 좋은 앱을 선호하세요. 한동안 존재해 왔고, 감사를 공개하며, 표준 WalletConnect 핸드셰이크 이상의 로그인 흐름을 요구하지 않는 프로토콜 쪽으로 기울이세요.
  • 시드 문구는 어떤 dApp 흐름에도 들이지 마세요. 정당한 dApp은 결코 당신의 시드 문구를 필요로 하지 않습니다. 서명 요청이야말로 dApp이 당신의 지갑과 대화하는 방식이고, 시드를 묻는 모든 것은 사기입니다. 더 깊은 독서로는 시드 문구 모범 사례를 보세요.
  • Ethereum에서 연결한다면, gas, nonce, 계약 상호작용에 대한 같은 체인 특유의 규칙이 적용됩니다 — SSP의 Ethereum이 체인 쪽의 세부를 다룹니다.

한데 묶기

WalletConnect는 SSP와 dApp 생태계 사이의 문입니다. 암호화되어 있고, 오픈 소스이며, 당신이 만나게 될 대부분의 지갑과 프로토콜이 그것을 씁니다. 당신의 키가 어디에 사는지를 바꾸지 않으며, SSP의 2-of-2 모델을 약화시키지도 않습니다. dApp이 요구하는 모든 트랜잭션은 여전히 당신의 브라우저 확장과 휴대전화를 모두 통과해야 합니다 — 그것이 SSP를 선택했을 때 당신이 산 보안 성질이며, 당신이 연결하는 모든 dApp에서 당신과 함께 여행합니다.

키는 당신과 함께 머뭅니다. 문은 당신이 통과하는 동안에만 열려 있습니다.

이 글 공유하기

관련 글