티스토리 뷰

반응형

이더리움의 머지(Merge)가 성공적으로 끝났다. 그럼 머지 후 달라지는 점은 무엇일까? 솔직히 일반인의 입장에서 보면 달라진게 없다. 그저 블록 데이터에 에포크와 슬롯이 추가되었을 뿐 육안으로 보기에는 이전과 달라진 것이 없다.

그럼 개발자의 입장에서 보면 어떨까? 가장 잘 알려진 차이점은 머지 전 기존의 블록체인은 합의 알고리즘을 PoW(작업증명, Proof-of-Work)을 사용한다면 현재는 PoS(지분증명, Proof-of-Stake)을 사용한다는 것이다. 블록체인의 블록을 검증하는 합의 방식을 완전히 바꿈으로써 이더리움 블록체인의 개발 환경 또한 크게 달라짐을 알 수 있다. 가장 큰 변화는 이더리움 노드를 운영하는 방법이 달라졌다는 점이다.


이더리움  머지와  계층(Layer)

이더리움은 블록과 트랜잭션 데이터를 검증할 수 있는 소프트웨어를 실행하는 컴퓨터(노드)들로 이루어진 분산 네트워크이다. 전세계 여러 곳의 컴퓨터(노드)들이 이더리움 네트워크에 연결되어 블록체인 데이터들을 검증하고 보안을 유지한다. 이 분산된 컴퓨터들을 노드라고 부르며 노드들 끼리 연결시켜 네트워크를 형성하도록 돕는 소프트웨어를 이더리움 클라이언트(Client)라고 한다.

 

이더리움 DApp이나 서비스를 개발하기 위해서는 이더리움 노드가 필요했고, 이 노드를 운영하기 위해선 기존에는 이더리움 클라이언트를 하나만 사용해서 관리해주면 되었다. 하지만 지금은 클라이언트를 2개를 다운 받아서 서로를 연결해야한다. 왜냐하면 머지 후에는 실행 계층과 합의 계층이 공존하기에 실행 클라이언트와 합의 클라이언트 2개를 사용해서 노드에 접속할 수 있기 때문이다. 이게 무슨 말인가? 이 말을 이해하기 위해선 머지 등장 배경에 대해서 알 필요가 있다.

 

머지(Merge)는 이더리움 Eth1의 작업 증명 체인이 Eth2의 지분 증명 체인으로 전환되는 업그레이드를 뜻하는 말이다. 이더리움 개발자들은 Eth2의 로드맵에 적혀있는대로 PoS의 완전한 기능이 제공되려면 몇년이나 걸릴 것으로 예상했다. 완전한 PoS로의 이전이 오래 걸릴 것같으니 개발자들은 기존 작업 증명의 상태의 블록체인에서도 지분 증명 로직을 수행할 수 있도록하는 연구가 시작된다. 작업 증명 체인을 유지하면서도 지분 증명 로직을 조금씩 업데이트 하는 제안을 얼리 머지(Early Merge)라고 불렀고, 얼마전 끝난 머지(작성일 기준 2022년 3분기 업그레이드)가 얼리 머지인 것이다. (얼리 머지 후 이더리움은 완전한 PoS를 위해 계속 머지를 해나갈 것이다) 얼리 머지는 다른 말로 'Shard 0'라고 불리기도 한다. 얼리 머지를 선택한 이유는 조금씩이라도 빨리 블록체인을 업데이트 함으로써 PoS로의 전환을 촉진시킬 뿐만 아니라 이후 이뤄질 업데이트도 절차적으로 더 원활하게 진행할 수 있기 때문이라고 한다.

 

그리하여 얼리 머지가 끝난 지금 현재의 이더리움의 상태는 작업 증명 네트워크와 지분 증명 네트워크가 공존해있는 상태이다. 머지 전에는 실행 계층이 작업 증명과 합의 역할을 모두 담당했다면, 지금 머지 후에는 실행 계층과 합의 계층이 별도로 존재하여 각각 작업 역할과 합의 증명을 수행한다. 일반인들은 뭐가 변했는지 잘 모르지만 개발자들은 모든 것을 담당하는 일체형 블록체인에서 각 기능만을 수행하는 모듈식 블록체인으로 구조가 완전히 달라졌기에 변화된 구조에 맞춰 이더리움 노드를 운영해야할 필요성을 느끼게 되었다.


출처 : https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming

현재는 각 체인을 지칭하는 용어가 바꼈으므로 아래와 같이 부르도록 한다. (이더리움에서 이더리움 2.0 이란 용어 사용을 중단하길 원함)

