<aside>
⚠️ 본 글은 원문을 한글로 번역한 문서이며, 번역 과정에서 Team Corn의 사견을 넣지 않았습니다. 또한 Team Corn의 공식 지지 입장 표명이 아닌 단순 한글 번역본입니다.
</aside>
원문 정보
일반인을 위한 BIP110 코드 리뷰
이 문서는 개발자가 아닌 사람들도 Bitcoin Knots의 BIP110 합의 규칙 구현을 직접 검토할 수 있기를 바라며 작성되었습니다.
합의 변경 사항을 검토하는 일은 어려운 작업처럼 보일 수 있지만, BIP110은 단순하기 때문에 모두가 이를 검토할 수 있는 드문 기회를 제공합니다.
5개의 소스 코드 파일에 걸쳐 수정된 코드 5줄과 추가된 코드 72줄뿐이므로, 간단한 문서로 설명할 수 있습니다.
BIP110 규칙 참조
- 34바이트를 초과하는 새 출력 scriptPubKey는 유효하지 않습니다. 단, 첫 번째 opcode가 OP_RETURN인 경우에는 최대 83바이트까지 유효합니다.
- 256바이트를 초과하는 OP_PUSHDATA* 페이로드와 스크립트 인자 witness 항목은 유효하지 않습니다. 단, BIP16 scriptSig의 redeemScript push는 예외입니다.
- 정의되지 않은 witness(또는 Tapleaf) 버전(즉, Witness v0/BIP 141, Taproot/BIP 341, 또는 P2A가 아닌 것)을 소비하는 것은 유효하지 않습니다. (정의되지 않은 witness 버전으로 출력을 생성하는 것은 여전히 유효합니다.)
- Taproot annex가 있는 witness stack은 유효하지 않습니다.
- 257바이트(128개의 스크립트 리프가 있는 merkle tree)보다 큰 Taproot control block은 유효하지 않습니다.
- 어디에 있든(실행되지 않더라도) OP_SUCCESS* opcode를 포함하는 Tapscript는 유효하지 않습니다.
- OP_IF 또는 OP_NOTIF 명령을 실행하는 Tapscript는 (결과와 관계없이) 유효하지 않습니다.
읽는 방법