MSTR Cat

블록체인/레벨 II · 작동 원리/2.2 트랜잭션/수업 4

거스름돈 출력

보내는 사람을 드러내는 나머지 값과, 그것을 숨기려는 알고리즘들

준비물블록 탐색기(예: mempool.space 또는 blockchain.com)최소 두 개의 UTXO를 가진 비트코인 지갑트랜잭션 ID, 입력 금액, 출력 구조를 기록할 스프레드시트

호기심

  1. 정확한 금액을 지불하는 트랜잭션은 왜 거스름돈이 필요한 트랜잭션과 다르게 보이는 경우가 많을까요?
  2. 분석가는 지갑의 내부 상태를 보지 않고 어떻게 어느 출력이 지불이고 어느 출력이 거스름돈인지 판단할 수 있을까요?
  3. 코인 선택 알고리즘이 더 낮은 수수료보다 약간 더 높은 수수료를 택하게 만드는 요인은 무엇일까요?

탐구

  1. 비트코인 트랜잭션의 입력은 나눌 수 없는 실물 지폐처럼 작동합니다. 앨리스가 5 BTC를 지불하려는데 20 BTC짜리 UTXO 하나만 가지고 있다면, 그 입력을 나눌 수 없습니다. 20 BTC 전체를 사용하고, 수수료를 반영한 뒤 15 BTC를 거스름돈으로 돌려받아야 합니다. 그래서 대부분의 트랜잭션에는 수신자에게 가는 출력과 거스름돈을 돌려받는 출력, 이렇게 두 개의 출력이 있습니다.
  2. 프로토콜 수준에서는 ‘지불’ 출력과 ‘거스름돈’ 출력 사이에 구분이 없습니다. 둘 다 P2PKH나 P2WPKH 같은 표준 잠금 스크립트로, 지출 조건이 충족되기를 기다립니다. 어느 출력이 어느 것인지는 트랜잭션 생성자만 압니다. 이러한 구분의 부재가 핵심적인 프라이버시 메커니즘입니다. 거스름돈 주소와 지불 주소가 똑같아 보이면 외부 관찰자는 둘을 확정적으로 구분할 수 없습니다.
  3. 지갑은 코인 선택 알고리즘으로 어떤 입력을 사용할지 결정합니다. 앨리스가 50,000사토시짜리 UTXO 두 개를 가지고 있고 밥에게 85,000사토시를 지불하려 한다면, 두 입력을 모두 사용하고(100,000 sats) 출력 두 개를 만듭니다. 하나는 밥에게 가는 출력(85,000 sats)이고, 다른 하나는 자신에게 돌아오는 출력(15,000 sats에서 수수료를 뺀 금액)입니다. 하나 이상의 입력과 정확히 두 개의 출력으로 이루어진 이 형태는 체인에서 가장 흔한 형태 중 하나입니다.
  4. 프라이버시를 위해 거스름돈은 지갑의 키 풀에서 한 번도 사용되지 않은 새 주소로 보내는 것이 표준입니다. 거스름돈에 기존 주소를 재사용하면 체인 분석가가 이전 트랜잭션 활동을 새 트랜잭션과 연결할 수 있습니다. 가장 좋은 경우에는 지불 출력과 거스름돈 출력이 모두 새 주소로 지정되어, 외부 관찰자에게 똑같아 보이게 됩니다.
  5. 모든 지불에 거스름돈이 필요한 것은 아닙니다. 2016년 마크 에르하르트(Mark Erhardt)가 설명하고 비트코인 코어에서 사용하는 브랜치 앤 바운드(Branch and Bound) 같은 코인 선택 알고리즘은, 합계가 지불 금액과 수수료의 합에 충분히 가까워 남는 소액을 그냥 수수료로 넘길 수 있는 입력 조합을 찾습니다. 거스름돈 없는 트랜잭션은 더 저렴하고, 새로운 소액 출력을 만들지 않으며, 분석가에게 단서를 하나 덜 줍니다.
  6. 아주 작은 출력은 그 자체로 문제를 일으킵니다. 더스트 임계값(기본값 기준 P2PKH 출력은 약 546사토시, P2WPKH는 294사토시)보다 작은 출력은 그 가치보다 사용하는 비용이 더 크며, 노드는 이런 출력을 만드는 트랜잭션을 릴레이하지 않습니다. 분석가들은 거스름돈을 드러내는 전형적인 패턴도 찾습니다. 딱 떨어지는 금액의 출력은 대개 지불이고, 주소 유형이 입력과 같은 출력은 거스름돈인 경우가 많습니다.

핵심 사실

  • 트랜잭션 입력은 나눌 수 없습니다. 지불 금액과 수수료를 넘는 잔여분은 수수료에 더할 만큼 작지 않은 한 거스름돈으로 돌려받습니다.
  • 프로토콜 수준에서는 거스름돈 출력과 지불 출력 사이에 기술적 차이가 없으며, 어느 것이 어느 것인지는 트랜잭션 생성자만 압니다.
  • 브랜치 앤 바운드(Branch and Bound) 코인 선택(Erhardt, 2016)은 거스름돈 출력이 필요 없는 입력 조합을 찾습니다.
  • 거스름돈 없는 트랜잭션에는 발신자에게 자금을 돌려주는 출력이 없으며, 남는 소액은 모두 수수료로 갑니다.
  • 거스름돈에 한 번도 노출된 적 없는 새 주소를 사용하면 제3자가 이를 지불 출력과 쉽게 구분하지 못합니다.
  • 비트코인 코어의 기본 더스트 임계값은 P2PKH 출력의 경우 약 546 사토시이며, P2WPKH의 경우는 294입니다.

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

9모으기직접 관찰했거나 생성한 최근 비트코인 트랜잭션 9건을 나열하세요. 각 트랜잭션의 입력 수와 출력 수, 그리고 거스름돈 출력이 있었는지 적으세요.
6묶기9건을 구조에 따라 6개 범주로 분류하세요: 단일 입력/단일 출력, 다중 입력/두 개의 출력(거스름돈 있음), 다중 입력/단일 출력(거스름돈 없음), 코인베이스, OP_RETURN, 기타 복잡한 구조.
3추리기6개 그룹을, 분석가가 출력을 특정 사용자 신원과 얼마나 쉽게 연결할 수 있는지에 관한 3가지 뚜렷한 프라이버시 함의로 압축하세요.
1결정화지불 출력과 거스름돈 출력 사이에 기술적 구분이 없다는 점이 왜 대체 가능성 측면에서는 장점이면서 개인 프라이버시 측면에서는 과제가 되는지 한 문장으로 설명하세요.

팩트 체크

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

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

EN PT ES ZH JA RU DE FR MS