MSTR Cat

블록체인/레벨 VII · 진화/7.1 이더리움: 세계 컴퓨터/수업 4

명시적 서명: UTXO와 토큰 승인

지출하는 서명과 그보다 오래 유지되는 권한

준비물PSBT를 지원하는 하드웨어 지갑Etherscan 또는 유사한 블록 탐색기에 대한 접근Revoke.cash 인터페이스

호기심

  1. 스마트 컨트랙트는 왜 사용자가 상호작용한 지 수년이 지난 뒤에도 토큰을 옮길 수 있을까요?
  2. 트랜잭션에 서명하는 것과 상시 권한을 부여하는 것은 구조적으로 어떻게 다를까요?
  3. 파일 형식이 어떻게 서명 전에 비트코인 트랜잭션의 모든 입력과 출력을 보이게 만들 수 있을까요?

탐구

  1. EVM 체인에서는 ERC-20 표준이 토큰 전송을 규정합니다. 외부 지갑에서 컨트랙트로 토큰을 옮기려면 보유자는 먼저 `approve`를 호출해, 해당 컨트랙트가 자신을 대신해 그 토큰을 특정 수량만큼 사용할 수 있는 권한을 부여해야 합니다. 이 허용량(allowance)은 컨트랙트 상태에 기록되며, 철회되거나 소진될 때까지 무기한 유지됩니다. 탈중앙화 거래소에 10,000개 토큰을 승인한 사용자는 스왑이 끝난 뒤에도 그 상시 권한을 그대로 남겨 두게 됩니다.
  2. EIP-2612는 `permit`을 도입해, 사용자가 즉시 트랜잭션을 제출하지 않고도 이 허용량을 설정하는 오프체인 메시지에 서명할 수 있게 했습니다. 이 서명은 사용되거나 기한이 지날 때까지 유효하며, 동일한 지출 권한을 부여합니다. 일단 허용량이 존재하면, 승인된 지출자 주소를 통제하는 사람은 누구든 `transferFrom`을 호출해 허용량을 모두 빼낼 수 있습니다. 사용자가 그 이후로 해당 컨트랙트와 한 번도 상호작용하지 않았더라도 마찬가지입니다.
  3. 지갑 드레이너는 이 구조를 악용합니다. 피싱 사이트는 사용자를 속여 악성 주소에 대한 무제한 `approve`나 `permit`에 서명하게 만듭니다. 일단 서명이 이루어지면 공격자는 마음대로 토큰을 옮길 수 있는 상시 권한을 갖게 됩니다. 이 승인을 철회하려면 추가 트랜잭션과 가스비가 들기 때문에 번거롭습니다. 결국 단 한 번의 서명이 영구적인 취약점을 만들 수 있으며, 사용자가 Revoke.cash나 Etherscan 같은 도구로 활성 허용량을 직접 점검하지 않는 한 눈에 띄지 않습니다.
  4. 비트코인의 UTXO 모델은 다르게 작동합니다. 상시 권한이라는 것이 없습니다. 각 트랜잭션은 특정 미사용 트랜잭션 출력(UTXO)을 명시적으로 소비해 새로운 출력을 만듭니다. 서명은 특정 주소의 특정 코인을 특정 목적지로 옮기는 것만 승인하며, 남는 권한은 없습니다. 사용자가 거래소로 1 BTC를 보내는 트랜잭션에 서명했다면, 그 서명을 나중에 또 다른 1 BTC를 보내는 데 재사용할 수는 없습니다.
  5. BIP-174는 부분 서명된 비트코인 트랜잭션(PSBT) 형식을 정의합니다. 서명 전의 PSBT에는 모든 입력과 출력이 담겨 있어, 소프트웨어 지갑이나 하드웨어 지갑이 무엇이 지출되고 어디로 가는지 정확히 표시할 수 있습니다. 사용자는 입력, 출력, 수수료 등 트랜잭션의 전체 구조를 확인한 뒤 바로 그 데이터에 서명합니다. 기본 서명 유형에서는 서명이 트랜잭션 전체에 커밋됩니다. 숨겨진 권한이 생성되지 않으므로, 악의적인 서명이라도 그 단일 트랜잭션에 명시된 코인만 옮길 수 있을 뿐 향후 전송을 위한 백도어를 남길 수는 없습니다.
  6. 트레이드오프는 컴포저빌리티입니다. EVM 승인 덕분에 컨트랙트가 여러 동작에 걸쳐 사용자를 대신해 토큰 잔액을 관리하는 복잡한 다단계 상호작용이 가능합니다. 반면 비트코인의 명시적 모델은 모든 이동에 개별 서명을 요구하므로, 같은 방식으로 유연하게 스마트 컨트랙트에 권한을 위임하기 어렵습니다. 사용자는 투명성과 상시 권한의 부재를 통해 보안을 얻지만, 자동화된 지속적 에이전트 동작의 편리함은 포기해야 합니다.

핵심 사실

  • ERC-20의 `approve`는 보유자를 대신해 토큰을 지출할 수 있는 권한을 컨트랙트에 부여하며, 이 권한은 철회될 때까지 유지됩니다.
  • EIP-2612는 즉시 트랜잭션을 보내지 않고도 오프체인 서명으로 토큰 허용량을 설정할 수 있게 합니다.
  • 지갑 드레이너는 무제한이거나 잊힌 승인을 악용해 탈취된 지갑에서 토큰을 빼냅니다.
  • 비트코인 트랜잭션은 특정 UTXO를 소비하고 새로운 출력을 생성하며, 상시 권한은 생성되지 않습니다.
  • BIP-174(PSBT)를 통해 사용자는 서명하기 전에 비트코인 트랜잭션의 모든 입력과 출력을 확인할 수 있습니다.
  • EVM의 컴포저빌리티는 지속되는 허용량에 의존하는 반면, 비트코인의 보안은 명시적인 일회성 서명에 의존합니다.

연습 아홉, 여섯, 셋, 하나

9모으기DeFi나 암호화폐에서 사용자 서명이 필요한 일반적인 작업 9가지를 나열하세요. 그중 상시 권한을 만드는 것과 일회성 전송인 것을 구분해 적으세요.
6묶기각 서명이 남기는 것을 기준으로 9개를 6개 그룹으로 묶으세요.
3추리기6개 그룹을, 일회성 전송에 비해 상시 권한이 고유한 보안 위험을 만드는 3가지 핵심 이유로 압축하세요.
1결정화각 모델에서 서명이 무엇을 승인하는지, 그리고 그 승인이 어떻게 유지되는지(또는 유지되지 않는지) 한 문장으로 쓰세요.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS