퍼블릭 블록체인을 어떻게 내실 있게 평가할 것인가, 진정한 삼위일체 불가능 이론에서 부터

2019.10.23

img

최근, Conflux는 일련의 과학 보급 칼럼을 출시할 예정이다. 몇몇 간단한 기술적 원리에서부터, 몇몇 프로젝트가 홍보하는 개념 중, 어떤 개념이 실현 가능한지, 어떤 개념이 실현되려면 타협이 필요한지를 판별하도록 도와줄 것이다.

1기에서는 블록체인의 "삼위일체 불가능이론"부터 시작하여, 극치의 효율을 추구하려면 도대체 무엇을 희생해야 하는지에 대해 이야기한다. 현재 블록체인 미디어에서는, "삼위일체 불가능이론", 즉 효율·안전·탈중앙화의 3자가 함께 공존할 수 없다는 매우 넓은 개념이 전해지고 있다. "삼위일체 불가능이론"과 마찬가지로 빈번하게 개념이 나타나는데, "삼위일체 불가능이론"이 퍼블릭 체인의 어떤 프로젝트에 의해 타파되는 것이다. 일부 매체에서 Conflux를 선전할 때도 이 표현을 사용한 적이 있다.

그러나 Conflux가 "삼위일체 불가능이론을 타파해라"라고 공식 선언한 적은 한 번도 없다. 이 개념이 엄격하지 않다는 게 우리의 생각이다. 단지, 이 개념이 제안되었을 때, 아직 아무도 이 세 가지 일을 동시에 제대로 하지 못했고, 아무도 엄밀한 분석을 통해 그것이 불가능하다는 것을 증명하지 못했다고 말할 수 있다.

오늘, 또 다른 삼위일체 불가능이론을 소개하겠다. 한 블록 체인이 퍼블릭 체인이든, 컨소시엄 블록체인이든, PoW이든, PoS이든, 나카모토 컨센서스를 채택하든, BFT든, 다른 어떤 방식으로든, 모두 우회할 수 없다. 이 삼위일체 불가능이론은 세 가지 목표를 포함한다. (이해하기 쉽도록, 우리는 그것을 정의하는 데 매우 형식적인 언어를 피하는 대신 생각과 사고의 방향을 대략 묘사한다)

1. 풀(Full) 노드 동기화 및 검증

퍼블릭 체인 네트워크에서, 퍼블릭 체인 네트워크의 정확성과 안전성이 일부 노드의 배서(背書)에 의존한다. 예를 들어 비트코인이나 이더리움에서, 합의에 따라 채굴자 한 명씩 블록을 파낼 경우, 새로운 블록과 이전의 블록 하나하나가 각각의 거래가 올바르다는 것을 보장해야 한다. 비트코인 채굴자들이 블록을 꺼낼 때, 이전의 모든 블록을 위해 정확한 배서를 한다는 것이다. EOS에서, 슈퍼 노드는 서명을 통해 블록에 대한 정확한 배서를 한다. 우리는 여기서 '참여 컨센서스의 노드' 라고 부른다.

img

"풀 노드 동기화 및 검증"은 확인된 트랜잭션마다 모든 참여 컨센서스 노드(공격자 제외)의 동기화 및 검증을 받도록 요구한다.

이 목표는 안전과 관련된 것이다. 한 장면을 생각해보자. 어떤 사람이 위조 무효 서명을 통해 불법 거래를 만들고, 당신의 자산을 훔치려고 한다. 만약 일부의 참여 컨센서스 노드가 이 거래를 동기화하고 검증했다면, 다른 노드는 이 거래를 동기화하지 않고 그 일부 노드의 판단 결과를 그대로 신뢰한다. 이렇게 되면, 불법 거래를 거래 내역에 끼워 넣을 가능성이 모든 참여 컨센서스 노드를 동기화하고 검증하는 것보다 높아질 것이다. 양자의 안전성은 다르다.

2. 초고(超高) 처리량

최종적으로 확인된 거래의 평균 처리량이 11,000 TPS를 초과한다. 이를 초고 처리량이라고 한다. (거래당 크기는 250바이트로 계산)

