P2P 프로토콜이 Bitcoin 마이닝 중앙 집중화를 해결하기 위해 찾는 방법 PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

P2P 프로토콜이 Bitcoin 마이닝 중앙 집중화를 해결하는 방법

비트코인 마이닝 풀은 중앙 집중화에 의존하지만 P2Pool 및 기타 프로토콜은 제XNUMX자에 대한 신뢰의 필요성을 줄이기 위해 노력했습니다.

안에 이전 기사, 나는 비트코인 ​​마이닝에서 탈중앙화 대 중앙화의 성격과 그것을 대부분 질적 의미에서 개념화하는 방법에 대해 썼습니다. 이 기사는 풀 조정에서 에너지 생산에 이르기까지 전체 마이닝 스택을 세분화하여 마이닝 스택의 여러 계층과 분산을 최대화할 수 있는 가능성 간의 관계에 대한 감각을 제공하고 스택 아래로 내려갈수록 에너지 생산으로 이동할수록 해당 계층에 의미 있는 수준의 분권화를 가져오는 것이 더 어렵고 자본 집약적이 됩니다.

이 기사에서는 블록체인에 추가할 블록을 채굴하기 위해 협력하는 독립적인 소유의 채굴 작업을 용이하게 하기 위해 채굴 풀과 채굴자 조정의 주제에 대해 더 깊이 들어가려고 합니다.

마이닝 풀 생성

단순히 버튼을 클릭하고 랩톱 CPU에서 혼자서 블록을 안정적으로 마이닝할 수 있었던 시대 이후로 마이닝은 먼 길을 왔습니다. 그 당시에는 실질적인 자본 투자나 전문 지식이 필요하지 않은 아마추어 취미 활동이었지만 오늘날에는 대규모 자본 투자가 필요한 수십억 달러 규모의 전문 시장입니다. 완전히 다른 볼 게임입니다.

이러한 광업의 성격 변화의 자연스러운 결과 중 하나는 아주 초기에 광업 풀이 생성되었다는 것입니다. 채굴로 인해 랩톱이 구석에서 실행되고 있을 때 블록을 찾을 때의 변동성과 예측 불가능성은 그다지 큰 문제가 아니었습니다. 결국에는 랩톱을 계속 실행하는 데 드는 전력 비용이 경제적이지 않았습니다. 중요성.

일단 GPU와 ASIC으로 옮겨가면 선행 재료 투자 비용과 이를 계속 작동시키는 데 드는 훨씬 더 많은 전기 비용이 발생했습니다. 블록을 찾을 때의 예측 불가능성은 자본 투자에 대한 수익을 올리고 수익성 있게 운영하려는 광부에게 훨씬 더 큰 문제가 되었습니다. 이것은 광산 풀이 그림에 나오는 곳입니다.

이를 통해 광부는 동일한 블록에서 함께 작동하는 유효한 블록 헤더를 찾는 데 협력하여 코인베이스 보상을 마이닝 풀에 보내고, 채굴 풀은 이를 찾는 데 기여한 작업량에 비례하여 참여하는 모든 광부에게 분배합니다. 블록. 이것은 마이닝 풀에 "주식"을 제출함으로써 입증됩니다. 네트워크 난이도 목표를 충족하지 않지만 광부가 거짓말을 하지 않고 실제로 하드웨어를 실행하고 유효한 블록을 찾으려고 함을 증명할 만큼 충분히 높은 블록.

마이닝 풀 중앙 집중화

중앙 집중식 채굴 풀은 개별 채굴자에게 큰 영향을 미칩니다. 블록에 포함할 거래를 선택(또는 더 중요하게는 제외)하는 과정에서 중앙 집중화 지점입니다. 이것은 각 마이닝 풀 운영자가 블록체인에서 처리하기로 선택한 트랜잭션에 대한 완전한 제어를 제공하며, 마이닝 하드웨어의 실제 소유자가 해당 기준에 동의하지 않는 경우 풀을 떠나는 것을 제외하고는 이에 대해 발언권을 행사할 수 없습니다. 연산자는 설정을 선택합니다.

