위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
Vitalik은 Musk에 응답했습니다. 블록 체인 확장 성 개선은 쉽지 않습니다
链捕手
特邀专栏作者
2021-05-24 10:53
이 기사는 약 5390자로, 전체를 읽는 데 약 8분이 소요됩니다
샤딩이든 아니든 블록체인의 확장성을 제한하는 중요하고 다소 미묘한 기술적 요소가 있음이 밝혀졌습니다. 많은 경우 이러한 제한 사항에는 솔루션이 있지만 솔루션에도 제한 사항이 있습니

이 기사 출처: Chain Catcher, 저자: Vitalik Buterin, 컴파일러: Alyson, 승인을 받아 전달됨

블록체인 확장성을 어디까지 밀어붙일 수 있습니까? Musk가 희망하는 것처럼 극단적인 중앙 집중화를 일으키지 않고 사용자에게 피해를 주지 않으면서 "블록 확인 시간을 10배 줄이고, 블록 크기를 10배 늘리고, 거래 수수료를 100배 줄이는" 것을 실제로 달성할 수 있습니까? 블록체인의 기본 속성? 그렇지 않다면 얼마나 멀리 갈 수 있습니까? 합의 알고리즘을 바꾸면? 더 중요한 것은 ZK-SNARK 또는 샤딩과 같은 기능을 도입하기 위해 기술을 변경하면 어떻게 될까요?

첫 번째 레벨 제목

01 노드가 충분히 분산되어야 합니다.

오전 2시 35분, 지구 반대편에 있는 파트너로부터 마이닝 풀(또는 스테이킹 풀) 관리를 도와주는 긴급 전화를 받습니다. 약 14분 전부터 귀하의 파트너는 귀하의 마이닝 풀과 몇몇 다른 사람들이 여전히 네트워크의 79%를 호스트하는 블록체인에서 분리되었다고 말했습니다. 노드에 따르면 다수 체인의 블록이 유효하지 않습니다. 여기에 잔액 오류가 있습니다. 키 블록이 알 수 없는 주소에 실수로 450만 개의 추가 코인을 할당한 것으로 보입니다.

한 시간 후, 다른 두 개의 작은 마이닝 풀과 텔레그램 채팅을 하고 있습니다. 게시된 메시지가 포함된 트윗에 누군가 링크를 붙여넣는 것을 보게 됩니다. 트윗은 “새로운 온체인 지속 가능한 프로토콜 개발 기금 발표”로 시작되었습니다.

아침이 되자 트위터와 커뮤니티 포럼의 모든 곳에서 논쟁이 벌어졌습니다. 그러나 그때까지 450만 개의 토큰 중 상당 부분이 온체인에서 다른 자산으로 전환되었으며 수십억 달러의 DeFi 거래가 발생했습니다. 합의 노드의 79%와 모든 주요 블록체인 탐색기 및 가벼운 지갑 노드가 이 새로운 체인을 따릅니다. 새로운 개발자 펀드가 일부 개발에 자금을 지원하거나 주요 거래소에 모두 삼켜질 수도 있습니다. 그러나 결과에 관계없이 펀드는 모든 의도와 목적에 대해 기정사실이며 일반 사용자는 반격할 힘이 없습니다.

이것이 당신의 블록체인에서 일어날 수 있습니까? 마이닝 풀, 블록 탐색기 및 관리자 노드를 포함하여 블록체인 커뮤니티의 엘리트는 아마도 잘 조정되어 있을 것입니다. 그들은 모두 동일한 Telegram 채널과 WeChat 그룹에 있을 가능성이 높습니다. 그들이 진정으로 자신의 이익을 위해 프로토콜 규칙을 갑자기 변경하고 싶었다면 그렇게 할 것입니다. 이 조직적인 사회적 공격을 무효화하는 유일한 확실한 방법은 소극적 방어이며 그 그룹은 효과적으로 분산됩니다.