Eth1(Ethereum 1.0) → 실행 계층(EL)
Eth2(Ethereum 2.0) → 합의 계층(CL)
실행 계층 + 합의 계층 = 이더리움 

 

결과적으로 지금 상황에 대해 말하자면 Eth1 이후에 Eth2가 나온 것이 아니며, Eth2가 업데이트되면 Eth1이 없어진 것이 아니다. 이더리움은 EL과 CL이 함께 존재한다.


실행 계층(EL, Execution Layer)

이더리움 네트워크에서 제안된 새로운 트랜잭션을 EVM(Ethereum Virtual Machine)에서 처리하고 이더리움 데이터의 최신 상태와 데이터베이스를 유지한다.

 

합의 계층(CL, Consensus Layer)

PoS에서의 합의 계층은 검증자의 ETH를 담보로하는 스테이킹 형태로 지분 투표 및 블록과 데이터 유효성 검증이 이뤄지며, 슬래싱(Slashing)으로 ETH를 잃을 위험 부담을 안고 올바르게 검증 역할을 완수하면 인센티브를 주는 등의 합의 검증을 수행한다.


이더리움 클라이언트(Client)

이더리움 클라이언트가 각각의 노드를 연결하는 역할을 한다고 위에서 언급했다. 직접 노드를 운영하는 것보단 제공되는 이더리움 클라이언트를 사용하는 편이 이더리움 네트워크 친화적이며, 검증된 제품을 사용하기에 신뢰할 수 있고, 보안 측면에서도 안전하다. 하지만 이제 머지 후 이더리움 블록체인은 네트워크가 실행 계층과 합의 계층으로 각각 존재하며, 하나의 온전한 노드를 만들기 위해선 실행 계층과 합의 계층 두개의 네트워크를 같이 실행해야한다. 머지 후의 노드는 실행 계층 클라이언트와 합의 계층 클라이언트가 함께 실행되어야지만 이더리움에 연결할 수 있다. 이 말은 곧 이더리움 클라이언트를 2종류나 다운받아 실행해야하는 것을 뜻한다.

 

실행 계층 클라이언트와 합의 계층 클라이언트 모두 다른 개발사와 다양한 프로그래밍 언어로 제공된다. 클라이언트는 공통적으로 사양을 맞춰서 구축되기에 기능도 비슷하고 통신하는데도 큰 제약이 없어 사용자에게 긍정적인 경험을 줄 수 있다. 하나의 클라이언트가 공격을 받거나 버그가 발생하면 다른 클라이언트도 그 정보를 입수하여 클라이언트의 문제점을 개선할 것이고, 이는 곧 이더리움 네트워크의 보안력이 강화되는데 도움이 될 것이다. 다양한 클라이언트가 존재한다는 것은 이더리움만의 장점이다. 다른 블록체인은 단일 클라이언트만 존재하며 데이터가 유지되는데 무결성에만 의지한다.

 

이더리움은 다양한 클라이언트들이 많지만 현재 사용하고 있는 클라이언트 분포는 하나의 클라이언트에 집중되어 있는 편이다. 이더리움 측은 이더리움 노드 운영자들이 하나의 클라이언트를 고집하는 것보다 다양한 클라이언트를 고루 사용할 수록 이더리움 네트워크 보안이 강화될 수 있다고 설명한다. 그 이유는 다음과 같다.

 

버그

사용하는 사람이 적은 A 클라이언트에 버그가 발생했다. A 클라이언트를 사용하는 노드 운영자들 모두가 네트워크에 다운되었다고 가정하자. 다운된 노드 수 만큼 블록체인 검증에 참여할 수 없으므로 이더리움 네트워크는 그만큼 보안 및 데이터 검증에 손해를 보는 것이다. 하지만 A 클라이언트는 사용하는 사람이 적었기 때문에 크게 치명타를 입지 않았다. 이렇듯 많은 사람들이 집중되어 있는 클라이언트가 존재할 수록 버그의 위험성이 증가한다. 그리하여 이더리움은 다양한 클라이언트를 사용하길 권장한다.

 

공격에 대한 복원력

사용하는 클라이언트가 다양할 수록 공격에 대한 탄력성도 높다. 블록체인은 분산된 노드들이 같은 데이터를 보관하고, 데이터를 노드들끼리 비교했을때 완전히 일치하는 경우에 온전한 데이터로 판단한다. 하지만 여기서 A 클라이언트에서 공격이 발생했다. A 클라이언트는 사용하는 사람 수가 적기 때문에 데이터를 검증하는데 큰 비중을 차지하지 않아 다른 노드들끼리 충분히 온전한 데이터를 가려낼 수 있다. 그렇기에 블록체인이 공격되더라도 데이터가 손상되지 않고 방어할 수 있다. 이 말은 반대로 인기있는 클라이언트가 해킹되면 데이터 손상의 위험이 증가한다는 말이기에 이더리움은 다양한 클라이언트를 사용하길 권장한다.

 