그들은 또한 광부가 풀에서 비트코인을 인출하기로 선택할 때까지 개별 광부의 비트코인을 보관하여 풀 운영자가 풀을 사용하는 광부를 사취하거나 개별 광부 자금을 압수하거나 KYC를 적용하도록 정부의 압력을 받을 수 있는 관리인 및 중심 지점 역할을 합니다. 그들에게 요구 사항.

그렇다면 이 문제를 해결하기 위해 어떤 솔루션이 존재합니까?

P2Pool: 원래의 분산형 마이닝 풀

P2풀 원래의 분산형 마이닝 풀 프로토콜입니다. 채굴자들이 난이도 목표를 충족하는 유효한 블록을 찾기 위해 협력하면서 채굴 보상을 나누기 위해 서로 협력하는 PXNUMXP 프로토콜입니다. 이 조정은 프로토콜 설계가 "공유 체인"이라고 부르는 것을 사용하여 수행됩니다.

P2Pool의 채굴자들은 네트워크의 난이도 목표를 충족하지 못하는 블록을 가져와 풀이 작업 중인 단일 블록의 모든 복사본으로 구성된 자체 블록체인을 효과적으로 채굴합니다. 중앙 집중식 모델에서 채굴 중임을 증명하기 위해 블록이 풀로 바뀌는 더 작은 난이도 목표를 달성하면 나머지 채굴자에게 해당 블록을 브로드캐스트합니다. P2Pool의 "공유 난이도"는 광부가 대략 XNUMX초에 한 번 공유를 찾을 수 있도록 하는 것이었습니다.

독자들이 개별 광부에 대한 지불이 어떻게 작동하는지 궁금해 할 것이라고 확신합니다. 코인베이스 트랜잭션은 P2Pool의 각 개별 채굴자에 대해 출력이 생성되어 코인베이스 트랜잭션에서 직접 자금을 분할하도록 구성됩니다. P2Pool의 광부는 자신과 풀에 참여하는 모든 사람에 대한 모든 지불이 정확하고 공유 체인에 공유를 제공한 각 광부가 추가된 각 새 공유에서 작업에 대해 올바르게 지불되는지 확인합니다. 참여하는 일부 광부가 최신 지분의 모든 사람에 대한 지불금을 올바르게 구성하지 않으면 P2Pool의 다른 모든 광부가 자신의 지불금에 포함시키는 것을 중단하고 공정하게 행동하지 않는다는 이유로 해당 광부를 풀에서 효과적으로 "축출"합니다.

이 디자인으로 인해 몇 가지 확장 문제가 발생하여 더 이상 사용되지 않습니다. P2Pool에 대한 참여가 증가함에 따라 대략 2초에 한 번을 목표로 하는 공유 체인의 공유에 대한 총 난이도 목표도 증가합니다. 이는 소규모 광부의 경우 2초 이내에 쉐어체인 난이도에 도달하는 것이 더 어려워진다는 것을 의미합니다. 이는 소규모 광부의 경우 PXNUMXPool의 총 해시 비율이 증가함에 따라 소득의 분산 또는 예측 불가능성이 증가함을 의미합니다. 이것은 또한 더 많은 광부가 PXNUMXPool에 가입하는 것과 거의 동시에 더 많은 광부가 공유 체인에 대한 경쟁 주식을 찾기 때문에 더 많은 수의 부실 블록으로 이어지며, 이는 오직 수익만 얻는 개별 광부의 관점에서 "낭비된 작업"으로 이어집니다. 그들의 몫이 셰어체인에 포함되면 보상을 받습니다.

다른 주요 확장성 문제는 코인베이스 거래 자체에서 개별 광부에게 직접 지급되는 지불금에 있습니다. 각 광부는 공유 체인에 포함된 자신이 채굴한 주식에 비례하여 지불된다는 점을 감안할 때 P2Pool의 각 광부는 코인베이스 트랜잭션에 추가된 새로운 출력이 필요합니다.

