비트 코인 개발자는 수정 사항이 합의 규칙이나 실행중인 네트워크 프로토콜에 영향을 미치지 않도록 어떻게 확인합니까?

Dec 17 2020

저는 비트 코인 합의 규칙이 모든 단일 노드에서 개별적으로 시행 된다는 것을 이해합니다 . 그러나 대부분의 사람들은 Bitcoin Core의 기본 버전을 실행하므로 Bitcoin 개발자가 수행 한 구현이 가장 중요합니다.

그래서 제 질문은 제목에 있습니다. 구현이 합의 규칙이나 네트워크 프로토콜에 영향을 미치지 않는다는 것을 어떻게 보장합니까?

각 비트 코인 버전이 극도의주의와 광범위한 테스트를 거쳐 출시된다는 것도 이해하지만, 이에 대한 체계적인 관행이 있는지 계속 궁금합니다. 모든 포인터를 높이 평가할 것입니다.

답변

9 MCCCS Dec 17 2020 at 16:49

"최고의 노력". 공식적인 증명은 도움이되지 않습니다. 모든 사람이 할 수있는 일은 다른 잘 작성된 소프트웨어와 마찬가지로 테스트를 작성하는 것입니다.

그들은 또한 LevelDB 같은 일부 종속성 포크를 유지하고 같은 그들 중 일부를 업데이트하지 버클리 .

무엇이 잘못되었는지 참조하십시오 . 특히 2013 년 하드 포크가 변경되지 않은 합의 프로토콜을 보장 할 수 있었다면 발생하지 않았을 것입니다.

5 MichaelFolkson Dec 17 2020 at 21:17

장기 핵심 기여자는 Core 코드베이스의 어떤 부분이 네트워크의 노드 간 합의에 잠재적으로 영향을 미칠 수 있는지에 대한 일반적인 이해를 가지고 있습니다. 그러나 합의는 "미끄럽다"고 과거에는 합의에 비판적이라고 간주되지 않았지만 실제로 변경된 사례가있었습니다. MCCCS는 위의 답변에서 이러한 예 중 일부를 강조 표시합니다.

Pieter Wuille은 2020 년 1 월 Chaincode Labs 팟 캐스트 에서 합의가 무엇인지, 무엇이 아닌지 정의하는 문제에 대해 논의했습니다 .

그로부터 배운 것 중 하나는 합의 규칙을 지정하는 것이 정말 어렵다는 것입니다. 그렇다고해서 시도 할 수 없다는 의미는 아니지만 사용중인 데이터베이스 계층의 구성 설정이 실제로 의미 론적으로 비트 코인의 암시 적으로 정의 된 합의 규칙에 유출되었다고 생각했을 것입니다. 물론 그것은 인간의 실패 때문이라고 생각할 수 있습니다. 우리는 문서를 읽고 그것을 알고 있어야했습니다.

코드베이스에서 의도적으로 합의에 기여하는 부분을 추상화하려는 경계에 대해 이야기 할 수 있지만 버그가 누출 될 수 있기 때문에이 코드가 합의 코드에 영향을 미치지 않는다는 것을 분명히 말하기는 매우 어렵습니다. 제 생각에 배워야 할 것 중 하나는 합의 시스템에서 사용하기위한 소프트웨어를 원한다는 것입니다. 모든 사람이 올바르게 행동하면 모두가 정답을 받아들이고 Lockstep에서 잘못된 데이터 조각.