Skip to content

jaehoon-k/jaehoon-k.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 

Repository files navigation

블록체인의 확장성과 프라이버시 : 이더리움 2.0 의 해결책

이더리움 2.0 은 기존 이더리움 1.0 이 가지고 있던 여러 문제점들을 해결해 줄 것으로 기대를 모으고 있다. 무엇 보다 새로운 PoS 합의 알고리즘 그리고 샤딩의 적용을 통해 현재 평균 15 TPS 정도에 불과한 처리 용량을 대폭 향상시킬 수 있을 것으로 기대된다.

PoS(Proof of Stake) 합의 알고리즘의 적용으로 기존 PoW(Proof of Work) 대비 빠른 블록 생성이 가능해 지며, 샤딩을 적용하여 기존 이더리움 1.0 에서 전체 노드가 참여하던 블록 검증 작업을 샤드 단위로 분산하여 처리하므로써 트랜잭션 처리 용량의 개선을 이루어 낼 수 있을 것으로 보인다.

이와 함께 영지식 증명(ZK-SNARK) 기술을 통해 트랜잭션의 익명성 보장이 가능해짐으로써 프라이버시를 강화 할 수 있을 것으로 기대된다.

트랜잭션 처리 용량의 획기적이 개선과 함께 트랜잭션의 익명성 보장이 가능해진다며 이더리움 퍼블릭 네트워크의 엔터프라이즈 영역에서의 활용도 또한 높아질 것으로 예상된다.

합의 알고리즘 : PoW 그리고 PoS

블록체인의 합의 알고리즘은 분산된 노드에서 발생한 트랜잭션의 처리 순서를 결정하여 각각의 노드의 상태가 파편화 되지 않고 전체 블록체인이 하나의 Global State 를 유지할 수 있게 해주는 역할을 한다.

이더리움 1.0 은 PoW 방식의 합의 알고리즘을 사용한다. 비트코인에 처음 적용된 PoW 방식의 합의 알고리즘은 지속적으로 합의를 이루어내어 블럭을 생산해 낼 수 있으며 누구나 블록체인 네트워크에 참여해 블록을 생산할 수 있는 공정한 기회가 주워진다는 장점을 가지고 있다.

하지만 이러한 장점에도 불구하고 블록 생성을 위한 작업 증명 과정에 과도한 자원의 소비를 필요로 하며 생성된 블록의 확정에 오랜 시간이 소요되고 소위 'Mining Farm' 으로 불리는 전문 채굴 업체 등의 등장으로 공정한 블록 생산 기회가 사라지는 등 의 문제점을 드러내게 되었다. 이러한 문제들을 해결하기 위해서 이더리움 2.0 은 PoS 방식의 합의 알고리즘 도입을 결정하였다.

PoS 합의 알고리즘은 크게 "Chain-based PoS" 와 "BFT-Style PoS" 두가지 타입으로 분류 할 수 있다.

Chain-Based PoS

Chain-Based PoS 합의 알고리즘은 의사난수(Pseudo Random) 방식을 이용하여 각 시간대(Time slot) 별로 하나의 신규 블록을 생성할 권한을 하나의 검증자에게 부여한 후 블록을 생성하게한다. 이렇게 생성된 블록은 반드시 하나의 이전 블록과 연결되어 있어야 한다. 대부분의 경우 해당 이전 블록은 블록 생성 시점에서 가장 긴 체인의 마지막 블록이며 이러한 방식으로 시간이 흐름에 따라 대부분의 신규 블록이 하나의 메인 체인에 수렴하게 된다.

BFT-Style PoS

BFT-Style PoS 합의 알고리즘은 무작위(Random)로 신규 블록을 제안할 검증자들을 선정한 후 모든 검증자들이 참여하는 다중(Multi-round) 투표 절차를 거쳐 하나의 신규 블록을 선정한다. Chain-Based PoS 합의 알고리즘과의 가장 큰 차이점은 신규 블록 선정이 블록 단위로 이루어지며 해당 블록과 연결된 Chain 의 길이와는 상관이 없다는 점이다. 이더리움 2.0 의 캐스퍼 PoS 합의 알고리즘은 일부 수정된 BFT-Style PoS 합의 알고리즘을 따르고 있다.

캐스퍼(Casper)

캐스퍼 로 명명된 이더리움 2.0 의 PoS 합의 알고리즘은 네트워크에 일정 금액 이상의 이더를 예치(Stake)한 검증자(Validator) 들 중 무작위로 선정된 검증자가 다음 블럭을 생성하고 다른 검증자들에 의해 검증 후 투표에 의해 선정된 경우 체인에 반영되는 방식으로 운영된다. 이때 각 검증자의 투표의 영향력(Voting Power)은 네트워크에 예치한 금액에 비례하여 증가한다. 또한 검증자들이 규칙을 어기거나 악의적인 행동을 할 경우 벌칙(Penalty)를 부여받게 되어 예치한 이더가 감소하게 된다. 이러한 장치들은 검증자들이 새로운 합의 알고리즘을 보다 안정적으로 운영하도록 만들어 준다.

