블록체인/레벨 III · 네트워크/3.1 노드/수업 7
합의 규칙 및 검증
블록을 돈으로 만드는 규칙 목록
준비물공개 블록 탐색기BIP141 사양선택 사항: 비트코인 코어 노드
호기심
- 가장 많은 연산 능력을 가진 채굴자가 무한히 코인을 만드는 것을 막는 것은 무엇인가요?
- 내 노드가 중계를 거부한 트랜잭션이 어떻게 여전히 유효한 블록에 포함될 수 있을까요?
- 합의 코드가 바뀌면 모든 사람이 정확히 같은 순간에 업그레이드해야 하나요?
탐구
- 합의 규칙은 모든 풀노드가 블록을 검증할 때 사용하는 엄격한 기준입니다. 이 규칙들은 기술적으로 무엇이 가능한지를 정의합니다. 발행 일정, 4,000,000단위의 블록 웨이트 한도, 작업증명 난이도, 서명 유효성 등이 그것입니다. 단 하나의 규칙이라도 위반한 블록은 그 블록을 만드는 데 얼마나 많은 해시파워가 들었든 모든 정직한 노드에 의해 거부됩니다. 채굴자는 블록을 제안하고, 노드는 그 블록이 인정되는지를 결정합니다. 이러한 분리 덕분에 어떤 주체도 원장의 상태를 일방적으로 바꿀 수 없습니다.
- 정책 규칙은 트랜잭션이 채굴되기 전에 노드가 피어들에게 무엇을 전달할지를 정합니다. 여기에는 더스트 임계값, 최소 릴레이 수수료, 표준 스크립트 유형 등이 포함됩니다. 정책을 위반한 트랜잭션은 대부분의 노드에서 버려지지만, 채굴자가 블록에 포함하면 유효합니다. 이 구분은 중요합니다. 보안을 정책상의 거부에 의존하는 것은 위험한데, 작정한 행위자는 피어 필터를 우회해 채굴자에게 직접 트랜잭션을 제출할 수 있고, 합의 규칙만 충족한다면 네트워크는 비표준 트랜잭션을 받아들일 수밖에 없기 때문입니다.
- 코드가 곧 명세입니다. 규칙이란 널리 실행되는 노드 소프트웨어가 엣지 케이스까지 포함해 실제로 집행하는 것 그 자체이며, 그래서 합의 코드는 느리게 바뀌고 비트코인 코어의 다른 어떤 부분보다도 더 집중적으로 검토됩니다. 합의 버그는 긴급 상황으로 다뤄집니다. 2010년의 값 오버플로 버그와 2018년의 인플레이션 버그는 모두 긴박한 상황에서 조율된 릴리스로 수정되었습니다.
- 이러한 규칙을 바꾸려면 조율된 채택이 필요합니다. 소프트 포크는 규칙을 강화하므로 업그레이드하지 않은 노드도 새 블록을 받아들입니다. 하드 포크는 규칙을 완화하거나 변경하므로 모든 노드가 업그레이드하지 않으면 분리됩니다. 이후 강의에서 둘 다 자세히 다룹니다. SegWit(2017년 8월)은 소프트 포크였고, 비트코인 캐시(2017년 8월)는 블록 크기 한도를 둘러싼 하드 포크 분쟁에서 생겨났습니다.
- 블록을 만드는 데는 비용이 많이 들지만, 블록을 검사하는 데는 비용이 적게 듭니다. 유효하지 않은 블록을 만든 채굴자는 검증하는 모든 노드가 그 블록을 버리기 때문에 보상과 투입한 에너지를 잃게 되며, 따라서 규칙 위반은 값비싼 도박이 됩니다. 이 비용은 검증의 엄격함을 뒷받침합니다. 네트워크의 보안은 수천 개의 독립적인 노드가 모든 헤더와 트랜잭션을 검사하는 데 달려 있으며, 이를 통해 어떤 단일 장애 지점도 공유 상태를 훼손할 수 없습니다.
- mempool.space나 blockchain.com 같은 블록 탐색기를 여세요. 최근 블록 하나를 선택해 'weight' 필드를 확인하세요. 이 수치를 BIP141에 정의된 4,000,000 웨이트 단위 한도와 비교해 보세요. 채굴자들이 모든 노드가 집행하는 합의 제약을 지키면서 바이트당 수익을 극대화하려 하기 때문에, 최근 블록들이 이 상한에 얼마나 가깝게 채워지는지 살펴보세요.
핵심 사실
- 합의 규칙은 블록의 유효성을 정의하고, 정책 규칙은 트랜잭션 전달을 정의합니다.
- SegWit(BIP141)에서 최대 블록 웨이트는 4,000,000단위입니다.
- 코인베이스 출력은 100번의 확인을 거쳐야 사용할 수 있습니다.
- SegWit는 2017년 8월, 블록 481,824에서 소프트 포크 방식으로 활성화되었습니다.
- 합의 코드는 다른 코드보다 훨씬 더 신중하게 검토되는데, 조금이라도 동작이 어긋나면 체인이 분할될 수 있기 때문입니다.
- 중계 노드에 의해 거부되더라도 채굴될 경우 비표준 트랜잭션은 유효할 수 있습니다.
연습 아홉, 여섯, 셋, 하나
9모으기비트코인 코어에서 새로운 블록 헤더나 트랜잭션에 대해 수행되는 9가지 구체적인 검증 절차를 나열하십시오.
6묶기9가지 검사 항목을 구조적 무결성, 경제적 한계, 암호학적 유효성, 시간 제약, 상태 전이, 네트워크 파라미터의 6개 범주로 분류하십시오.
3추리기6개 범주를 합의 규칙이 막는 3가지 유형의 피해로 압축하십시오.
1결정화채굴자의 의도와 관계없이 노드의 블록 거부가 최종적인 이유를 한 문장으로 설명하십시오.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.