검수요청.png검수요청.png

"확장성"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(같이 보기)
(샤딩(Sharding))
48번째 줄: 48번째 줄:
  
 
=== 샤딩(Sharding) ===
 
=== 샤딩(Sharding) ===
 +
 +
샤딩(Sharding)은 데이터베이스 또는 검색 엔진에 있는 데이터의 수평 분할을 의미한다. 쉽게 말해서 전체 데이터를 쪼개 모두가 분산해서 보관하는 것이다. 샤딩을 통해서라면 이더리움 노드들은 이더리움 블록체인의 모든 거래내역을 저장하고 있을 필요 없이, 분산된 데이터베이스인 샤드(Shard)만 저장하면 된다. 샤딩의 목표는 모든 거래를 저장하고 있는 풀노드(fullnodes)의 필요성을 줄여 전체 노드들 간의 거래 합의가 빠르게 이루어질 수 있도록 만드는 것이다. 각각의 노드들은 분산된 거래내역을 저장하고, 맡은 부분의 거래내역만 증명하면 된다. 만약 특정 노드가 자신이 저장하고 있지 않는 거래내역까지 함께 증명해야 할 경우, 필요한 정보를 갖고 있는 노드를 찾아 거래를 증명할 수 있다. 하지만 샤딩에는 몇 가지 문제점도 존재한다. 우선 어떤 노드가 어떤 정보를 갖고 있는지 알게 해주는 메커니즘이 필요하다. 또한 PoS로의 전환이 우선되어야 한다. 현재의 PoW 방식에서는 낮은 해시 파워를 갖고 있는 샤드를 공격하여 전체 시스템에 악영향을 끼칠 수 있기 때문이다. 또한 샤드 간의 원활한 소통을 위한 방법이 필요하다. 예를 들어, 하나의 거래가 노드 A와 B에 나눠져 저장될 수 있기 때문에, 이 경우 노드 A와 B가 서로 신뢰할 수 있는 합의 방식이 필요하다.
  
 
=== 라이덴네트워크(RaidenNetwork) ===
 
=== 라이덴네트워크(RaidenNetwork) ===

2019년 8월 6일 (화) 12:58 판

확장성(Scalability)이란 사용자 수의 증대에 유연하게 대응할 수 있는 정도이다. 블록체인에서는 사용자수의 증가에 따라 거래건수가 늘어나더라도 무리 없이 전송 처리용량을 증대시킬 수 있는 능력을 의미한다. 다양한 암호화폐가 등장하기 전에는 사용자가 소수였기 때문에 비트코인 기준 처리속도가 10분이라도 한 블록에 모든 거래를 담아낼 수 있었다.

개요

확장성(Scalability)이란 사용자의 요구에 맞추기 위해 크기나 용량을 변경해도 그 기능이 잘 동작할 수 있는 능력을 뜻한다. 암호화폐 사용 초기에는 사용자가 많지 않았기 때문에 처리 속도가 비트코인 기준으로 10분이라도 한 블록에 모든 거래를 담기에 충분했다. 그러나 암호화폐가 점점 대중화되어 처리해야 할 거래량이 증가하자, 하나의 블록에 10분 동안 발생한 모든 거래내역을 담을 수 없는 상황이 발생했다. 비트코인의 경우 초당 약 3~7건의 거래를, 이더리움의 경우 초당 약 20건의 거래를 처리한다. 이는 초당 약 200건의 거래를 처리하는 페이팔, 약 2,000건의 거래를 처리하는 비자와 대조하면 현저하게 느린 속도이다. 암호화폐의 대중화로 사용자가 점점 늘어나는 상황에서, 비트코인과 이더리움뿐만 아니라 대부분의 암호화폐는 실제 서비스로 사용하기엔 현재까지는 확장성의 한계가 분명하다.

원인 및 문제점

블록에 거래가 담길 시

비트코인 블록의 크기는 1M이다. 그러나 1M 블록의 크기는 비트코인이 처리해야 할 거래량에 비해 턱없이 부족하다. 또한 비트코인으로 거래하기 위해서는 채굴자(Miner)에게 수수료를 제공해야 하는데 이 수수료 값이 적을 경우 거래 속도가 더 지연될 수 있다. 채굴자들은 블록에게 거래내역을 담을 때 수수료가 높은 것을 우선으로 하기 때문이다. 이더리움은 비트코인과는 달리 블록의 크기보다는 한 블록에 담을 수 있는 가스(gas) 크기의 제한 때문에 속도 지연 문제가 발생한다. 가스란 이더리움 플랫폼에서 발생하는 거래의 수수료 개념이라고 할 수 있는데, 한 개의 이더리움 블록에는 약 670만 가스로 제한되어있다.

