
블록체인의 발전에 있어 탈중앙화, 보안, 성능이라는 불가능한 삼각관계가 가장 많이 논의되는 주제인데, 어떻게 하면 블록체인의 성능을 향상시키고, 앞의 두 가지를 확보하면서 상업적으로 가능하게 만들 수 있을까? 9월 5일, Odaily가 주최하고 36Kr Group이 전략적으로 공동 주최한 POD 컨퍼런스에서 Zilliqa와 싱가포르 국립 대학교의 공동 창립자이자 기술 이사인 Jia Yaoqi 박사가 행사장에서 연설을 통해 답변했습니다. .
Jia Yaoqi는 블록 크기 증가, 프록시 합의 메커니즘 및 오프체인 솔루션과 같이 퍼블릭 체인의 처리량과 확장성을 개선하기 위한 현재 솔루션은 완벽한 솔루션이 아니라고 말했습니다. 우선 컴퓨터 저장 용량과 연산 능력의 한계로 인해 블록 크기를 100배로 늘리는 것은 불가능하며, 에이전트 합의 메커니즘이 트랜잭션 속도를 향상시키기는 하지만 상대적으로 작은 합의 그룹은 공격에 더 취약하고 중앙화의 색이 강하며 오프체인 솔루션과 사이드체인은 블록체인 자체의 탈중앙화, 개방성 및 투명성을 어느 정도 상실합니다.
이와 관련하여 샤딩 기술은 전체 네트워크를 서로 다른 그룹으로 나누고 서로 다른 트랜잭션을 수행하여 전체 네트워크가 서로 다른 샤드에서 서로 다른 트랜잭션을 처리할 수 있게 하고 최종적으로 공동 컴퓨팅 및 트랜잭션 공동 결제 효과를 달성합니다. 높은 처리량 달성.
신흥 기술인 샤딩 기술에는 문제점과 문제점도 있습니다. 시빌 공격의 경우(악의적인 공격자는 더 많은 악의적인 거래를 촉진하기 위해 다른 샤드에 할당될 수 있는 다른 악의적인 노드를 만듭니다). Jia Yaoqi는 작업 증명을 사용하여 노드가 자신의 신원을 확인할 수 있도록 하는 동시에 네트워크가 가끔씩 섞이도록 하여 노드를 다른 샤드에 무작위로 할당할 것을 제안했습니다. 600개 이상, 각 샤드 슬라이스에 있는 노드의 1/3이 악성일 확률은 백만분의 일 미만입니다. 또한 Jia Yaoqi는 서로 다른 샤드의 병렬 컴퓨팅으로 인한 이중 지출 공격의 위험을 고려하여 그녀의 팀이 결정론적 할당을 통해 새로운 스마트 계약 샤딩 메커니즘을 개발하여 서로 다른 스마트 계약이 계산을 수행할 수 있도록 보장한다고 말했습니다. 동시에 여러 샤드.
보조 제목
다음은 Jia Yaoqi의 연설 전문이다.
Mandy와 Odaily의 초대에 진심으로 감사드립니다.오늘은 Zilliqa가 특히 블록체인 샤딩 기술의 선구자로서 지난 3년 동안 블록체인의 몇 가지 방법, 특히 퍼블릭 체인 확장에 대한 연구를 수행했음을 소개하고 싶습니다. .연구팀, 이 분야에서 최근 몇 가지 진전이 있습니다.
블록체인과 퍼블릭 체인에 대한 모든 사람의 이해는 분산화, 불변성, 개방성 및 투명성과 같은 기존 특성 중 일부를 통해 더 많이 이해할 수 있습니다. 동시에 블록체인, 특히 퍼블릭 체인에는 현재 모두가 알고 있는 낮은 처리량과 같은 일부 병목 현상이 있습니다. 여기서 우리는 통근 열차를 예와 비유로 사용합니다. 예를 들어 기존 퍼블릭 체인처럼 초당 10~20건의 트랜잭션을 달성할 수 있어 통근열차와 비슷하고, 각 열차는 10명만 수용할 수 있으며 다른 열차는 줄을 서야 한다.
다양한 신용 카드와 같은 전통적인 지불 시스템과 비교할 때 8000tps에 도달할 수 있습니다. 즉, 각 열차는 8000명을 수용할 수 있으므로 줄을서는 사람이 거의 없습니다. 현재 퍼블릭 체인 시스템의 낮은 처리량으로 인해 발생하는 몇 가지 문제는 교통 혼잡입니다. 예를 들어, 현재 수백 명의 사람들이 있고 수백만 명의 사람들이 그러한 기차를 타고 싶어하지만 각 기차는 10명만 수용할 수 있습니다. 우리는 무엇을 할 수 있습니까? 우선 요금을 인상합니다. 예를 들어 초기 10위안에서 지금은 1000위안으로 인상하고 가장 높은 입찰가를 제시한 10명이 최신 열차를 탈 수 있게 됩니다.
동시에 통근 열차 시스템의 경우 이는 상당한 혼잡을 야기할 것입니다. 각 열차는 10명을 수용할 수 있지만 그 뒤에 수천 명의 사람들이 줄을 서고 있지만 처리량은 결국 큰 문제를 일으킬 것입니다. 우리는 많은 프로젝트와 팀이 있고 모두가 높은 처리량과 확장성을 갖춘 퍼블릭 체인 플랫폼을 달성하는 방법을 모색하고 있음을 알 수 있습니다.
기존 솔루션 중 첫 번째는 블록 크기를 늘리는 것입니다. 이러한 인기 있는 블록체인이 있으며 그 중 일부는 2MB의 블록을 가지고 있습니다. 블록 크기가 단순히 2배 또는 10배 증가하면 그에 상응하는 처리량은 2배에서 10배까지 증가할 수 있습니다. 하지만 이 시스템은 우리가 타는 버스에 가깝습니다.이층으로 만들 수 있고 그 위에 10층도 쌓을 수 있지만 다양한 높이 제한으로 인해 버스에 100층을 지을 수는 없습니다.
이는 현재 네트워크가 각 컴퓨터의 저장 용량을 포함한 대역폭 제한과 컴퓨팅 성능의 제한으로 인해 블록 크기가 증가하여 100배 솔루션이 아니기 때문에 블록체인과 유사합니다.
동시에 일부 팀과 학자들은 대리 합의 메커니즘을 제안했습니다. 현재 기존 퍼블릭 체인에는 전체 시스템의 합의 프로토콜을 실행하고 트랜잭션을 처리하며 새로운 블록을 생성하기 위한 10,000개 또는 20,000개의 노드가 있습니다. 그렇다면 20,000명의 노드를 예를 들어 1,000명, 심지어 50명 또는 21명으로 줄여 합의를 형성할 수 있을까요? 답은 예입니다. 합의에 도달하고 블록을 생성하기 위해 거래를 처리하는 사람이 50명으로만 이러한 합의 프로토콜을 줄일 수 있습니다.
컴퓨터 기술의 관점에서 합의 프로토콜을 실행하는 노드 수가 적을수록 합의가 더 빨리 형성됩니다. 상대적으로 작은 노드 그룹이 있을 때 블록 생성 속도와 합의 프로토콜의 속도는 초당 수만 건의 트랜잭션에 도달할 수 있습니다. 그러나 대부분의 경우 자본금을 기준으로 대행기관을 선정하는데, 이는 일반 대중의 이익을 대변하지 못할 수도 있는 소그룹 선정으로 이어지게 됩니다. 동시에 에이전트 조직의 상대적으로 작은 대상으로 인해 공격에 더 취약하고 일부 에이전트가 공격을 받으면 전체 블록체인 시스템이 영향을 받습니다.
또 다른 인기 있는 확장 솔루션은 사이드 체인 및 오프체인 솔루션입니다. 현재 가장 많이 사용되는 오프체인 트랜잭션 시나리오는 소액 트랜잭션입니다. 예를 들어, 커피를 사기 위해 사용자는 직접 체인에 보증금을 입금한 다음 커피숍에서 한 달에 수십 번 커피를 구입할 수 있습니다.거래가 체인에 배치되어 체인 자체에 대한 의존도가 줄어듭니다 . 그러나 이러한 솔루션은 퍼블릭 체인 자체의 탈중앙화 및 투명성도 잃게 됩니다.
한편 올해 초 비탈릭은 자신의 트위터에 샤딩이 다가오고 있다는 글을 올렸다. 우리 팀은 샤딩 기술에 대한 연구를 최초로 수행한 팀으로 2015년 샤딩 연구를 시작하여 2016년 최고의 컴퓨터 보안 컨퍼런스 CCS에서 관련 논문을 발표했습니다. 이는 퍼블릭 체인에서 샤딩 기술을 학술 논문에 적용한 최초의 학술 논문이기도 합니다. 처리량 향상.
보시다시피 이것은 우리 팀에서 수행한 몇 가지 예비 실험입니다. 3600개 노드에서 우리 시스템은 초당 2,000개 이상의 트랜잭션을 달성할 수 있습니다. 샤딩 기술은 간단히 말해서 전체 네트워크를 나누는 것인데, 예를 들어 전체 네트워크가 10,000개의 노드를 가지고 있다면 우리는 그것을 다른 그룹으로 나눌 수 있고 각 그룹은 다른 트랜잭션을 처리합니다. 전체 네트워크는 서로 다른 샤드에서 서로 다른 트랜잭션을 처리하고 최종적으로 병렬 처리 트랜잭션의 효과를 달성하여 높은 처리량을 달성합니다.
조각화 기술은 또한 좋은 보안을 보장하는 방법, 타협하지 않는 분산화 및 스마트 계약의 효율적인 실행과 같은 많은 과제와 문제에 직면해 있습니다.
다음으로 이러한 과제와 문제를 해결하는 방법에 대해 간략하게 설명하겠습니다. 첫 번째 과제는 서로 다른 노드를 서로 다른 샤드로 나누는 방법입니다. 악의적인 공격자는 서로 다른 악의적인 노드를 만들어 동일한 샤드에 배치하여 더 많은 악의적인 트랜잭션을 촉진할 수 있습니다.
그러한 문제를 어떻게 해결합니까? 우선 학문적으로는 시빌 공격(sybil attack)이라고 불리는 공격에 대해 언급했는데, 즉 공격자가 네트워크를 캡처하기 위해 이러한 악의적인 노드를 많이 생성할 수 있습니다. 이러한 시빌 공격을 방지하기 위해 우리 시스템은 각 노드가 작업 증명을 수행하도록 요구합니다. 각 노드는 유효한 ID를 선언하기 위해 2시간과 같은 정기적인 간격으로 작업 증명을 수행해야 합니다. 그 후, 시스템은 각 샤드에 600개 이상의 노드가 있는 서로 다른 샤드로 노드를 무작위로 배포합니다. 계산을 통해 우리는 각 샤드의 노드 중 1/3이 악성일 확률이 백만분의 일이라는 것을 증명할 수 있습니다.
시스템이 보안 샤딩을 처리한 후 다른 샤드에 다른 트랜잭션을 배치하는 방법은 다음 질문입니다. 예를 들어 Alice는 공격자이며 다른 샤드에 두 개의 트랜잭션을 생성할 수 있습니다. 하나는 Bob에게 5위안을 전송하는 트랜잭션이고 다른 트랜잭션은 5위안을 자신에게 전송하는 트랜잭션입니다. 두 개의 샤드는 서로 다른 트랜잭션을 처리하지만 Alice는 5달러를 두 번 사용합니다. 이것이 우리가 고전적인 이중 지출 공격이라고 부르는 것입니다.
방금 언급한 이중 지출 공격의 경우 발신자의 주소에 따라 다른 전송 트랜잭션을 샤딩하여 공격을 방지할 수 있습니다. 그러나 현재 퍼블릭 체인에는 많은 수의 스마트 계약 트랜잭션이 있으며 이러한 트랜잭션은 샤딩에 더 많은 문제를 가져옵니다. 여전히 예를 들면 Alice와 Bob은 둘 다 영화 티켓 판매에 스마트 계약을 사용하고 Alice는 이 스마트 계약의 마지막 영화 티켓을 하나의 샤드에서 구매하고 Bob도 다른 샤드 영화 티켓에서 마지막 영화 티켓을 구매합니다. 결국 각자의 잔고로 영화표를 샀는데 서로 다른 샤드간 통신이 없기 때문에 마지막 영화표는 앨리스의 것일까요, 아니면 밥의 것일까요? 이것은 데이터 불일치로 인해 발생하는 매우 심각한 문제입니다.
일반 이체 거래의 경우 발신자만 발신자와 수신자의 상태를 변경합니다. 그러나 스마트 계약에서 다른 발신인은 스마트 계약의 상태를 변경시킬 수 있으며 동시에 스마트 계약은 다른 사용자의 상태도 변경시킬 수 있습니다.
스마트 계약 샤드 상태의 불일치 문제를 해결하기 위해 2단계 커밋 프로토콜을 사용하여 서로 다른 샤드에서 관련 스마트 계약의 상태를 잠글 수 있습니다. Alice와 Bob은 서로 다른 샤드에서 마지막 영화 티켓을 구매합니다. Alice의 트랜잭션이 먼저 실행되도록 하고 Bob의 샤드의 스마트 계약 상태를 잠글 수 있습니다. 그러나 잠금 프로토콜은 스마트 계약이 여러 샤드에서 동시에 실행되는 것을 방지합니다. 이러한 병렬 컴퓨팅 문제를 해결하기 위해 우리 팀은 결정적 할당을 통해 방금 언급한 스마트 계약 충돌 문제를 해결하는 또 다른 방법을 개발했습니다.
먼저 많은 수의 스마트 계약을 연구한 다음 이러한 스마트 계약의 트랜잭션을 분류합니다.
1. 통상의 이체거래
2. 스마트 계약을 호출하기만 하면 됩니다.
3. 더 복잡합니다. 사용자는 스마트 계약을 호출할 수 있고 스마트 계약은 스마트 계약을 다시 호출합니다.
그런 다음 이 세 가지 유형의 트랜잭션을 서로 다른 샤드에 할당합니다. 일반적인 전송 트랜잭션의 경우 발신자의 주소를 기반으로 처리할 샤드를 직접 결정할 수 있습니다. 두 번째 범주의 경우 보낸 사람의 주소와 스마트 계약을 기반으로 어느 샤드에 속하는지 결정할 수 있습니다. 우리는 세 번째 범주와 두 번째 범주의 특별 트랜잭션을 특수 샤드에 넘겨 처리할 것입니다. 이론적인 분석과 검증 후에, 우리는 알고리즘을 통해 병렬 처리를 위해 이 세 가지 유형의 트랜잭션을 서로 다른 샤드에 넣을 수 있으며 동시에 방금 언급한 이중 지출 공격과 데이터 불일치 문제를 방지할 수 있습니다.
스마트 컨트랙트 샤딩 문제를 해결하면서 스마트 컨트랙트 자체에 많은 문제가 있음을 발견했습니다. 예를 들어 지난 2년 동안 본 스마트 계약은 다양한 허점으로 인해 동결되었습니다. 그 이유는 스마트 계약 자체가 더 복잡하고 더 예측 불가능하기 때문입니다. 기존 연구를 기반으로 우리 팀은 더 나은 보안을 제공하고 공식적인 검증을 용이하게 할 수 있는 자체 스마트 계약 언어 Scilla를 개발했습니다. 현재 비교적 규모가 큰 일부 광고 회사와 소프트웨어 회사가 스마트 계약 개발을 위해 Scilla를 사용하기 위해 우리와 협력했습니다.
올해 말 또는 내년 초 질리카 메인넷이 가동되면 샤딩 기술이 퍼블릭 체인의 처리량을 크게 향상시킨 것을 볼 수 있을 것입니다.
이것들은 내 공유입니다. 모두 감사합니다!