
13
장
세그윗
317
이런 이유로 해제 스크립트가 가변성을 띠게 됩니다. 즉 의미 변경 없이 (유효성을 유지하면
서) 해제 스크립트를 변경할 수 있고, 전체 스크립트를 변경할 수 있고, 따라서 트랜잭션
ID
를
변경할 수 있습니다. 그러면 이러한 트랜잭션을 참조하는 다른 트랜잭션들 (즉,
ID
가 변할 수
있는 트랜잭션의
UTXO
를 소비하는 트랜잭션)의 유효성을 보장할 수 없습니다. 이전 트랜잭
션의 해시값이 변경될 수 있으므로 이를 특정해야 하는 트랜잭션의 입력은 작성되지 못합니다.
하지만 일단 트랜잭션이 블록체인에 들어가면 이것은 (적어도 채굴자가 아니어서 작업증명을
할 필요가 없다면
4
) 문제가 안 됩니다. 왜냐하면 블록체인 안에서는 트랜잭션
ID
가 고정되므
로 바뀔 수 없기 때문입니다. 그러나 결제 채널에서는 블록체인에 포함되기 전의 트랜잭션을
참조하는 트랜잭션이 있기 때문에 문제가 됩니다.
13.1.2
가변성 문제 해결
트랜잭션 가변성을 해결하기 위해 해제 스크립트 필드를 비우고 그 안에 있어야 할 데이터를
별도의 필드로 옮깁니다. 당연히 별도의 필드는
ID
계산을 위한 해시함수 입력으로 넣지 않습
니다.
p2wpkh
의 경우 서명과 공개키는 해제 스크립트의 원소입니다. 그래서 이들을 증인필
드로 옮깁니다. 증인필드는 트랜잭션의 해시값을 계산할 때 사용되지 ...