지분 증명의 취약점 발생

지나치게 인기가 높은 클라이언트가 있으면 합의하는데 오히려 방해가 된다(인기가 높다는 기준은 33%의 네트워크 사용 비율로 여긴다). 클라이언트가 버그나 공격에 대해서 취약해지면 대량의 검증자가 다운되어 검증이 무효가 된다. 이는 검증자가 줄어들어 블록 생성이 느려지고, 속도가 느려지면 수수료가 상승할 것이고, 검증자의 블록 제안이 무효가 되기 때문에 슬래싱으로 판단되어 검증자의 ETH가 삭감되는 패널티를 받게 될 것이다. 한마디로 말하면 이더리움 네트워크가 최악의 상황이 된다는 것이다. 그러므로 이더리움은 어느하나의 클라이언트 분포도가 33%를 넘지 않는 것을 권장한다.

 

책임분담

클라이언트가 다수의 사용자를 수용하려면 그만큼 네트워크 비용과 관리를 위한 인건비도 많이 발생할 것이다. 클라이언트를 다양하게 사용할 수록 개발자와 클라이언트 개발 업체의 책임 부담도 줄어든다. 이더리움은 책임에 대한 부담을 줄이는 것이 네트워크 측면에서도 클라이언트 개발사에게도 도움이 된다고 한다.


클라이언트 분포도

출처 : https://clientdiversity.org/

현재 클라이언트 분포 비율은 위 그래프와 같다. 실행 계층은 Geth가 80.5%를 차지하며 합의 계층은 Prysm이 다수를 차지한다.(Prysm은 68%에서 줄어들어 현재 42% 정도라고 한다.) 이더리움 측이 클라이언트를 다양하게 사용하라고 강조하고 있지만 두 계층 클라이언트 모두 33%의 선을 넘어 한쪽 클라이언트에 사용자가 집중되어 있는 모습을 볼 수 있다. 그나마 합의 계층에서는 클라이언트 다양화가 이뤄지고 있는 듯 하다. 이더리움에서는 가장 이상적인 분포 비율은 각 클라이언트들 전부가 33% 이상을 넘지 않는 것이라고 말한다.


출처 : https://docs.teku.consensys.net/en/latest/Concepts/Merge/

이더리움 실행 계층 클라이언트

실행 계층 클라이언트의 종류는 다음과 같다.

  • Geth(Go Ethereum)
  • Nethermind
  • Erigon
  • Hyperledger Besu

실행 계층 클라이언트는 실행 계층에서 실행되어 블록체인의 전체 상태를 유지 및 관리하는 동시에 EVM(Ethereum Virtual Machine)이란 가상 시스템을 사용해서 트랜잭션을 완료한다. 실행 클라이언트는 JSON-RPC API로 요청을 처리한다.

 

이더리움 합의 계층 클라이언트

합의 계층 클라이언트의 종류는 다음과 같다.

  • Prsym
  • Teku
  • Lighthouse
  • Nimbus
  • Lodestar

합의 계층 클라이언트는 비콘 노드 및 검증자 구현 기능이 포함되어 있다(합의 계층 클라이언트는 비콘 노드와 연결되어 있다). 검증자가 블록 및 데이터를 검증하는 일을 합의 계층에서 담당한다. 각 클라이언트마다 제공하는 API가 다르다.


노드를 운영하려면 요구사항들이 많다. 그 중에서 실행 계층과 합의 계층 클라이언트 모두 실행시켜 풀 노드를 다운 받으려면 2TB의 용량이 필요하다고 한다. 사실상 노드가 풀이 아니라 라이트로 다운 받게되면 진정한 블록체인 노드라고 볼 수 없기에 라이트 노드는 추천하지 않는다. 네트워크 비용에서부터 개인이 노드를 운영할 수 있다는 선택지가 사라진다. 그런것도 있지만 스테이킹 비용인 32ETH도 없다.. 여러분들이 만약에 합의 계층의 검증자로 참여하여 보상을 받고 싶다면 직접 노드를 운영하는 말도 안 되는 선택은 하지말고 개발 세팅이 전부 다 된 업체에 여러분들의 ETH를 맡겨 스테이킹하는 쪽을 추천한다.

반응형
댓글
공지사항