비트코인을 여러 개 구현하는 것이 위험한가요? PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

Bitcoin을 여러 번 구현하는 것이 위험합니까?

의 의견 사설입니다. Bill Scoresby, 비트코인 ​​기반 소기업 소유주이자 비트코인 ​​자기 수탁에 대한 여러 가이드의 저자.

최근 많은 LND 노드가 비트코인 ​​블록체인과 동기화되지 않게 만든 버그는 다음과 같습니다. 대체 구현으로 인한 것일 수 있습니다..

아마도 당신은 "세상에 누가 다른 것을 사용하고 있습니까? 비트 코인 코어?” Bitcoin의 다른 구현이 존재한다는 사실을 몰랐을 수도 있습니다. 다른 구현이 무엇을 의미하는지 잘 모를 수도 있습니다.

비트코인 코어는 나카 모토 사토시 C++로 작성하여 세상에 공개했습니다. 현재까지 이어지는 새 버전으로 업데이트되었습니다. 대체 구현은 Bitcoin Core와 동일한 작업을 수행하는 소프트웨어입니다. 동일한 합의 규칙을 시행하지만 대부분 다른 코딩 언어로 다르게 작성됩니다.

대체 구현이 라이트닝 네트워크에서 노드를 어떻게 중단했습니까?

주요 Lightning Network 노드 버전 중 하나(LND)는 btcd라는 대체 비트코인 ​​구현에 의존합니다. 개발자가 매우 큰 다중 서명 트랜잭션을 생성했을 때 btcd는 증인 데이터가 너무 많이 포함되어 있어 유효한 것으로 보지 않았습니다. 다른 비트코인 ​​구현(가장 중요한 비트코인 ​​코어)은 Taproot 트랜잭션 증인 데이터에 대한 제한이 없었기 때문에 트랜잭션과 이를 포함하는 블록을 유효한 것으로 받아들였습니다.

그 결과 채굴자들은 btcd를 사용하지 않았고 그들의 규칙에 따라 아무 문제가 없었기 때문에 체인에 새 블록을 계속 추가했지만 LND Lightning 노드는 이러한 새 블록을 인식할 수 없었습니다. 그들이 유효하지 않은 것으로 본 한 거래.

1월 XNUMX일에 버그가 다시 발생했을 때 영향을 받은 것은 LND 노드만이 아니었습니다. 일부 일렉트릭 인스턴스(일렉트럼 월렛용 백엔드 서버 구현)도 나머지 체인과 합의에 도달하지 못했습니다. LND 노드는 btcd의 유사한 문제로 인해 합의에서 제외되었지만 Rust로 작성된 Bitcoin의 구현은 다음과 같습니다. 선거 노드가 뒤쳐지게 만들었습니다., 눈에 잘 띄는 일부 서버 포함 mempool.space에 의해 실행.

존재하는 증인 데이터의 크기 제한 DoS 공격을 방지하기 위해, 비트코인 ​​코어의 일부이기도 합니다(코어는 Taproot 트랜잭션에 대해 더 큰 제한이 있지만). 동기화되지 않은 다른 두 구현에는 다음과 같은 코드가 있는 것 같습니다. 작은 한계를 유지.

구현의 아주 작은 차이로 인해 합의가 이루어지지 않을 수 있습니다.

Bitcoin을 여러 번 구현하는 것은 위험합니다

사토시 Bitcoin의 다중 구현 아이디어가 마음에 들지 않았습니다. "비트코인의 호환 가능한 두 번째 구현이 좋은 생각이 될 것이라고는 생각하지 않습니다." 그가 제시한 이유는 "디자인의 많은 부분이 두 번째 구현이 네트워크에 위협이 될 정도로 잠금 단계에서 정확히 동일한 결과를 얻는 모든 노드에 달려 있습니다."

위협? 무슨 일이야?

작업 증명이 가장 많은 체인이 진정한 체인이라는 말을 들어보셨을 것입니다. 두 명의 다른 채굴자가 동시에 블록을 찾으면 체인이 분할되고 다른 채굴자들은 가장 먼저 들은 블록에 구축을 시작합니다.

