Vela를 만든 이유
지갑을 하나 더 만들 생각은 없었습니다. 시작은 끝내 깔끔하게 답하지 못한 질문 하나였습니다.
그 열두 단어는 대체 어디에 두어야 할까?
솔직한 답은 스크린샷
메모 앱에 넣어 두면 휴대폰을 도둑맞는 순간 문제가 생깁니다. 종이에 적으면 이번에는 화재, 침수, 이사, 룸메이트, 쓰레기봉투, 그리고 몇 년 뒤의 내가 “안전한 곳”이 어디였는지 기억할지를 걱정하게 됩니다.
많은 사람에게 솔직한 답은 사진첩 속 스크린샷입니다. 다들 잘못이라는 걸 압니다. 그래도 그렇게 합니다. “올바른” 방법은 일상에서 지키기가 너무 어렵기 때문입니다.
시드 구문은 수십 년의 평범한 생활 속에서 한 번도 복사되거나, 사진에 찍히거나, 엉뚱한 입력란에 입력되거나, 전화 너머 친절한 누군가에게 읽어 주는 일 없이 살아남아야 하는 비밀입니다. 아주 꼼꼼한 사람에게는 어려운 문제가 아닙니다. 보통 사람에게는 어려운 문제입니다.
그리고 패스키가 지갑의 느낌을 바꿨습니다
우리는 Base Account를 매일 썼고, Face ID로 서명하는 경험은 시드 구문이 한 번도 주지 못한 당연함이 있었습니다. 위험물을 다루는 느낌이 아니라, 인터넷의 다른 서비스를 쓰는 느낌에 가까웠습니다.
하지만 쓸수록 외면할 수 없는 한계가 보였습니다.
- 그냥 믿을 수밖에 없는, 브라우저에서 생성되는 복구 키
- 사용자 지정 네트워크 추가 불가
- 직접 호스팅할 방법 없음
- 그리고 드러나지 않지만 가장 큰 문제: 서비스가 사라지면 지갑도 함께 사라진다는 것
그래서 우리가 믿고 기댈 수 있는 버전을 직접 만들었습니다.
Vela는 무엇인가
Vela는 온전히 내 것으로 가질 수 있는 패스키 지갑입니다.
패스키는 기기가 이미 보호하고 있는 곳에 그대로 있습니다. iCloud 키체인, Google 비밀번호 관리자, 또는 직접 가지고 있는 하드웨어 보안 키입니다. 거래에 서명할 때 Vela는 기기에 서명을 요청하고, 기기는 서명한 뒤 서명값만 돌려줍니다. Vela가 키 자체를 보는 일은 없습니다.
대부분의 지갑에는 아주 짧더라도 위험한 순간이 남아 있습니다. 화면에 뜬 단어들, 메모리에 올라간 시드 구문, 브라우저 탭에 놓인 복구 키. Vela는 그런 순간이 아예 생기지 않도록 설계되었습니다.
Vela를 오픈소스로 만든 것은 이 점을 직접 확인할 수 있게 하기 위해서이고, 직접 호스팅 가능하게 만든 것은 이미 만든 지갑이 우리 회사 서버 없이도 계속 작동하게 하기 위해서입니다. 한계는 하나 있습니다. 패스키가 속한 도메인입니다. 이 한계와 우회하는 방법은 셀프 호스팅 가이드에서 설명합니다. 그리고 수정하지 않은 Safe 컨트랙트 위에 만든 것은, 남의 돈이 걸린 일이라면 지루하지만 실전에서 검증된 길이 옳기 때문입니다. 이미 온체인에서 수십억 달러를 지키고 있는 바로 그 컨트랙트입니다.
우리가 택한 트레이드오프
트레이드오프는 여전히 있고, 그것을 숨기는 것은 정직하지 않습니다.
Vela에서는 Apple이나 Google 계정이 중요해집니다. 동기화되는 패스키가 그곳에 있기 때문입니다. 그 계정을 잃거나 패스키를 삭제하면 시드 구문도, 고객센터의 재설정도, 뒷문도 없습니다.
하지만 모든 자기 수탁형 지갑은 어떤 위험을 안고 살지 고르라고 합니다. 시드 구문은 복사되고, 캡처되고, 피싱당하고, 새벽 1시에 엉뚱한 사이트에 입력될 수 있습니다. 패스키는 다릅니다. 드러날 단어도, 붙여 넣을 비밀도 없고, 속여서 넘겨받을 수 있는 가짜 사이트도 없습니다. 브라우저는 진짜 도메인의 페이지에만 패스키를 내어 줍니다.
게다가 양자택일도 아닙니다. 지갑은 최대 일곱 개의 서명 키로 만들 수 있고, 그중 어느 하나로도 혼자 서명할 수 있습니다. 여러 기기의 패스키, 스캔해서 연결하는 가까운 휴대폰, USB/NFC 보안 키를 섞어 쓸 수 있습니다. 지갑이 플랫폼 계정에 전혀 기대지 않기를 원한다면 하드웨어 보안 키만 써도 됩니다. 이때는 두 개가 필요합니다. 어디에도 동기화되지 않는 키 하나에만 지갑을 맡길 수는 없기 때문입니다. 조건은 시점 하나입니다. 주소가 키 전체로부터 도출되므로, 키는 지갑을 만들 때 정해야 합니다.
그래서 Vela가 있습니다
숨길 시드 구문도, 믿어야 할 복구 키도, 영원히 버텨 주기를 바라야 할 회사도 없는 지갑.
주장을 그대로 믿기보다 확인해 보고 싶다면, 백서에 아키텍처가 있고, 감사와 알려진 문제에 우리가 의존하는 모든 컨트랙트와 무엇이 감사를 받았고 무엇이 받지 않았는지가 정리되어 있습니다. 코드는 전부 GitHub에 있습니다.
다음: Vela 설치.