사용자가 블록체인을 검증하는 노드를 실행한 다음 프로토콜 규칙을 위반하는 블록을 자동으로 거부한다면(채굴자 또는 이해 관계자의 90% 이상이 이를 지원하더라도) 이야기가 어떻게 전개될지 상상해 보십시오. 모든 사용자가 유효성 검사 노드를 실행하면 공격이 빠르게 실패합니다. 일부 마이닝 풀과 교환은 프로세스에서 분기되며 다소 어리석은 것처럼 보입니다.

이미지 설명

패러다임 연구 파트너 Hasu의 트윗

첫 번째 레벨 제목

02 노드 작업의 한계는 어디인가요?

노드를 실행할 수 있는 사용자 수를 최대화하기 위해 일반 소비자 하드웨어에 집중하고 있습니다. 많은 수의 트랜잭션을 처리하는 전체 노드 기능에는 세 가지 주요 제한 사항이 있습니다.

  • 대역폭: 현재 인터넷 연결의 현실을 고려할 때 블록에 몇 바이트를 포함할 수 있습니까?

  • 대역폭: 현재 인터넷 연결의 현실을 고려할 때 블록에 몇 바이트를 포함할 수 있습니까?

  • 스토리지: 사용자에게 얼마나 많은 GB 디스크를 저장하도록 요청할 수 있습니까? 또한 얼마나 빨리 읽어야 합니까? (즉, HDD를 사용할 수 있습니까, 아니면 SSD가 필요합니까?)

보조 제목

1) 컴퓨팅 파워

오답: CPU 성능의 100%가 블록 유효성 검사에 사용될 수 있습니다.

정답: CPU 성능의 약 5-10%가 블록 유효성 검사에 사용 가능합니다.

제한 비율이 낮은 이유는 크게 네 가지입니다.

  • 우리는 DoS 공격의 가능성을 커버하기 위해 안전 마진이 필요합니다(공격자가 코드 약점을 악용하기 위해 만든 트랜잭션은 일반 트랜잭션보다 처리하는 데 더 오래 걸립니다).

  • 노드는 오프라인 상태가 된 후 블록체인을 동기화할 수 있어야 합니다. 1분 동안 네트워크 연결을 끊으면 몇 초 안에 따라잡을 수 있습니다.

  • 노드를 실행하면 배터리가 매우 빨리 소모되어 다른 모든 애플리케이션의 속도가 느려져서는 안 됩니다.

  • 노드는 또한 주로 p2p 네트워크에서 들어오는 트랜잭션 및 요청에 대한 유효성 검사 및 응답과 관련된 다른 비블록 생성 작업을 수행해야 합니다.

최근까지 "왜 5-10%만?"에 대한 대부분의 설명은 다른 문제에 초점을 맞췄습니다: PoW 블록이 무작위로 나타나기 때문에 블록을 검증하는 데 걸리는 시간이 길어질수록 여러 블록을 생성할 위험이 증가합니다.

이 문제에 대한 많은 해결책이 있습니다(예: 비트코인 ​​NG 또는 지분 증명 사용). 그러나 이러한 수정은 다른 네 가지를 수정하지 않으므로 많은 사람들이 처음에 생각했던 엄청난 확장성 향상을 제공하지 않습니다.

보조 제목

2) 대역폭

잘못된 답변: 2~3초마다 10MB의 청크가 있는 경우 대부분의 사용자는 네트워크 속도가 10MB/초 이상이므로 당연히 처리할 수 있습니다.

정답: 어렵지만 12초마다 1-5MB 청크를 처리할 수 있습니다.