분할의 한쪽에 새 블록이 추가되자마자 대부분의 노드와 채굴자는 이를 새로운 진정한 체인으로 받아들이고 분할의 다른 쪽을 포기합니다. 이러한 블록을 오래된 블록이라고 하지만 일부 사람들은 이를 고아 블록이라고 부릅니다.

비트코인에서 블록 사이의 평균 시간은 10분이므로 분할의 패배 측에 하나가 추가되고 작업이 가장 많은 체인이 승리하기 전에 전체 네트워크가 이 새로운 블록에 대해 알게 될 가능성이 높습니다.

“노드는 가장 많은 작업을 수행하는 유효한 체인을 따를 것입니다…여기서 핵심 단어는 유효합니다. 노드가 유효하지 않다고 판단한 블록을 수신하면 해당 블록에서 얼마나 많은 작업이 수행되었는지는 중요하지 않으며 노드는 해당 체인을 수락하지 않습니다.” — 앤드류 차우

핵심 단어는 "유효"입니다. 채굴자가 다른 일부 채굴자와 노드가 유효하지 않다고 생각하는 블록을 발견하면 위협이 나타납니다. 그것이 유효하다고 생각하는 채굴자들은 그 체인에 새로운 블록을 구축하려고 시도할 것입니다. 그것이 유효하지 않다고 생각하는 채굴자들은 그들이 알고 있는 마지막 유효한 블록을 구축하려고 시도할 것입니다. 결과: 두 개의 사슬이 있고 어느 것이 사실인지 알 방법이 없습니다.

세상에 어떻게 그런 일이 일어날까요?

글쎄, 최근 LND 노드의 버그 사례에서 보았듯이 비트코인의 한 구현에 다른 구현에는 없는 버그가 있는 경우 블록이 유효한지 여부에 대한 합의가 부족할 수 있습니다.

비트코인은 이를 고칠 메커니즘이 없습니다. 프로토콜 외부의 커뮤니티는 다음에 일어날 일을 결정해야 합니다. 매우 불쾌하게 들립니다.

비트코인 개발자인 Peter Todd는 이렇게 말했습니다. 다른 구현은 Bitcoin Core bug-for-bug와 일치해야 합니다..

여기 있습니다. 다중 구현은 위험합니다!

Bitcoin의 다른 구현은 무엇이며 왜 존재합니까?

우선, 대부분의 사람들이 비트코인 ​​코어를 실행합니다.

Luke Dashjr는 약 43,000개의 노드를 봅니다. 그 중 98%가 비트코인 ​​코어를 실행 중입니다. Coin Dance라고 불리는 것은 15,000개에 가까운 노드를 봅니다. 그 중 96%가 비트코인 ​​코어를 실행 중입니다.. 따라서 현재 대체 구현을 사용하는 사람은 거의 없는 것 같습니다.

그럼에도 불구하고 비트코인 ​​프로토콜을 구현하는 다른 코드베이스를 구축하고 유지하려는 활발한 프로젝트가 있습니다. 여기에는 다음이 포함됩니다.

제임슨 롭은 우수한 페이지 다른 모든 구현에 대한 보다 철저한 목록과 링크가 있습니다.

이 모든 프로젝트에는 매우 재능 있는 개발자가 작업하고 있으며 각각은 몇 년 이상 존재했습니다. 그런 문제처럼 보이는 일에 왜 그렇게 많은 노력을 기울일까요?

비트코인은 무허가입니다. 누구나 체인을 다운로드할 수 있습니다. 누구나 네트워크와 상호 작용할 수 있습니다. 아무도 당신이 대체 구현을 코딩하거나 실행하는 것을 막을 수 없습니다.

그래도 분명히 어떤 사람들은 책임자 Bitcoin 저장소를 변경하는 것과 이를 선택하는 프로세스는 비공식적인 것 같습니다. 있는 동안 비트코인 개선 제안(BIP) 프로세스 Bitcoin Core에 대한 변경 사항을 제안하는 것도 매우 비공식적입니다.

