비트코인 코어 지갑의 UTXO 사용법

Bitcoin Core 지갑이 UTXO를 어떤 로직에 따라 사용하는지 궁금해서 찾아봤습니다.

  1. 하나의 UTXO가 사용할 금액(타겟)을 정확히 만족시키면 해당 UTXO를 사용.

  2. 타겟보다 작은 여러 개의 UTXO의 총합이 타겟을 정확히 만족시키면 해당 UTXO들을 사용.

  3. 타겟보다 작은 여러 개의 UTXO의 총합이 타겟보다 작으면 타겟보다 큰 UTXO 중에 가장 작은 UTXO를 사용.

  4. 랜덤하게 선택한 UTXO들 조합의 총합이 타겟과 같거나 클때까지 1000번 시도. 총합이 타겟을 정확히 만족시키면 즉시 종료.

  5. (1) 타겟보다 큰 UTXO 중 가장 작은 UTXO
    (2) 4번에서 찾은 UTXO 조합 중 총합이 가장 작은 조합.
    (1), (2)를 비교해서 작은 쪽을 선택

Bitcoin Core 지갑은 아웃풋 크기를 최소화하는 방법으로 최적화되어 있는 걸 알 수 있습니다.

물론 이 방법이 항상 정답은 아닙니다. 지갑을 만드는 엔지니어가 UTXO 아웃풋 크기, 성능, 보안 등 어떤 면을 강조하느냐에 따라 다양한 알고리즘이 가능한 영역입니다.

관련 코드는 Bitcoin Core 코드에서 확인 가능합니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s