이것은 두 가지 결과를 낳습니다. 첫째: 채굴자들은 P2Pool이 찾는 모든 블록에서 작고 낮은 가치의 UTXO를 받고 있습니다. 이는 나중에 해당 출력을 압축하는 비용 및/또는 코인을 사용하려고 할 때 훨씬 더 큰 거래 비용을 부담해야 합니다. 기존 풀에서 일정 기간 후 출금할 때 단일 UTXO가 아닌 수많은 개별 UTXO로 마무리됩니다. 두 번째: 각각의 새로운 코인베이스 출력은 다른 사람들의 거래에 의해 소비될 수 있는 블록 공간을 차지하고 수수료 수익에서 더 많은 P2Pool을 얻습니다. 프로토콜에 참여하는 광부에게는 두 배의 손해입니다.

이 두 가지 문제는 프로토콜이 서서히 사라지고 결국 사용하지 않는 상태가 되는 데 기여했습니다. 정확하고 최근의 통계를 추적하기 위한 최선의 노력의 모든 표시(마이닝 풀 점유율을 추적하는 많은 오래된 블록 탐색기가 몇 년 동안 종료됨)에 따르면 P2Pool에서 마이닝된 마지막 블록이 켜진 것처럼 보입니다. 2019년 2월 12일.

지불 채널 지불금이 있는 P2Pool

SegWit 활성화가 잠긴 지 한 달 후인 2017년에 Chris Belcher는 신청 단방향 지불 채널과 채굴자에 대한 지불을 처리하는 허브 그룹을 사용하여 P2Pool의 확장성을 개선합니다.

제안의 핵심 목적은 두 가지 다른 방식으로 광부의 돈을 잃는 더 큰 코인베이스 거래 문제를 해결하는 것입니다. 높은 수준에서 아이디어는 개별 광부에게 열린 지불 채널이 있는 허브에 전체 코인베이스 트랜잭션을 지불하고 코인베이스 트랜잭션에서 자금을 청구할 수 있는 능력이 보상받는 광부와 원자적으로 연결되어 있음을 보장하는 것입니다. 지불 채널을 통한 그들의 주식.

코인베이스 트랜잭션과 지불을 위한 지불 채널 간의 원자성 목표를 달성하려면 코인베이스 트랜잭션 출력 스크립트를 사용자 정의해야 합니다. Belcher의 제안에서 세 가지 지출 조건이 있는 다중 분기 스크립트로 구성됩니다.

  • XNUMX/XNUMX 다중서명. 핵심 XNUMX: 허브(Hc). 키 XNUMX: 블록을 찾은 광부(Mc).
  • 단일 키와 해시락. 키: 허브(H). Hashlock: 허브(X)에 의해 생성된 임의의 값.
  • 하나의 키와 타임록. 키: 블록(M)을 찾은 광부. 타임록: XNUMX개월의 CSV 상대 타임록.

이러한 지출 조건 중 하나를 사용하여 코인베이스 트랜잭션 출력을 잠금 해제할 수 있습니다. 이제 두 가지가 상호 작용하는 방식을 볼 수 있도록 광부에 대한 지불 채널 스크립트를 살펴보겠습니다.

  • 1/1 다중서명. 핵심 XNUMX: 허브(HcXNUMX). 핵심 XNUMX: 광부(McXNUMX).
  • 1/1 다중 서명 및 해시 잠금. 핵심 XNUMX: 허브(HuXNUMX). 핵심 XNUMX: 광부(MuXNUMX). Hashlock: 코인베이스(X)에서 사용되는 허브에 의해 생성된 임의의 값.

이제 이 두 가지가 서로 어떻게 상호 작용하는지 살펴보겠습니다.

광부가 공유 체인에 추가할 공유를 생성함에 따라 허브는 진행 상황을 모니터링합니다. 각 공유에 대해 허브는 수행 중인 작업량에 비례하여 비용을 지불하기 위해 공유를 제공하는 광부와 함께 채널 상태를 업데이트합니다. 그러나 그들은 해시록 사전 이미지를 소비해야 하는 두 번째 스크립트 경로에 대한 서명만 제공합니다. 이는 기본적으로 허브가 첫 번째 경로에 대한 서명을 제공하지 않으면 허브가 코인베이스를 소비하지 않는 한 해당 자금을 청구할 수 없음을 보장합니다. 사전 이미지를 게시해야 하는 해시 잠금이 있는 스크립트 경로를 사용하여 자체적으로 출력합니다.