이 중 어느 것도 직접적인 문제가 아닙니다. 마티 벤트가 지적했듯이, 대략적인 합의가 강점이 될 수 있음. 비트코인을 변경하는 과정이 어렵고 불분명하다면 변경 사항이 더 철저하게 심사된다는 의미입니다.

대략적인 합의의 다음 단계는 하나 이상의 대중적인 구현을 갖는 것입니다.

구현을 여러 번 하지 않는 것이 더 위험할 수 있음

비트코인 코어에 접근할 수 있는 사람 중 한 명이 되는 것이 이미 매우 어려운 일이라는 것은 의심의 여지가 없습니다. 비트코인이 통화 수단으로서 중심적인 역할을 하는 세상에서 이 작업은 훨씬 더 어려워질 것입니다. 소규모 개발자 그룹은 매우 가치 있는 대상이 될 수 있습니다. 적어도 다음 소프트웨어 릴리스에서 다양한 포함 또는 제외를 위해 로비하기 위해 그들의 관심을 구할 것입니다.

현재 정치에 존재하는 로비 산업에 대해 생각해 보십시오. 비트코인 프로토콜의 유일한 구현에 대한 커밋 액세스 권한이 있는 사람들 주변에서 왜 그런 일이 발생하지 않을까요?

지금의 정치인들처럼 그들은 권력에 접근할 수 있는 것으로 인식될 것입니다. 이와 같이 사람들은 그들을 목표로 삼을 것입니다. 단, 이 개발자들은 그들을 방어할 국가의 힘이 없을 것입니다. 어떤 삶이 될까요? 누가 자발적으로 선택하겠습니까?

하루가 끝나면 글로벌 금융 시스템은 하나의 GitHub 리포지토리에 대한 커밋 액세스 권한이 있는 소규모 그룹의 어깨에 놓기에는 상당히 무거운 무게입니다. 사람들의 통화 미래가 몇몇 중앙 은행가의 결정에 달려 있는 곳에서 벗어나려고 하는 글로벌 금융 시스템과 크게 다르지 않을 수도 있습니다.

구조를 위한 다중 구현!

비트코인 네트워크에서 여러 구현이 존재하고 널리 사용되면 악의적인 행위자가 비트코인 ​​프로토콜을 변경하는 것을 훨씬 더 어렵게 만들어 이러한 압력을 완화할 수 있습니다.

비트코인 네트워크의 참가자가 서로 다른 구현 간에 더 고르게 분포되어 있으면 좋은 아이디어가 떠오를 여지가 더 많아집니다. 비트코인에 대한 변경을 제안하거나 거부하는 것은 모든 것이 한 진영에서 이루어지지 않는다면 훨씬 더 분산화됩니다.

확실히 비트코인의 다른 구현을 사용하면 체인 분할의 위험이 높아집니다. 노드와 마이너의 상당 부분이 실수로 분기되는 비극적인 체인 분할은 비트코인에 좋지 않을 것이며 확실히 그 가격도 좋지 않을 것입니다. 그러나 그것은 비트코인의 무허가 특성을 위협하지 않을 것입니다.

모든 사람이 비트코인 ​​코어에서만 구축하는 중앙 집중식 개발 환경은 무허가성을 위협할 수 있습니다. 주제에 대한 대화는 대체 구현으로 인해 발생할 수 있는 문제에만 초점을 맞추기보다는 비트코인 ​​코어에 크게 의존하는 위험을 다루어야 합니다.

크고 오래된 이 논쟁에 대한 기사 아론 반 Wirdum에 의해. 더 최근의 기사를 읽을 수도 있습니다. 유익한 스레드 그것에 대해.

Bill Scoresby의 게스트 게시물입니다. 표현된 의견은 전적으로 자신의 의견이며 반드시 BTC Inc 또는 Bitcoin Magazine의 의견을 반영하지는 않습니다.

타임 스탬프 :

더보기 Bitcoin Magazine