오늘날 우리는 인터넷 연결이 제공할 수 있는 대역폭의 양에 대한 광고 통계를 자주 듣습니다. 100Mbps 또는 1Gbps라는 수치가 자주 들립니다. 그러나 광고된 대역폭 수치와 실제 대역폭 간에는 다음과 같은 몇 가지 이유로 큰 차이가 있습니다.

  • "Mbps"는 "초당 수백만 비트"를 의미하며 비트는 바이트의 1/8이므로 광고된 바이트 수를 얻으려면 광고된 비트 수를 8로 나누어야 합니다.

  • 모든 회사와 마찬가지로 인터넷 제공업체는 종종 거짓말을 합니다.

  • 동일한 인터넷 연결을 사용하는 여러 애플리케이션이 항상 있으므로 노드가 전체 대역폭을 독차지할 수 없습니다.

  • p2p 네트워크는 필연적으로 자체 오버헤드를 가져옵니다. 노드는 종종 동일한 블록을 여러 번 다운로드하고 다시 업로드합니다(블록에 포함되기 전에 mempool을 통해 브로드캐스트되는 트랜잭션은 말할 것도 없습니다).

Starkware가 2019년에 실험을 했을 때 처음으로 500kb 블록을 릴리스했습니다. 거래 가스 비용의 감소로 처음으로 이를 가능하게 했기 때문에 여러 노드가 실제로 해당 크기의 블록을 처리할 수 없었습니다.

보조 제목

3) 보관

오답: 10TB.

정답: 512G.

짐작할 수 있듯이 여기의 주요 주장은 다른 곳과 동일합니다. 즉, 이론과 실제의 구분입니다. 이론적으로 Amazon에서 8TB SSD를 구입할 수 있습니다. 이 블로그 게시물을 작성하는 데 사용된 노트북은 실제로 512GB이며 사람들이 자신의 하드웨어를 구입하게 하면 많은 사람들이 게을러질 것입니다(또는 800달러짜리 8TB SSD를 구입할 여유가 없습니다). 대신 중앙 집중식 공급자를 사용하십시오.

또한 일부 스토리지 디스크에서 블록노드를 가동하고 실행할 수 있더라도 높은 수준의 활동으로 인해 디스크가 쉽게 소진되어 새 디스크를 계속 구매해야 할 수 있습니다.

첫 번째 레벨 제목

03 조각난 블록체인의 위험성

오늘날 이더리움 블록체인에서 노드를 실행하는 것은 많은 사용자에게 어려운 일이 되었습니다. 그래서 병목 현상이 발생했습니다. 핵심 개발자의 가장 큰 관심사는 스토리지 크기입니다. 따라서 현재로서는 컴퓨팅 및 데이터 병목 현상을 해결하려는 노력이나 합의 알고리즘을 변경해도 가스 한도가 크게 증가하지는 않을 것입니다. 이더리움의 가장 두드러진 DoS 취약점을 해결하더라도 가스 한도는 20%만 증가할 뿐입니다.

스토리지 크기 문제에 대한 유일한 해결책은 상태 비저장 및 상태 만료입니다. 상태 비저장을 통해 노드 클래스는 영구 스토리지를 유지하지 않고 블록체인을 검증할 수 있습니다. 상태 만료는 최근에 액세스하지 않은 상태를 지우고 사용자가 수동으로 갱신 증명을 제공하도록 합니다.

두 경로 모두 오랫동안 사용되어 왔으며 상태 비저장 개념 증명 구현이 이미 시작되었습니다. 이 두 가지 개선 사항을 결합하면 이러한 우려를 크게 완화하고 가스 제한을 크게 늘릴 수 있는 여지를 열 수 있습니다. 그러나 상태 비저장 및 상태 만료를 구현한 후에도 가스 제한은 다른 제한이 지배하기 시작할 때까지 약 3배로만 안전하게 증가할 수 있습니다.

샤딩은 개별 노드가 처리하고 저장해야 하는 데이터에서 블록체인에 포함된 데이터를 분리하므로 위에서 언급한 제한 사항을 근본적으로 우회합니다. 노드가 직접 블록을 다운로드하고 실행하여 블록을 확인하는 대신 고급 수학 및 암호화 기술을 사용하여 블록을 간접적으로 확인합니다.