이더리움 2.0 의 새로운 캐스퍼 PoS 합의 알고리즘은 기존 이더리움 1.0 의 PoW 합의 알고리즘 대비 자원 효율적이며 중앙집중화를 완화해 줄 수 있으며 이더리움 2.0 의 또다른 주요 기능인 샤딩과 상호 작용하여 이더리움의 확장성을 향상할 수 있는 기능을 제공한다.

대용량 블록체인 트랜잭션 처리 : 레이든 네트워크, 플라즈마 그리고 샤딩

블록체인 시스템에는 확장성 트릴레마(Scalability Trilemma) 문제가 존재한다. 확장성 트릴레마란 블록체인 시스템이 확장성(Scalability), 탈중앙화(Decentralization) 그리고 보안성(Security) 을 모두 확보 할 수 없다는 문제점이다. 세가지 특성 중 두가지 특성을 확보하면 나머지 하나는 포기할 수 밖에 없다는 것이다. 이더리움 2.0 은 블록체인의 확장성 트릴레마의 해결책으로 샤딩을 제안한다.

지금까지 이더리움의 확장성 향상을 위한 다양한 방법이 제안 되었다. 그 중 많은 관심으 받았던 방법으로 레이드 네트워크와 플라즈마를 들 수 있다.

레이든 네트워크

레이드 네트워크는 이더리움 네트워 상에서 스테이트 채널 기술을 이용하여 ERC-20 규격의 토큰 교환 속도를 향상 시키고자 하는 오프체인 솔루션이다.

스테이트 채널 이란 비트코인의 페이먼트 채널인 라이트닝 네트워크 유사한 오프체인 확장성 향상 기술 이다. 하지만 스테이트 채널은 지불 기능 이외에 스마트 컨트랙트의 상태 업데이트 기능 또한 지원할 수 있다.

스테이트 채널의 참여자들은 멀티시그(Multi-sig) 컨트랙트를 이용해서 블록체인 상의 특정 상태에 락을 설정한다. 이후 참여자들은 오프체인 상태에서 서명한 트랜잭션을 주고 받으며 상태를 업데이트 한다. 모든 트랜잭션이 종료 된 후 최종 결과를 온체인에 업로드 하면 스테이트 채널은 종료되고 온체인의 상태가 업데이트 되고 락이 해제된다.

레이든 네트워크는 이러한 스테이트 채널 기술을 이용하여 ERC-20 토큰 전송 속도를 향상 시킨다. 더불어 레이든 네트워크는 Balance Proof 이라는 방식을 이용하여 참여자 간의 토큰 전송 기록을 공개하지 않은 상태에서 토큰 거래를 가능하게 하여 프라이버시 또한 향상 시킬 수 있다.

플라즈마와 샤딩

현재 대부부분의 블록체인 시스템은 각각의 노드가 전체 네트워크의 상태 정보를 저장하고 있으며 네트워크로 전송된 모든 트랜잭션을 처리한다. 이는 블록체인 시스템에 보안성을 제공하는 반면 확정성을 저해한다.

블록체인 시스템에 샤딩을 적용하게 되면 한 블록체인에서 모든 트랜잭션을 처리하지 않고 보다 작고 빠른 샤드 체인에서 트랜잭션들을 나누어 병렬로 처리하는 것이 가능해지며 이를 통해 확장성을 향상시킬 수 있다.

이더리움 2.0 의 샤딩은 언뜻 이더리움 1.0 의 확장성 향상 방안 중 하나였던 플라즈마와 유사해 보인다. 샤딩과 플라즈마 모두 메인 체인과 메인 체인에 연결된 차일드 체인(샤딩의 경우 샤드 체인)에서 트랜잭션 처리를 담당한다는 공통점을 가지고 있다 하지만 본질적인 차이점을 가지고 있다.

오프체인(레이어 2) 솔루션이 적용된 플라즈마 체인은 메인 체인과 독립된 블록체인 이다. 따라서 플라즈마 체인에 문제가 생기더라도 메인 체인은 영향을 받지 않을 수 있다.

반면 이더리움 2.0 의 샤드 체인은 메인 체인인 비콘 체인과 긴밀하게 연결되어 있는 온체인(레이어 2) 솔루션이라고 할 수 있다. 따라서 샤드 체인에 문제가 생기게 되면 이는 메인 체인의 문제라고 볼 수 있다.

이더리움 2.0 샤딩의 또다른 특징은 새로운 PoS 합의 알고리즘인 캐스퍼 와 긴밀하게 상호 작용한다는 점이다. 각 샤딩 체인의 블록을 생성할 검증자 들은 검증자 풀에서 무작위로 선택되며 생성된 블록을 검증할 검증자들 역시 무작위로 선정된다. 블록 검증을 위해서는 최소 128 명의 무작위로 선정된 검증자가 필요하며 이를 위원회(Commitee) 라고 부른다. 검증자들이 검증한 블록은 비콘 체인으로 전달되어 기록된다. 이렇듯 검증자들을 무작위로 선정하고 지속적으로 재구성함으로써 특정 샤드 체인에 대한 악의적인 사용자의 공격을 예방할 수 있다.