img

3. 낮은 대역폭 요구

각각의 참여 컨센서스 노드에 대해 네트워크 대역폭의 최소 배치 요구사항은 20 Mbps (2.5 MB/s)보다 높지 않다.

이 목표는 탈중심화와 관련된 것으로, 참여의 문턱이 낮을수록 공감할 수 있는 사람이 많아져 중심화에 유리하다.

여기까지가 삼위일체 불가능이론의 세 가지 목표이다. 그 이유는 이해하기에 굉장히 간단한데, 한 노드에 20 Mbps 대역폭이 있다면 초당 2.5 MB의 데이터만 다운로드할 수 있는, 대략 10,000건의 거래이다. 네트워크에서 최종적으로 확인된 거래의 평균 처리량이 11,000 TPS를 초과할 경우, 20 Mbps 대역폭만 있는 이 노드는 각각의 거래를 동기화하고 검증할 능력이 없다.

​### 그렇다면 이 어려움에 맞서, 취사(取捨)선택을 하는 방안은 어떤 것들이 있을까?

1. 풀(Full) 노드 동기화 및 검증

이 방안 중에서 샤딩(Sharding)은 매우 유명한 솔루션이다. 샤딩 방안의 대체적인 사고는, 전체 블록 체인이 논리적으로 몇개의 Shard를 나누고, 관련 없고 상충하지 않는 거래를 서로 다른 Shard로 분할하는 것이며, 각 Shard는 일부 채굴자들에 의해 동기화된다. 채굴자에게는 다른 Shard 에서의 거래 정확성에 대한 책임이 필요 없다.

샤딩 방안은 처리량을 높이는 사고의 일부이지만, 이 사고는 안전성을 희생한다. 어떤 사람이 서명을 위조해 불법 거래를 만들어 당신의 자산을 훔치려 한다면, 인터넷 전체의 노드가 당신을 도와 불법 거래를 막을 것이다. 일부의 노드가 당신을 도와 불법 거래에 대비할 수 있도록 도와주는 것과는 양자의 안전도는 다르다. 다만, 용돈만 모아둔 계좌는 안전성보다는 거래비용에 더 민감할 수 있다. 그래서 이 방향은 매우 탐구할만한 가치가 있다.

그러나 샤딩 방안의 TPS와 다른 사람의 풀 노드를 동기화하고 검증한 TPS를 비교한다면 매우 비과학적이다.

img

또 다른 사고는 영 지식 증명 또는 검증 가능한 계산과 같은 암호학적 도구를 통해, 하나의 노드가 각각의 거래를 동기화할 필요 없이 블록 헤더 동기화 및 일부 암호학적인 원소만 필요하도록 허용하고, 하나의 블록이 올바른 머클루트임을 검증할 수 있다. 물론, 이 사고에는 해결해야 할 구멍이 많다. 기회가 된다면 글을 써서 토론을 벌여보도록 하겠다.

2. 높은 TPS를 포기하다

여기서 높은 TPS를 포기하는 것은 기존의 네트워크 조건 아래, 10,000 TPS 이상의 처리량을 포기하는 것을 의미한다. Conflux는 탈중심화와 안전성을 보유하고, 가정용 네트워크 요건에서도 채굴할 수 있도록 풀 노드 동기화와 검증 및 낮은 대역폭 요구사항을 유지해야 했고, 거래마다 채굴자의 검증을 받았다. 이 두 가지를 그대로 둔다면, 효율성에 한계가 있을 것이다.

3. 낮은 대역폭 요구를 포기하다

일부 컨센서스 메커니즘에서는 일반 사용자가 거래에 대한 동기화 및 검증에 참여하지 않고, 일부 방식으로 소수의 특이한 노드를 골라 컨센서스를 형성한다. 우리는 선발되는 노드마다 더 나은 CPU, 더 큰 하드 드라이브, 더 큰 네트워크 대역폭을 위한 충분한 컴퓨터 리소스가 준비되어 있다고 가정할 수 있다. 이럴 때 '최소 배치 요구'를 낮게 설정할 필요는 없다.

Source: https://blog.naver.com/conflux-chain/221698952563