Web3 계정 개념 정리, 지갑 사용 시 길 잃지 않기
작성자: 지현, UniPass 창립자
막 끝난 Devcon에서 계정 추상(Account Abstraction)은 가장 뜨거운 주제 중 하나였으며, 최근 다양한 발표와 패널 토론, 정보 피드에서 AA / EOA / SCW / 4337 등의 약어와 코드명을 자주 볼 수 있습니다.
또한 "다음 10억 명의 사용자 유치(Onboarding next billion users)"라는 스토리텔링이 확산되며, seedless / gasless / social recovery / non-custodial 등 새로운 형용사들이 제품 설명에 등장하기 시작했습니다.
위 문장을 읽고 머리가 아파오기 시작했다면, 제가 이 용어들이 무엇을 의미하는지 이해를 돕기 위해 최선을 다해 설명하겠습니다.
읽기 전 참고: 본문은 엄격한 기술 문서가 아니며, 정확하지 않지만 이해하기 쉬운 표현이나 비유를 사용할 수 있습니다. 이를 바탕으로 독자 여러분이 관련 기술의 세부 사항을 깊이 탐구하길 바랍니다.
EOA - Externally Owned Accounts
EOA는 중국어로 외부 소유 계정이라고 하며, 우리가 가장 익숙한 MetaMask가 생성하는 주소가 바로 EOA입니다. 그 특징은 원리가 간단하다는 점이며, 생성 규칙은 다음과 같습니다:
이 규칙은 매우 직관적이며, 모두 수학적 변환을 통해 계산됩니다. 생성된 주소 내부에는 어떤 구조나 로직도 포함되어 있지 않습니다. 노드가 거래가 해당 주소 소유자에 의해 승인되었는지 검증할 때도 고정된 규칙을 따릅니다:
비교 결과가 일치하면 서명 검증 통과하여 후속 절차 진행, 불일치하면 즉시 거절되며 거래는 더 이상 전파되지 않습니다.
EOA의 또 다른 설정은 거래의 발신자로서 가스를 지불한다는 점이며, 반대로 CA(컨트랙트 계정)는 다른 CA 또는 EOA에 의해 호출될 수만 있습니다. 즉, EOA는 거래를 트리거하며, 거래 이후 몇 개의 컨트랙트 호출이 발생하든 상관없이 반드시 EOA가 처음에 거래를 시작하고 충분한 가스를 지불해야 합니다.
참고로, EOA는 이더리움 및 기타 EVM 호환 체인(또는 EVM 유사 체인)에서만 존재하는 개념이며, 엄밀히 말하면 BTC를 포함한 주요 비-EVM 체인들은 이러한 설정을 가지고 있지 않습니다.
CA - Contract Accounts
CA는 중국어로 컨트랙트 계정이라고 하며, 과거에는 내부 계정이라고도 불렸습니다. 우리가 흔히 보는 ERC-20 토큰 컨트랙트, DeFi 비즈니스 컨트랙트 등은 EOA와 매우 유사한 주소를 가지고 있는데, 이것이 바로 CA입니다.
설정상 CA는 이더리움 생태계의 원주민이며, EOA와 ETH는 CA의 비즈니스 로직을 위한 트리거와 연료 역할을 합니다. 실제 사용에서는 이더리움 상에서 ETH를 제외한 모든 자산은 CA가 담당하며, DeFi 등의 비즈니스 로직 역시 전적으로 CA에 의해 구현됩니다. 그러나 CA는 스스로 작업을 수행하거나 가스를 지불할 수 없다는 한계로 인해 능력이 제한되었습니다. 이미 2016년부터 CA가 자체적으로 가스를 지불할 수 있도록 하자는 제안이 있었습니다.
간단히 말해, CA는 내부 로직을 갖춘 이더리움 계정으로서, 여기에는 비즈니스 로직(Token 컨트랙트의 장부 관리, 스테이킹 컨트랙트의 대출 및 정산 등)이 포함될 수 있으며, 계정 로직(gnosis safe의 멀티시그 로직 등)도 가능합니다. 후자가 바로 곧 소개할 'SCW - 스마트 컨트랙트 지갑' 개념입니다.
CA의 주소 생성 규칙은 계산을 통해 결정되며, CREATE와 CREATE2 두 가지 방식이 있습니다. 여기서는 자세히 설명하지 않겠습니다. 중요한 점은 CA 주소와 공개키 사이에 필연적인 대응 관계가 없다는 것입니다. 예를 들어 gnosis safe에서 생성한 CA는 자산 잠금 해제를 위해 임의의 여러 개의 공개키를 설정할 수 있습니다. 또한 CA는 어떤 키도 설정하지 않고, 다른 CA의 로직에 따라 자산 잠금 해제 여부를 결정할 수도 있습니다. 예를 들어 DeFi 대출 컨트랙트는 대출금을 갚으면 담보 자산을 회수할 수 있도록 설계됩니다.
SCW/A - Smart Contract Wallet/Account
스마트 컨트랙트 지갑은 이름 그대로 가장 직관적으로 이해하기 쉬운 개념으로, CA를 주소로 사용하는 지갑 솔루션을 말하며, 우리가 일반적으로 사용하는 EOA 지갑은 앞서 언급한 공개키 변환 결과를 주소로 사용합니다.
내부 로직을 갖추고 있기 때문에 스마트 컨트랙트 지갑은 EOA로는 불가능한 다양한 기능을 구현할 수 있습니다. 예를 들어 가스 대납, 배치 거래, 권한 관리, 오프라인 승인, 소셜 리커버리 등이 있습니다.
스마트 컨트랙트 지갑의 확장 가능성을 보여주는 몇 가지 예시를 들겠습니다:
-
Gnosis Safe는 스마트 컨트랙트 지갑 아키텍처를 활용해 멀티시그 로직을 구현함;
-
사용자는 한 번의 체인 거래에서 여러 주소에 서로 다른 토큰을 동시에 보낼 수 있으며, Uniswap 사용 시 approve와 swap을 한 거래 안에서 완료할 수 있어 필요 이상의 권한 부여를 방지하고 보안 위험을 줄일 수 있음;
-
사용자는 자산별로 다른 조작 권한을 설정할 수 있음. 예를 들어 PFP에는 일반 ERC-20 토큰보다 더 높은 조작 난이도를 설정할 수 있으며(예: 하드웨어 지갑에서 관리되는 admin key가 있어야 이체 가능), 이렇게 함으로써 일상적으로 사용하는 환경에서 키 유출이 발생하더라도 해커가 고가치 자산을 이체할 수 없도록 하여 보안과 편의성 사이의 균형을 맞출 수 있음;
-
사용자는 "누군가 나에게 100 ETH를 보내주면 내 BAYC 하나를 옮겨갈 수 있다"는 오프라인 승인을 서명할 수 있으므로, 제3자 컨트랙트에 권한을 부여하지 않고도 다른 사람과 P2P로 원자적 거래를 완료할 수 있음.
AA - Account Abstraction
계정 추상(Account Abstraction)은 사실 새로운 개념이 아닙니다. 최초 논의는 2015년으로 거슬러 올라가며, 당시 비탈릭(Vitalik)은 이더리움의 거래 검증에 사용되는 암호학 알고리즘을 교체 가능하게 만들 것을 주장했습니다(예: 성능이 우수한 ed25519로 변경, 자세히 보기). 지난 7년 동안 비탈릭과 EF(Ethereum Foundation)는 계정 추상화에 대한 논의와 탐색을 계속해왔으며, 이를 되돌아볼 수 있는 정리된 link tree도 있습니다.
그렇다면 계정 추상은 어떻게 이해해야 할까요? 여기서 저는 ERC-4337에서 제시한 목표 설명을 인용하겠습니다:
계정 추상의 핵심 목표 달성: 사용자가 EOA 대신 임의의 검증 로직을 포함하는 스마트 컨트랙트 지갑을 기본 계정으로 사용할 수 있도록 함. 현재 상태(SC 지갑 및 EIP-3074 모두 요구됨)에서 사용자가 EOA를 가질 필요성을 완전히 제거함
이를 통해 이더리움이 계정 추상에 기대하는 것은 대부분의 사용자가 현재 EOA를 사용하는 현실을 변화시키고, 사용자를 SCW로 전환하며 생태계의 EOA 의존도를 완전히 제거하려는 것입니다. 여기서 언급된 EIP-3074 외에도, 더욱 급진적이고 장기적인 EIP-5003이 있습니다. 아래는 원문 일부를 인용한 것입니다(생략 있음):
EOA는 프로토콜에 의해 다양한 중요한 측면에서 제한됩니다. 이러한 계정은 보안을 위한 키 회전, 가스 절약을 위한 배치 처리, 직접 이더 보유 없이도 트랜잭션을 수행할 수 있는 스폰서십 거래 등을 지원하지 못합니다. 컨트랙트 계정 또는 계정 추상화를 통해 얻을 수 있는 수많은 이점들이 있으며, 예를 들어 자신의 인증 알고리즘 선택, 지출 한도 설정, 소셜 리커버리 활성화, 키 회전 허용, 임의 및 전이적 권한 위임, 그리고 우리가 상상할 수 있는 거의 모든 것들이 가능합니다.
… 이 EIP는 EOA를 영원히 남기는 것이 아니라, 한 번에 영구적으로 EOA에서 벗어날 수 있는 이주 경로를 제공합니다.
EIP-5003의 목표는 EOA를 CA로 일괄 전환하여 모든 사용자가 SCW를 사용하도록 하고, 호환성 문제를 완전히 해결하려는 것입니다. (앞서 설명한 용어들을 이해했으니, 이제 이러한 약어들도 좀 더 수월하게 읽히시죠?)
지금까지 AA의 배경과 미래 목표에 대해 어느 정도 이해하셨을 것입니다. 하지만 주목할 점은 AA 개념이 이더리움이나 EVM 전용이 아니며, 많은 블록체인이 원래부터不同程度의 AA 기능을 갖추고 있다는 점입니다.
예를 들어 EOS / Polkadot / Near / Solana / Flow / Aptos ... 심지어 BTC(싱글 시그 / 멀티시그 / Taproot)까지, 이러한 체인들은 설계 초기부터 계정에 내부 구조를 두거나 권한 관리 기능을 갖추고 있습니다. 또한 StarkNet / CKB 등은 더욱 완벽한 계정 추상화 능력을 제공합니다.
이쯤에서 눈치채셨겠지만, 이더리움의 AA는 EOA의 예기치 않은 인기가 초래한 레거시 문제를 해결함으로써 계정 레이어에서 더 진보되고 유연해지려는 노력입니다.
4337 - ERC 4337
앞서 AA에 대한 논의에서 알 수 있듯이, ERC-4337은 이 방향의 여러 제안 중 하나일 뿐입니다. 그런데 왜 사람들이 AA나 SCW를 언급하면 모두 이걸 이야기할까요? 문서의 부제를 살펴보겠습니다:
합의층 프로토콜 변경을 완전히 피하는 계정 추상 제안이며, 대신 고수준 인프라에 의존함.
즉, ERC-4337은 AA 접근법을 '폭력적 혁명'에서 '평화적 진화'로 전환한 첫 사례로, 더 이상 합의층 변경을 통한 AA 실현을 추구하지 않고, SCW 같은 사용자층 솔루션을 채택했습니다. 또한 더 나은 상호 운용성을 위해 ERC-4337은 SCW가 구현해야 할 인터페이스와 메타 거래 패키징, 가스 대납 등의 인프라 프레임워크를 정의합니다.
이것은 현재 서로 크게 다른 다양한 SCW 솔루션들이 통일된 사용자 인터페이스를 가지며 생태계 차원의 공개 인프라를 공유할 수 있게 해주어, 다양한 시나리오에서 필요한 SCW 솔루션을 신속히 구현할 수 있도록 도와줍니다.
반면, ERC-4337의 추진은 생태계 참여자들이 SCW와의 호환성을 높이는 데 기여합니다. 예를 들어 검증에 필요한 EIP-1271이나 일부 DeFi 프로토콜에서 CA 상호작용을 금지하는 규칙 등이 있습니다.
Seedless
여기서 seed는 seed phrase(시드 구문)를 의미하며, 지갑 생성 시 백업하라고 요구받는 니모닉(mnemonic) 문구입니다. 따라서 seedless는 "니모닉이 없는" 또는 "개인키가 없는"을 의미합니다. 단, 이 '없음'은 실제로 키가 전혀 없다는 의미가 아니라, 사용자가 니모닉/개인키를 백업하거나 존재를 인지할 필요가 없다는 뜻입니다.
흔히 드는 질문: 사용자가 니모닉을 백업하지 않으면 계정에 대한 통제권을 잃는 것 아닌가요? 새 기기에 기기를 바꾸면 계정에 접속할 수 없게 되는 건 아닐까요?
맞습니다. 단순히 니모닉 백업 기능을 제거하는 것은 제품 설계 실수에 불과합니다. 반면 seedless는 사용자가 니모닉의 존재를 '몰라도' 여전히 계정에 대한 완전한 통제권을 유지하는 것을 목표로 합니다.
즉, 사용자 자신만이 새 기기에서 계정 통제권을 자율적으로 복구할 수 있어야 하며, 다만 더 이상 UX가 열악하고 지나치게 기술 중심적인 니모닉 방식에 의존하지 않는 것입니다. 다음에 설명할 소셜 리커버리는 좋은 예시입니다.
Gasless
여기서 gas는 gas fee(가스 수수료)를 의미하므로, gasless는 "가스 수수료 무료"를 의미합니다. 마찬가지로 gasless가 실제로 가스 수수료가 전혀 들지 않는 것은 아니며, 사용자가 가스 개념을 강제로 이해하거나 가스 지불을 위해 다양한 네이티브 토큰을 미리 구매할 필요가 없다는 점을 의미합니다.
그렇다면 가스는 누가 지불하나요? 두 가지 경우로 나뉩니다:
-
사용자 계정에 이미 크립토 자산이 있는 경우, 예: 플레이 투 언(P2E) 게임에서 얻은 토큰, 에어드랍 받은 토큰, 혹은 타인의 송금 등. 이 토큰들이 일정한 가치와 유동성을 가지면, 리레이어(relayer)는 이를 받아들이고 사용자를 대신해 가스를 지불함으로써 수익을 얻고자 할 것입니다.
-
사용자 계정에 유가 토큰이 없는 경우, 예: 막 생성된 계정. 이때 체인 상에서 상호작용이 필요하면, 앱 제공자는 사용자를 위해 일정 목적의 '방향성' 가스를 지원하여 사용자 유입을 도울 수 있습니다. 이는 사용자 이탈률을 낮추는 효과가 있으며, 가스 보조금 지출을 감안하더라도 전체 고객 획득 비용(CAC)이 오히려 낮아질 수 있습니다. 또는 광고 시청 등을 통해 일부 가스를 획득하게 할 수도 있습니다.
이러한 전략은 가스 비용이 낮은 L2에서 특히 효과적입니다.
Social Recovery
소셜 리커버리(Social Recovery)란 키를 분실한 사용자가 사회적 관계를 이용해 계정 접근 권한을 다시 얻는 메커니즘을 말합니다. 만약 당신이 WeChat으로 새 기기에 로그인한 적이 있다면, "친구 두 명이 xxx를 당신의 계정으로 보내면 로그인할 수 있습니다"라는 경험을 해봤을 겁니다. 소셜 리커버리가 달성하고자 하는 목표가 바로 이것입니다. 다만 검증 주체가 WeChat에서 스마트 컨트랙트로 바뀐다는 점이 다릅니다.
흔히 하는 오해 중 하나는 소셜 계정을 이용해 지갑을 생성하거나 로그인하는 방식을 소셜 리커버리라고 부르는 것입니다. 이는 '사회적 관계'와 '소셜 플랫폼 계정'을 동일시하는 잘못된 생각입니다. 오랜 역사의 스마트 컨트랙트 지갑 Argent는 소셜 리커버리 기능을 내장하고 있으며, guardian(보호자)에게 이더리움 주소를 제공하도록 요구합니다. 사용자가 새 기기에 로그인할 때 이 guardian들이 서명을 제공함으로써 승인을 받는 방식입니다. 그러나 이 방식의 잠재적 문제는 guardian이 사용자보다 이더리움 계정 관리를 더 잘해야 한다는 전제에 있습니다. 그렇지 않으면, 당신이 guardian의 서명을 요청할 때 그들의 계정도 이미 접근 불가 상태라면, 당신의 계정도 함께 피해를 입게 됩니다. 따라서 이메일의 암호학적 증명(DKIM 서명)이나 전자 여권 등 일상에서 흔히 쓰이는 암호학 도구를 활용해 소셜 리커버리 방안의 실용성을 높이는 것이 더 실현 가능한 방법입니다.
Non-custodial
비託관(Non-custodial)은 크립토 산업에서 가장 정치적으로 올바르면서도 남용되기 쉬운 개념 중 하나입니다. 왜냐하면 각자가 자신만의 정의를 갖고 있기 때문입니다. 저희가 생각하는 비託관의 정의를 공유드리면, 주로 두 가지입니다:
-
지갑 개발사가 사용자의 계정을 자의적으로 조작할 수 없어야 함
-
지갑 개발사가 사용자가 자신의 계정을 조작하는 것을 저지할 수 없어야 함
이 두 가지에 동의하신다면, 어떤 지갑이托管(custodial), 半托管(semi-custodial), 비托管(non-custodial)인지 판단하는 기준이 됩니다:
그럼 이러한托管 수준을 아는 것이 무슨 쓸모가 있을까요? 사용자는 뒷배경 이론에 관심 없고, 그냥 잘만 작동하면 된다는 의견도 있습니다! 맞습니다. 저는 이런 관점도 부분적으로 동의합니다. 적어도 현재 단계에서는 업계가 사용자 인식 패러다임 전환 수준까지 발전하지 않았기 때문입니다. 사실 저는 이 세 가지 유형의 솔루션이 각각 다른 시나리오에 적합하다고 생각합니다:
-
托管 솔루션 - 거래소, 대규모 기관 금융 서비스, 엄격한 규제 준수 등에 적합. 예: Coinbase / Fireblocks가 제공하는 서비스. 특징은 사용자 수가 적고, 고빈도 상호작용이 필요 없으며, 고객당 단가가 높아 서비스 제공자가 고비용의 고보안 시스템을 유지할 수 있다는 점입니다.
-
半托管 솔루션 - 비교적 고급 개인 사용자 그룹에 적합. 이들은 서비스 제공자가 자신의 거래를 검열할 수 있음을 이해하며, 백업 계획(예: 개인키 내보내기)을 미리 준비할 능력이 있습니다. 서비스 제공자가 주도적이든 수동적이든 서비스를 거부할 경우에도 자산 안전을 보장할 수 있습니다. 이렇게 하면 평소에는 안전성과 편의성을 누릴 수 있고, 극단적 상황에서도 자산을 보호할 수 있습니다. 다만 이 솔루션은 서비스 제공자의 운영 관리 능력도 매우 높은 수준이어야 하며, 개인 사용자 수가 많고 다양한 앱과의 상호작용이 빈번하며, 데이터 가용성에 대한 요구도 높습니다. 서버에 저장된 데이터를 잃어버리면 백업하지 않은 모든 사용자가 영원히 계정에 접근할 수 없게 될 수 있기 때문입니다.
-
비托管 솔루션 - 대중 확산(Mass Adoption)을 겨냥한 시나리오에 적합. 처음 들으면 직관에 어긋나는 것 같지만, 비용 측면에서 보면 비托管 솔루션만이 저단가 시나리오에서 충분한 보안성과 가용성을 보장할 수 있는 유일한 방식입니다. 대규모 사용자를 대상으로 하는 앱 제공자가 위의 두 가지 솔루션을 선택한다면, 반드시 해당 제공자가 자신의 사용자 그룹에게 충분히 안전하고 사용 가능한 서비스를 제공할 수 있는지 검토해야 합니다. 그렇지 않으면 내부 인력의 악용, 해킹 침투, 또는 불가항력으로 서비스가 중단될 경우 모든 사용자가 피해를 입고 사업도 큰 타격을 입을 수 있습니다. 역사상 무수한 사례들이 하나의 교훈을 전달합니다. 보안은 사소한 일이 아니며, 사용자를 책임지는 것이 곧 자신을 책임지는 것입니다.
MPC - Multi-Party Computation
멀티파티 컴퓨팅(Multi-Party Computation)은 제로노우ledged 증명(ZKP)과 함께 현재 Web3의 두 가지 '마법'이라 불릴 만큼, 이들과 관련되면 불가능했던 일이 마법처럼 가능해지는 느낌을 줍니다. 실제로 일부 경우에는 그렇기도 하며, 특히 ZKP는 확률을 활용해 실행 가능성을 높입니다. MPC는 제어권을 분산시켜 리스크 관리 및 재해 대비 능력을 달성합니다.
MPC는 실제로는 패러다임이며, 다양한 기술 방안을 포함합니다. 현재 Web3 맥락에서는 대부분 tss를 의미합니다.
TSS - Threshold Signature Scheme
임계값 서명 방식(Threshold Signature Scheme)은 분산형 다자간 서명 프로토콜로, 분산형 키 생성, 서명, 공개키를 변경하지 않고도 개인키 조각을 교체하는 re-sharing 등의 알고리즘을 포함합니다.
m-n TSS란 하나의 공개키에 n개의 개인키 조각이 대응되며, 그 중 m개 조각의 공동 서명이 공개키로 검증될 수 있음을 의미합니다. 이 로직은 멀티시그(multi-sig)와 유사해 보이지만, 주된 차이점은 공개키의 수에 있습니다.
예를 들어 2-2 멀티시그는 문에 2개의 자물쇠가 걸려 있어 두 열쇠로 모두 열어야 문을 여는 방식입니다. 반면 2-2 TSS는 문에 하나의 자물쇠만 있지만, 열쇠가 두 조각으로 나뉘어 있어 합쳐야 문을 열 수 있습니다. 쉽게 이해하기 위해 설명한 것이므로 엄밀하지는 않으며, 두 열쇠를 합치는 것은 사실 샤미르 비밀 공유(Shamir Secret Sharing) 알고리즘에 더 가깝습니다. TSS 알고리즘에서는 키 조각들이 실제로 만나지 않으며, 각각 서명한 후 특정 알고리즘을 통해 대응 공개키로 검증이 가능합니다.
그렇다면 TSS는 반드시托管 또는 비托管인가요? 사실 필연적인 연관은 없습니다. 최종 솔루션의 설계와 선택에 따라 달라집니다. 비托管 솔루션은 사용자가 계정을 독립적으로 조작할 수 있어야 하므로, 사용자는 반드시 임계값 이상의 키 조각을 보유해야 합니다. 예를 들어 2-3 TSS의 경우 사용자는 2조각을 가져야 하며, 2-2 방식은 비托管을 달성할 수 없고 최대 半托管까지만 가능합니다(예: ZenGo). 하지만 사용자가 가장 많은 키 조각을 관리하게 되면, 당연히 사용자 능력에 대한 요구가 높아져 대중 확산은 어렵게 됩니다.
마지막으로
여기까지 작성하면서 Web3 계정 관련 주요 용어들을 대부분 다뤘다고 생각합니다. 글자 수를 확인해보니 약 5,000자 정도네요. 이렇게 많은 내용을 담다 보니 오류나 누락이 있을 수 있으며, 혹시 발견하시거나 다른 의견이 있으시면 언제든지 Twitter(@frank_lay2)로 알려주세요. 향후 내용 추가나 수정이 있을 경우에도 Twitter에서 실시간으로 공유하겠습니다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