따라서 샤딩된 블록체인은 샤딩되지 않은 블록체인이 할 수 없는 수준의 트랜잭션 처리량을 안전하게 가질 수 있습니다. 유효하지 않은 블록을 성공적으로 거부하는 효율적이고 간단한 전체 검증을 생성하려면 많은 암호화 독창성이 필요하지만 수행할 수 있습니다. 이론이 잘 확립되어 있고 초안 사양을 기반으로 하는 개념 증명이 이미 진행 중입니다.

이더리움은 2차 샤딩을 사용할 계획이므로 노드가 개별 샤드와 비콘 체인을 처리할 수 있어야 하기 때문에 전체 확장성이 제한됩니다(각 샤드에 대해 일정량의 관리 작업을 수행해야 함). 샤드가 너무 크면 노드는 더 이상 단일 샤드를 처리할 수 없으며, 샤드가 너무 많으면 노드는 더 이상 비콘 체인을 처리할 수 없습니다. 이 두 제약 조건의 곱이 상한을 형성합니다.

큐빅 샤딩 또는 지수 샤딩을 수행하여 더 나아가는 것을 생각할 수 있습니다. 이러한 설계에서 데이터 가용성 샘플링은 확실히 훨씬 더 복잡해지지만 수행할 수 있습니다. 그러나 이더리움은 2차 곡선을 벗어나지 않을 것입니다. 그 이유는 트랜잭션 샤딩이 다른 지분이 매우 높아지지 않는 한 추가 확장성 향상을 실제로 달성할 수 없기 때문입니다.

그렇다면 이러한 위험은 무엇입니까?

1) 최소 사용자 수

샤딩되지 않은 블록체인은 참여하려는 단일 사용자가 있는 한 기능할 수 있습니다. 이것은 샤드 블록체인의 경우가 아닙니다. 단일 노드가 전체 블록체인을 단독으로 처리할 수 없으므로 함께 처리하려면 충분한 노드가 필요합니다. 각 노드가 50 TPS를 처리할 수 있고 블록체인이 10,000 TPS를 처리해야 하는 경우 실행하려면 체인에 최소 200개의 노드가 필요합니다.

블록체인에 언제든지 200개 미만의 노드가 있는 경우 노드가 블록체인을 따라갈 수 없거나 노드가 유효하지 않은 블록을 감지할 수 없거나 소프트웨어가 설치된 노드에 따라 다른 많은 나쁜 일이 발생할 수 있습니다.

샤딩된 블록체인의 용량이 10배 증가하면 최소 노드 수도 10배 증가합니다. 따라서 다음과 같이 질문할 수 있습니다. 작은 용량으로 시작하여 사용자가 많이 유입되면 용량을 늘리고 사용자 수가 감소하면 용량을 줄이는 것은 어떻습니까? 따라서 실제로 필요한 부분을 확보할 수 있습니다.

다음은 몇 가지 질문입니다.

  • 블록체인 자체는 얼마나 많은 고유 노드가 있는지 정확히 감지할 수 없으므로 샤드 수를 감지하고 설정하기 위한 일종의 거버넌스가 필요합니다. 용량 제한을 초과하면 조각화 및 충돌의 원인이 될 수 있습니다.

  • 많은 사용자가 갑자기 예기치 않게 로그아웃하면 어떻게 됩니까?

  • 포크를 시작하는 데 필요한 최소 노드 수를 늘리면 적대적인 인수를 방어하기가 더 어려워집니다.

최소 노드 수는 거의 확실하게 1000개를 넘지 않습니다. 따라서 수백 개 이상의 샤드가 있는 블록체인을 정당화하기는 어려워 보입니다.

2) 과거 검색 가능성

사용자가 진정으로 중요하게 여기는 블록체인의 중요한 속성은 영속성입니다. 회사가 도산하거나 생태계 유지 능력을 잃으면 서버에 저장된 디지털 자산은 10년 후에 정리된다. 반면 이더리움의 NFT는 영구적입니다.

예, 사람들은 2371년에도 여전히 CryptoKitties를 다운로드하고 검색할 것입니다.