노드 간 합의 과정 시

블록체인은 중앙통제기관이 없는 P2P 네트워크이다. 따라서 거래가 발생하면 노드들은 가십 프로토콜(GossipProtocol)을 통해서 거래를 전파한다. 새로운 거래가 체결되면 노드들은 가까운 노드에게 새로운 거래내역이 담긴 블록을 전송한다. 전달받은 노드는 또 가까운 노드에게 거래내역을 전송한다. 그리고 노드는 자체적으로 전달받은 거래가 신뢰할 수 있는지 검증하는 과정을 거친다. 이렇기 때문에 노드가 많아질수록 전체 노드에게 새로운 거래가 전달되는 시간, 그리고 각각 노드가 거래를 검증하는 시간이 증가하게 되므로 거래 속도는 점차 느려지게 된다. 이더리움의 경우 약 25000개의 노드가 있다. 이는 비트코인의 노드 수가 약 11200개인 것에 비해 두 배 가까이 많은 수치이다. 따라서 이더리움의 경우 비트코인에 비해 노드 간의 거래 합의에 도달하기 위해 필요한 시간이 더 많다.

비트코인의 해결방안

비트코인은 우선, 블록에 들어가는 정보를 늘리는 방법을 통해 확장성의 문제를 해결하려고 한다. 블록에 들어가는 정보를 늘리기 위해서는 첫 번째로는 블록에 입력되는 정보를 효율적으로 정리하여 더 많은 정보를 담는 방법과 두 번째로는 블록의 크기를 늘리는 방법이 있다. 비트코인에서 첫 번째의 방법은 세그윗(Segwit)을 통해 가능하고, 두 번째의 방법은 하드 포크(hardfork)를 통해서 가능하다. 다음으로, 비트코인은 모든 거래를 블록에 올려 검증하는 것이 아니라 최종 결과만 블록에 담는 라이트닝 네트워크(Lightning Network)의 방법을 통해 확장성 문제를 해결하려고 한다.

세그윗(Segwit)

세그윗이란 Segregated Witness의 약자로 블록 내에서 서명 부분을 따로 분리하여 저장하는 것을 의미한다. 서명 부분을 메인 체인이 아닌 사이드 체인(SideChain)에 저장하여 기존 블록의 크기는 1M로 그대로 두는 대신 블록에 담을 수 있는 용량을 평균 2M까지 늘릴 수 있다. 세그윗은 2017년 8월 진행되었다. 그러나 세그윗은 비트코인의 거래량을 약 2배 정도 증가시켜주는 정도이기 때문에 비트코인의 확장성 문제를 완전히 해결해 주었다고 하기 어렵다.

하드포크(hardfork)

하드포크란 기존 비트코인 네트워크에서 분기되어 블록 사이즈가 1M보다 큰 새로운 블록체인 네트워크를 만드는 것이다.소프크포크(softfork)는 소프트포크 전 블록과 소프트포크 후의 블록이 서로 호환이 가능하지만 이와 달리 하드포크는 하드포크 전 블록과, 하드포크 후 블록 사이에 호환이 가능하지 않다. 비트코인 세그윗에 반대하는 사람들은 비트코인 블록체인의 하드포크를 통해 블록 자체의 용량을 1M 이상으로 늘리고 자 했다. 그 결과 2017년 8월 1일, 8M까지 블록 사이즈 확장이 가능한 비트코인 캐시가 탄생했다. 그러나 하드포크를 통해만들어진 비트코인 캐시도 블록 크기를 8M까지 늘렸다고 해도 비트코인과는 다른 새로운 암호화폐이기 때문에 비트코인 캐시가 비트코인의 확장성을 해결해 주었다고 말할 수 없다.

라이트닝 네트워크(Lightning Network)