이제 결국 P2Pool의 광부 중 하나가 유효한 블록을 찾아 네트워크에 게시합니다. 이 시점에서 허브는 광부와 함께 모든 지불 채널을 업데이트하고 채널의 첫 번째 스크립트 경로에 서명을 제공하여 각 광부가 해시록 없이 원할 때마다 채널을 닫고 얻은 보상을 수집할 수 있습니다. 사전 이미지.

이 시점에서 블록을 찾은 광부는 코인베이스의 첫 번째 스크립트 경로에 서명하여 허브가 코인베이스에서 자금을 청구할 수 있도록 합니다. 그 광부는 협력적으로 서명하도록 장려하기 위해 광업 보상에서 약간의 보너스를 받습니다. 그러나 기억하십시오. 광부가 협력을 거부하는 경우 허브는 단순히 해시 잠금 경로를 사용하여 자체적으로 지출하고 사전 이미지를 공개하여 모든 광부가 보상의 공정한 몫을 모을 수 있도록 할 수 있습니다.

이것은 모든 채널이 체인에서 닫히도록 하고 채굴을 계속하려면 다시 열어야 한다는 단점이 있습니다. 허브 운영자가 지불 처리를 중단하기로 선택하거나 사라지는 경우 마지막 옵션이 있습니다. XNUMX개월 후, 허브가 협력에 응답하지 않거나 해시락 경로로 코인을 사용한 경우 블록을 찾은 광부는 자금을 완전히 청구할 수 있습니다.

이것은 Belcher가 제안한 개선 사항과 함께 위협 모델 측면에서 두 가지 특정 문제를 남깁니다. 블록에 포함할 거래를 결정하면 개별 광부가 채굴 중인 블록 템플릿에 포함하기로 선택한 항목에 따라 총 블록 보상이 얼마만큼 차이가 날 수 있는지 결정합니다.

지불 채널을 도입할 때 이는 오류 마진을 생성합니다. 즉, 실제 채굴된 블록 보상은 채굴 허브가 지불 채널에서 채굴자에게 커밋하는 것과 동일하지 않습니다. 실제 수수료 추정치가 블록 보상보다 작은 경우 허브는 더 적은 양의 협동 지출 경로를 사용하여 지불 채널을 간단히 업데이트할 수 있으며 해시락 경로로 코인베이스 출력을 요구하지 않는 한, 채굴자들은 채굴 보상이 실제로 있었던 것과 일치하는 더 적은 지불금을 받아들이는 것 외에 선택의 여지가 없습니다.

채굴 보상이 예상보다 약간 높은 경우, 허브가 부정직하게 취급하는 채굴자는 언제든지 그냥 떠날 수 있기 때문에 이것을 반영하기 위해 채굴자에게 채널을 업데이트하는 것이 여전히 허브의 최선의 이익입니다. 허브가 결함을 일으키고 추가 보상을 유지하는 것이 합리적일 수 있는 유일한 경우는 누군가가 비정상적으로 높은 광부 수수료를 지불한 경우일 수 있지만 그 상황을 제외하고 허브와 광부 사이의 불일치에 조정하는 것이 허브와 광부의 이익입니다. 보상 추정치 및 실제 블록 보상.

두 번째 문제는 허브가 DDoS가 될 수 있고 강제로 P2Pool이 작동하지 못하도록 막을 수 있는 중심 지점이라는 사실입니다. Belcher의 제안에는 여러 허브를 사용하고 각 코인베이스 트랜잭션을 다른 블록에서 다른 허브로 보내는 것이 포함됩니다. 그러나 이를 위해서는 채굴자가 사용 중인 모든 허브에서 채널을 열어야 하며, 이는 채굴자에게 유동성을 제공하기 위해 50배의 블록 보상(약 650 BTC)이 필요한 허브에 대한 Belcher의 추정에 따르면 엄청나게 자본 비효율적입니다.

