
밑바닥부터 시작하는 비트코인
202
if not self.verify_input(i):
➋
return False
return True
➊ 수수료가 마이너스 값이 아닌 것을 확인해서 코인이 발행되지 않도록 합니다.
➋ 각 입력이 올바른 해제 스크립트를 가지고 있는지 확인합니다.
풀 노드는 더 많은 체크리스트로 검증합니다. 예를 들면 이중 지불 확인, 몇몇 합의 규칙 확인
(최대
sigops
개수, 해제 스크립트의 길이 제한) 등입니다.
9
하지만 지금 목적에는 이 정도로
충분합니다.
7.2
트랜잭션 생성
트랜잭션을 검증할 때 사용한 코드를 많이 활용하여 트랜잭션을 생성합니다. 이렇게 하면 검증
항목에 부합하는 트랜잭션을 생성할 수 있습니다. 요컨대 생성된 트랜잭션에서 입력 비트코인
의 합은 출력 비트코인의 합보다 크거나 같아야 합니다. 또한 잠금 스크립트는 해제 스크립트
와 결합되었을 때 유효해야 합니다.
트랜잭션을 생성하려면 최소한 하나의 이전 트랜잭션 출력이 필요합니다. 즉, 존재하고 사용
가능한
UTXO
가 필요합니다. 당연히 이
UTXO
의 잠금 스크립트에 있는 (해시된 ) 공개키에
대응하는 비밀키도 필요합니다.
이번 장 이후에서는
p2pkh
잠금 스크립트로 잠근 비트코인을 사용하는 트랜잭션을 작성하겠
습니다.
9
sigops
란 한 블록에 포함된 서명 검증 ...