일반 Bitcoin 거래는 입력과 출력으로 UTXO 사이 가치를 옮깁니다. 은행에 잔액 변경을 명령하는 것이 아니라 노드가 특정 체인 상태에서 참조, 금액, 스크립트와 시간 조건을 확인합니다.
입력은 발신 주소만이 아니라 txid와 출력 인덱스를 지정합니다. 참조 출력이 존재하고 지출 가능해야 합니다. 한 거래의 두 입력이 같은 출력을 중복 지출할 수 없으며 다른 거래와의 충돌은 검증 중인 이력을 기준으로 판단합니다. [Bitcoin Core v29.0: transaction validation]
100,000 sat UTXO에서 수신자 60,000 sat와 거스름돈 39,000 sat를 만들면 남은 1,000 sat가 수수료입니다. 입력 전체가 지출됩니다. 거스름돈 전용 프로토콜 필드도 수수료 전용 출력도 없습니다. 거스름돈 누락은 수수료를 실수로 늘릴 수 있습니다. [Bitcoin Developer Reference: Transactions]
ScriptSig와 해당하는 witness가 이전 출력 조건을 충족할 데이터를 제공합니다. 서명 메시지는 입력 유형과 SIGHASH에 따라 달라 모든 서명이 모든 필드를 똑같이 구속하지 않습니다. 유효 서명도 누락 입력, 과도한 출력, 미충족 시간 잠금을 우회하지 못합니다. [Bitcoin Developer Reference: Transactions]
txid는 witness 없는 직렬화의 이중 SHA-256이며 wtxid는 witness를 포함하고 witness가 없으면 txid와 같습니다. 수수료율은 보통 무게를 4로 나누어 올림한 vsize를 사용합니다. 같은 결제 금액도 포함 비용이 같지는 않습니다. [BIP 141: transaction identifiers and weight]
서명이나 mempool 수락은 확인이 아닙니다. relay policy는 합의 유효성과 다르며 거래는 대기, 충돌 대체 또는 확인 후 재구성으로 분리될 수 있습니다. txid 그림만이 아니라 올바른 네트워크의 실제 출력과 확인을 검사하세요. [Bitcoin Core v29.0: block validation]
입력에서 출력을 뺀 금액이 수수료
일반 트랜잭션이 총 250 000 sat의 입력을 소비하고 총 248 200 sat의 출력을 만들면 차액 1 800 sat가 수수료입니다. 수수료는 암묵적으로 정해지며 별도의 수수료 주소로 보내지지 않습니다.
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 UTXO, 개인 키, Mempool, 트랜잭션 수수료, SegWit. 다음 항목에서도 이 글을 참조합니다 Bitcoin Whitepaper, Timechain / Blockchain, Full Node, UTXO.