라이트닝 네트워크는 2015년 조셉 푼(Joseph Poon)과 타데우스 드라이자(Thaddeus Dryja)에 의해 최초로 고안된 아이디어이다. 라이트닝 네트워크의 기본 아이디어는 모든 거래내역을 블록체인에 올리는 것이 아니라 별도의 채널을 오픈하여 서로의 사인만으로 트랜잭션을 주고받다가 일정한 주기 또는 필요에 따라 최종 정산된 값만을 블록체인에 올리는 것이다. 오프 체인(Off-Chain)을 활용한 스테이트 채널(State Channel) 또는 네트워크라고 불리는데, 합의 과정은 별도의 채널에서 로컬 컨센서스(Local Consensus)를 통해이룬다. 소액거래나 일정 시간 자주 발생하는 거래일 경우 모두의 합의를 거쳐 블록체인에 기록하려면 시간이 걸릴 것이다. 이때, 당사자들만의 체인에서 따로 합의를 하고 최종 결과만 메인 네트워크에 기록하면 합의 시간이 훨씬 단축될 될 수 있다.

이더리움의 해결방안

이더리움은 확장성 문제를 블록 크기를 개선함으로써 해결하는 것이 아니라 노드 간의 전파 속도 향상에 초점을 맞춰서 해결하고자 한다. 이더리움의 해결 방법은 노드 간의 합의 속도를 빠르게 만드는 것이다. 이를 위한 방법은 POS 전환, 섀딩(Sharding), 라이덴 네트워크(RaidenNetwork), 플라즈마(Plasma) 이렇게 4가지가 있다.

POS 전환

이더리움은 PoW(Proof of Work) 작업 증명 방식에서 PoS(Proofof Stake) 지분 증명 방식으로 전환을 통해 확장성 문제를 해결하려 한다. 채굴자(miner)가 채굴(mining)을 통해서 블록을 생성했던 PoW 방식과는 다르게 PoS 방식에서는 이더리움을 많이 소유하고 있는 검증자(Validator)가 블록을 생성한다. 이것은 ‘이더리움에 많은 지분을 갖고 있는 소유자는 이더리움 블록체인의 안정성을 손상시키지 않을 것이다’는 전제를 바탕으로 한다. 이더리움의 합의 방식이 PoS로 전환된다면, 검증자(Validator)를 통해 더 빠른 합의가 이루어질 수 있다. 이더리움은 PoS 전환을 위해 캐스퍼 합의 알고리즘(Casperconsensus algorithm)을 도입할 예정이다. 캐스퍼 합의 알고리즘이란 PoW와 PoS의 하이브리드 형식으로 99번째 블록까지는 PoW 방식으로 거래를 증명하고, 100번째 블록마다 PoS 방식으로 거래를 증명하는 방법을 의미한다. 이더리움 하드 포크 최종 단계인 세레너티(Serenety)에서 PoW에서 PoS로의 전환이 될 예정이다.

샤딩(Sharding)

샤딩(Sharding)은 데이터베이스 또는 검색 엔진에 있는 데이터의 수평 분할을 의미한다. 쉽게 말해서 전체 데이터를 쪼개 모두가 분산해서 보관하는 것이다. 샤딩을 통해서라면 이더리움 노드들은 이더리움 블록체인의 모든 거래내역을 저장하고 있을 필요 없이, 분산된 데이터베이스인 샤드(Shard)만 저장하면 된다. 샤딩의 목표는 모든 거래를 저장하고 있는 풀노드(fullnodes)의 필요성을 줄여 전체 노드들 간의 거래 합의가 빠르게 이루어질 수 있도록 만드는 것이다. 각각의 노드들은 분산된 거래내역을 저장하고, 맡은 부분의 거래내역만 증명하면 된다. 만약 특정 노드가 자신이 저장하고 있지 않는 거래내역까지 함께 증명해야 할 경우, 필요한 정보를 갖고 있는 노드를 찾아 거래를 증명할 수 있다. 하지만 샤딩에는 몇 가지 문제점도 존재한다. 우선 어떤 노드가 어떤 정보를 갖고 있는지 알게 해주는 메커니즘이 필요하다. 또한 PoS로의 전환이 우선되어야 한다. 현재의 PoW 방식에서는 낮은 해시 파워를 갖고 있는 샤드를 공격하여 전체 시스템에 악영향을 끼칠 수 있기 때문이다. 또한 샤드 간의 원활한 소통을 위한 방법이 필요하다. 예를 들어, 하나의 거래가 노드 A와 B에 나눠져 저장될 수 있기 때문에, 이 경우 노드 A와 B가 서로 신뢰할 수 있는 합의 방식이 필요하다.

라이덴네트워크(RaidenNetwork)

플라즈마(Plasma)

평가 및 전망

각주

참고자료

같이 보기


  검수요청.png검수요청.png 이 확장성 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.