이더리움 2.0 샤딩 (출처: https://media.consensys.net)

각각의 Epoch 기간 동안 비콘 체인은 검증자들에 대한 보상과 벌칙을 부여한 이력을 기록하고 비콘 블록을 확정(Finalize) 하는 역할을 수행한다. 비콘 블록의 확정은 Casper 합의 알고리즘을 통해 이루어 지며 비콘 블록이 확정되면 샤드 블록 역시 확정된 것으로 간주되며 다른 샤드에서 접근이 가능해진다.

이더리움 2.0 의 PoS 와 샤딩이 적용되면 현재 보다 1000 배정도 트랜잭션 처리 용량이 향상되는 효과가 나타날 것으로 예상하고 있다. 아직 샤드 체인간 통신 등 해결해야 할 문제들이 남아 있지만 최소 3단계에 걸쳐 적용될 이더리움 2.0 의 새로운 PoS 와 샤딩이 이더리움을 어떻게 변화 시키고 블록체인의 확장성을 향상 시킬지 기대된다.

이더리움 트랜잭션 파리이버시 보호 : 영지식 증명과 동형암호

블록체인은 네트워크 참여자에게 모든 원장을 공개하고 공유함으로써 데이터의 위변조를 막을 수 있다. 따라서 데이터가 공개되는 블록체인과 데이터를 감추고자 하는 프라이버시 보호 기능은 언뜻 상충하는 것으로 보인다. 그러나 블록체인의 탈중앙화를 보다 안전하게 실현하는데 프라이버시 보호 기능이 중요한 역할을 할 수 있다.

영지식 증명(ZKP, Zero-knowlege Proofs)의 목표는 증명자(Prover)가 알고 있는 증거(Witness)를 검증자(Verifier) 또는 다른 어느 누구에게도 노출하지 않은 상태에서, 증명자가 증거를 알고 있다고 검증자에게 확신 시키는 것이다. 영지식 증명을 블록체인에 적용한 가장 잘 알려진 사례는 Zcash 와 이에 적용된 zk-SNARK(Zero-Knowledge Succinct Non-interactive Argument of Knowledge) 를 들 수 있다.

zk-SNARK

zk-SNARK 는 영지식 증명을 보다 간결하고 비간섭적으로 사용할 수 있도록 변형한 형태로 zk-SNARK 을 이용하면 트랜잭션의 페이로드(예를 들어 이더의 전송자, 수신자, 전송 금액 등)를 노출 하지 않은채 트랜잭션을 전송하는 것이 가능해진다. 이를 통해 이더리움 네트워크의 익명성과 프라이버시를 강화할 수 있다.

zk-SNARK 는 세 가지 알고리즘인 Key Generator : G, Prover : P, Verfier : V 로 구성된다. 이중 Key Generator 는 비밀 파라미터인 Lamda 를 이용해서 두 개의 공개 키인 Proving Key : pk 와 Verification Key : vk 를 생성하는데 이용된다. 그런데 lamda 가 노출되면 누구든지 lamda 를 이용해서 증거(witness)를 알지 못하는 상태에서 거짓 증명(Fake Proof) 를 만들어낼 수 있다. 따라서 lamda 는 절대로 누출 되어서는 안되며 이때문에 Zcash 또한 다자간 계산 방식(Powers of tau ceremony)을 통해 pk 와 vk 를 생성했다.

이러한 초기 설정의 어려움은 zk-SNARK 의 단점으로 지적되며 이를 극복 하고자 하는 또 다른 시도가 주목 받고 있다.

zk-STARK

zk-STARK 는 Zero-Knowledge Scalable Transparent Argument Knowledge 의 약자로 영지식 증명을 zk-SNARK 에 비해 더 빠르고 저렴하게 구현해 낼 수 있으며 무엇보다 까다로운 초기 설정 없이도 영지식 증명 적용이 가능하다는 장점으 가지고 있다. 이는 zk-STARK 가 충돌저항성 해시함수에 기반한 선형 암호화 기술을 사용하고 있으며 암호학 측면에서 보다 간단한 구조를 가지고 있기 때문이다. 반면, zk-STARK 는 zk-SNARK 에 비해 증명 데이터를 만드는데 더 많은 데이터 용량을 필요로 한다는 단점을 가지고 있다.

동형암호

동형암호란 간단히 설명하면 데이터를 암호화한 채로 연산이 가능하도록 지원하는 암호 기술이다. 블록체인에서 동형암호 기술을 이용하면 비공개 요소(Blinding Factor) 를 이용하여 트랜잭션의 입력값과 출력값을 암호화 하여 기밀 트랜잭션(Confidential Transaction) 전송이 가능하다. 이를 통해 트랜잭션의 참여자를 제외한 제 3자는 트랜잭션의 내용을 알 수 없게 하여 블록체인의 프라이버시를 향상 시킬 수 있다.

zk-SNARK 와 zk-STARK 그리고 동형암호 기술 모두 아직 완성된 기술이라고 볼수는 없으나 앞으로 단점들을 보완해 나간다면 블록체인의 익명성과 프라이버시 향상에 커다란 역할을 할 것으로 기대된다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published