Coin Control은 특정 결제에 사용할 자금을 직접 선택하는 기능입니다. 비트코인 잔액은 이전 거래에서 받은 뒤 아직 쓰지 않은 개별 출력인 UTXO로 이루어집니다. 보통 지갑이 자동으로 고르지만, Coin Control을 쓰면 사용자가 선택할 수 있습니다.
앨리스는 일한 대가로 120 000 sat를 받고, 선물로 80 000 sat를 더 받았습니다. sat는 비트코인의 최소 단위입니다. 지갑에는 총 200 000 sat로 보이지만, 이 예에서는 별개의 UTXO 두 개로 구성됩니다. 결제할 때 둘 다 쓸 필요는 없습니다. Coin Control 목록을 열어 일한 대가로 받은 자금만 고를 수 있습니다. ‘일’, ‘선물’ 같은 라벨은 구분에 도움이 됩니다. 다만 지갑에 적은 개인 메모이지 자금 출처를 증명하는 자료는 아닙니다. 특정 자금을 고를 이유가 없다면 지갑에 선택을 맡겨도 됩니다. [3]
앨리스는 100 000 sat를 보내기 위해 120 000 sat짜리 UTXO를 고릅니다. 선택한 출력은 통째로 사용됩니다. 큰 지폐를 내고 거스름돈을 받는 것과 비슷합니다. 완성된 거래의 가상 크기가 200 vB이고 수수료율이 5 sat/vB라고 가정해 보겠습니다. vB는 수수료 계산에 쓰는 크기 단위이므로, 이 예의 수수료는 1 000 sat입니다. 받는 사람에게 100 000 sat가 가고, 19 000 sat는 change, 즉 거스름돈이라는 새 출력으로 앨리스에게 돌아옵니다. 다른 80 000 sat짜리 UTXO는 그대로 남습니다. 크기를 미리 정하고 보내는 사람이 수수료를 부담하는 예일 뿐, 모든 결제의 크기가 이렇다는 뜻은 아닙니다. [4]
사용하는 UTXO마다 새 거래의 입력이 되어 데이터를 추가합니다. 입력 유형과 수수료율이 같다면 작은 입금 열 개로 결제하는 것이 큰 입금 하나로 결제하는 것보다 보통 더 비쌉니다. 수수료는 송금액의 일정 비율이 아니라 거래 크기와 선택한 요율로 계산합니다. 작은 UTXO 여러 개를 자기 소유의 출력 하나로 합치는 것을 통합이라고 합니다. 수수료율이 낮을 때 통합하면 나중의 결제를 단순하게 만들고 그 수수료를 줄일 수 있습니다. 하지만 통합 자체도 수수료가 들며, 사용한 자금 사이의 연결이 공개됩니다. [1]
앨리스가 일한 대가와 선물을 한 거래에 함께 쓰면 블록체인 관찰자는 둘을 같은 사람이 통제한다고 추정할 수 있습니다. 블록체인은 공개된 거래 기록입니다. 개인 라벨은 보이지 않지만 입력들이 함께 사용됐다는 사실은 보입니다. 따로 선택하면 이 특정 연결을 피할 수 있습니다. 그렇다고 익명이 되는 것은 아닙니다. 다른 관계가 이미 알려져 있을 수 있습니다. 입력을 함께 썼다고 소유자가 한 명이라고 확정할 수도 없습니다. 예를 들어 Payjoin에서는 보내는 사람과 받는 사람이 모두 한 결제에 입력을 제공할 수 있습니다. [2]
앨리스의 19 000 sat는 나중에 다른 거래로 돌려받는 돈이 아닙니다. change는 같은 결제 안에서 지갑을 위한 새 출력으로 생깁니다. 이 잔액에도 이력이 있습니다. 원래 일한 대가에서 나온 돈입니다. 나중에 선물과 함께 쓰면 처음에 피했던 연결이 생길 수 있습니다. 따라서 거스름돈 출력도 살펴보고, 새 주소를 사용한다고 이전 자금과의 공개된 연결이 사라지는 것은 아니라는 점을 기억해야 합니다. 거스름돈이 크다는 것은 선택한 금액이 결제액과 수수료 합계를 크게 웃돈다는 뜻이지, 그 자체로 선택 오류라는 뜻은 아닙니다. [2]
앨리스는 서명하기 전에 실제 입력, 받는 사람의 전체 주소, 금액, 자기 거스름돈, 총수수료를 확인합니다. 서명은 특정 거래를 승인하는 행위입니다. 목록에 체크했다고 결제가 완성된 것은 아닙니다. 선택한 자금으로 금액과 수수료를 모두 충당해야 합니다. 아직 확인되지 않은 입금을 사용하면 새 결제는 그 자금을 받은 원래 거래에 의존합니다. 원래 거래가 블록체인에 포함되지 않으면 그 출력을 사용하는 결제도 확인될 수 없습니다. 수동 선택은 결제를 이해하도록 돕는 기능이지, 결과를 모르는 설정을 바꾸라는 권유가 아닙니다. [4]
프로그램과 버전에 따라 다릅니다. Bitcoin Core v29.0의 fundrawtransaction은 add_inputs가 기본으로 켜져 있습니다. 지정한 입력이 부족하면 다른 입력을 추가할 수 있습니다. 선택한 UTXO만 쓰려면 이 설정과 최종 거래 초안을 확인해야 합니다. listunspent로 사용할 수 있는 출력을 살펴볼 수 있습니다. txid는 이전 거래를, vout는 그 거래 안의 출력 위치를 가리키며, 둘을 합쳐 특정 UTXO를 식별합니다. solvable은 프로그램이 지출 방법을 안다는 뜻이지 필요한 개인키를 가지고 있다는 뜻은 아닙니다. 거래를 구성한다고 빠진 서명이 생기지는 않습니다. [4] [3]
특정 입금을 분리할 이유를 알고 있거나 지출 비용을 이해하고 싶을 때 Coin Control이 도움이 됩니다. 안전한 백업을 대신하지 못하고, 자금의 과거를 바꾸거나 공개된 연결을 지우지도 못합니다. 결제마다 반드시 쓸 필요는 없습니다. 자동 선택으로 충분할 때와 직접 결정해야 할 때를 구분하고, 준비된 거래가 자신의 의도와 맞는지 확인하는 것이 중요합니다. [3] [2]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 UTXO, 지갑, Change Address, Bitcoin 프라이버시. 다음 항목에서도 이 글을 참조합니다 Change Address, CoinJoin, Bitcoin 프라이버시, Coin Selection.