그러나 블록체인 용량이 너무 커지면 이 모든 데이터를 저장하기가 더 어려워집니다. 어느 시점에서 큰 위험이 발생하면 아무도 저장하지 않는 역사의 일부가 있습니다.

이 위험을 정량화하는 것은 쉽습니다. 블록체인의 데이터 용량(MB/s)을 단위로 하여 30을 곱하면 연간 TB 단위로 저장되는 데이터의 양을 구할 수 있습니다. 현재 샤딩 계획의 데이터 용량은 약 1.3MB/초이므로 연간 약 40TB입니다. 이를 10배 늘리면 연간 400TB가 됩니다.

데이터에 액세스할 수 있을 뿐만 아니라 데이터에 쉽게 액세스하려면 메타데이터(예: 롤업 풀기)도 필요하므로 연간 4PB 또는 10년 후 40PB입니다. 이것은 대부분의 샤딩된 블록체인이 안전하게 달성할 수 있는 합리적인 상한입니다.

첫 번째 레벨 제목

04 요약

블록체인을 확장하려는 시도에는 두 가지 접근 방식이 있습니다. 기본적인 기술 개선과 단순히 매개변수 추가입니다. 첫째, 매개변수를 늘리는 것이 매력적으로 들립니다. 냅킨에 수학을 해보면 가정용 노트북이 ZK-SNARK, 롤업 또는 샤딩 없이도 초당 수천 건의 트랜잭션을 처리할 수 있다고 확신하기 쉽습니다. 불행하게도 이 접근 방식은 여러 미묘한 이유로 근본적으로 결함이 있습니다.

블록체인 노드를 실행하는 컴퓨터는 블록체인을 검증하는 데 CPU 용량의 100%를 사용할 수 없으며 우발적인 DoS 공격에 대비한 큰 안전 마진이 필요하고 멤풀에서 처리하는 것과 같은 트랜잭션을 수행하기 위한 여유 용량이 필요합니다. 그리고 사용자는 컴퓨터에서 다른 응용 프로그램에 동시에 컴퓨터를 사용할 수 없도록 컴퓨터에서 노드를 실행하는 것을 원하지 않습니다.

대역폭에는 오버헤드도 있습니다. 10MB/s 연결은 초당 10MB 청크를 가질 수 있다는 것을 의미하지 않으며 스토리지와 마찬가지로 12초마다 최대 1-5MB 청크를 가질 수 있습니다. 노드를 실행하기 위한 하드웨어 구성을 늘리고 특정 행위자에 대한 노드 작업을 제한하는 것은 해결책이 아닙니다. 탈중앙화 블록체인의 경우 일반 사용자가 노드를 실행할 수 있고 노드를 실행하기 위한 공통된 활동 문화가 있는 것이 중요합니다.

근본적인 기술적 개선이 확실히 이루어지고 있습니다. 현재 이더리움의 주요 병목 지점은 저장 용량이며, 상태 비저장 및 상태 만료는 이 문제를 해결할 수 있으며 현재보다 노드를 실행하기를 원하기 때문에 최대 약 3배(그러나 300배 이하) 증가시킬 수 있습니다. 쉽게. 샤딩된 블록체인에는 단일 노드가 처리해야 하는 트랜잭션이 없기 때문에 더 확장할 수 있습니다.

그러나 그럼에도 불구하고 용량에는 한계가 있습니다. 용량이 증가함에 따라 최소 노드 수가 증가하고 아카이브 체인 비용도 증가합니다(아무도 아카이브 체인을 관리하지 않으면 데이터 손실 위험이 증가함). .

그러나 우리는 너무 걱정할 필요가 없습니다. 이러한 한도는 블록체인이 완전히 안전한 상태에서 초당 백만 건 이상의 트랜잭션을 처리할 수 있을 만큼 충분히 높습니다. 그러나 블록체인의 분산화를 희생하지 않고 이를 수행하려면 작업이 필요할 것입니다.

Vitalik
Odaily 공식 커뮤니티에 가입하세요