Braidpool: 또 다른 반복

엔터 버튼 브레이드풀 (경고: 링크는 GitHub에서 PDF로 직접 다운로드할 수 있습니다). Braidpool은 지불 채널을 사용하는 Belcher의 제안을 기반으로 Bob McElrath와 Kulpreet Singh의 제안입니다. Belcher의 제안에 남아 있는 미해결 문제를 개선하기 위해 도입된 두 가지 주요 변경 사항이 있습니다.

첫 번째는 허브와 채굴자가 서로 통신하는 방식의 변경입니다. 그들은 광부가 풀에 브로드캐스트하는 각 공유에 Tor v3 주소를 첨부하도록 제안합니다. 이러한 방식으로 허브는 DoS 공격에 취약한 네트워크 끝점을 노출하지 않고 작동할 수 있습니다.

그런 다음 허브 운영자는 광부에 연결하여 채널을 열고 업데이트할 수 있으므로 광부가 단일 공격 지점을 피하기 위해 여러 허브를 사용할 필요가 줄어듭니다. 이를 통해 Braidpool은 단일 허브로 작동하여 전체 시스템을 보다 강력하고 자본 효율적으로 만들 수 있습니다.

P2P 프로토콜이 Bitcoin 마이닝 중앙 집중화를 해결하기 위해 찾는 방법 PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.
출처: Braidpool 백서

두 번째 변화는 셰어체인 대신 방향성 비순환 그래프(DAG)를 사용한다는 점입니다. 셰어체인의 문제는 XNUMX초 공유 시간 목표로 풀의 크기가 커짐에 따라 주식에 필요한 난이도가 증가하여 소규모 광부에게는 더 어려워졌다는 것입니다. 단일 공유의 제로섬 게임이 아닌 Ethereum과 같은 DAG를 사용하여 공유 체인으로 만들고 다른 공유는 고아 상태로 만들면 채굴자가 보유한 해시 비율과 방법에 따라 조정할 수 있는 공유에 대한 난이도를 동적으로 설정할 수 있습니다. 자주 그들은 그것과 함께 주식을 찾을 수 있습니다.

DAG 구조에는 실제 발견된 비트코인 ​​블록 사이에 참여한 모든 사람이 포함되며, DAG에 제공한 작업을 기반으로 모든 사람에게 비례적으로 보상을 분배합니다. 이것은 풀이 더 커질 때 개별 광부의 분산 문제를 해결합니다.

이 두 가지 변경 사항을 제외하고 나머지 구조는 Belcher의 제안과 동일하며 코인베이스 및 채널 스크립트는 동일합니다.

최종 생각

일부 독자는 왜 Betterhash가 이 기사에서 다루지 않았는지 궁금해 할 것입니다. 블록에 포함할 거래 선택을 분산시키는 동안 풀의 모든 기능을 완전히 분산하지는 않습니다. 가장 중요한 것은 자금을 처리하는 풀의 보관 특성입니다. 이것은 채굴자가 풀이 승인하지 않는 거래를 선택하는 경우 자금 지불을 거부함으로써 채굴자가 강압에 노출되도록 합니다. 따라서 적대적이지만 완전히 적대적인 환경은 아니지만 상황을 약간 개선하지만 분산형 마이닝 풀로 간주하지 않습니다.

이 기사는 P2Pool을 중심으로 했으며 확장 제한을 개선하기 위한 반복을 제안했습니다. 책 전체를 쓰지 않기 위해 기존의 다른 디자인이나 잠재적인 디자인에 대해서는 언급하지 않았습니다. 내가 그것을 얻을 수 있게 되면, 나는 마이닝 풀을 탈중앙화하기 위한 다른 메커니즘으로 가는 후속 글을 작성할 계획입니다.

Shinobi님의 게스트 게시물입니다. 표현된 의견은 전적으로 자신의 것이며 BTC Inc 또는 Bitcoin Magazine.

타임 스탬프 :

더보기 Bitcoin Magazine