[이더리움] 비콘체인(Beacon Chain)

드림보이즈·2023년 9월 14일
0

학습계기

면접에서 이더리움의 비콘체인이 뭔지 질문을 받았다.
나는 학습을 한 대로,
'POS가 적용된 블록체인' 이라 답변했는데,
면접관께서 추가적인 설명을 원하셨다. 어떤 부분에 대한 설명을 더 해야 할지 몰라 당황했는데,
다른 면접관께서 유도를 해주셔서 답변을 어느정도 할 수 있었다.
오늘은 그에 대한 복습 겸 정리이다.

비콘체인이란

이더리움의 비콘체인은

POS가 적용된 블록체인

이게 다다.
기존의 POW를 적용한 블록체인이 아닌
이더리움 2.0을 위한 POS가 적용된 블록체인이다.

비콘체인은 이미 20년 12월출시가 되었다.
그림 처럼 POW로 블럭을 생성하는 메인 체인과 평행하게,
비콘체인은 POS로 블럭을 생성중이였다.

그러다 The Merge 업그레이드로 그림처럼 POW가 아닌 POS로 메인넷의 TX처리를 시작하면서 비콘체인이 블록 전파 및 합의 로직을 담당하게 되었다.

왜 POW에서 POS로 옮기는가?


기존 POW는 보안성과 탈중앙화는 높지만, 확장성이 낮다.
사용자가 늘수록 확장성은 더 느려질 것이다.

이더리움 2.0의 궁극적 목표는 기존의 탈중앙화, 보안성을 유지하면서 확장성을 높이는,
트릴레마를 해결하려는 노력일 것이다.

Liveness VS Safety

이상적인 합의 알고리즘은

  • Liveness : 정상노드라면 값을 선택한다 (멈추지 않는다)
  • Safety : 정상노드라면 항상 올바른 값을 선택한다 (TX 취소 안된다)

을 둘다 만족해야 하는데, 그것은 불가능 하다.

POW 비트코인과 이더리움은 Liveness에 가중치를 두었고,
그래서 블록의 분기를 허용한다.
시간이 지나며 궁극적으로는 Finality(완결성)이 보장되지만,
그 전까지 언제든지 블록의 분기가 발생해 취소될 가능성이 있다.

따라서 비콘체인은 Liveness와 Safety의 중간지점을 구현한 POS를 도입한 것이다.

어떻게 POS를 구현했는가? : Gasper

(하여간 이름은 ㅈㄴ게 그럴싸해요)

그렇다면 비콘체인은 POS를 어떻게 구현했는가?

POS : Gasper = LMD GHOST + Casper FFG 프로토콜

LMD Ghost 프로토콜과 Casper FFG 프로토콜 2가지를 통해 구현했다.

LMD GHOST (Latest Message Driven GHOST) = 분기선택규칙

분기가 발생했을 때 어떤 체인을 선택해야 하는가? 에 대한 규칙이다. 분기선택규칙이다.
(ex. 비트코인은 더 에너지가 많이 들어간 체인을 선택)

여기서 GHOST는 당신이 생각한 그게 아니라
Greedy Heaviest Observed SubTree의 약자다.

종합하자면

'최신 메시지를 받은 상태에서 가장 무거운 서브트리를 선택하라'

정말 개념이 많다. 그래서 약자를 쓴 거구나 ㅋㅋ

Message

블록체인에서 메시지는 스마트 컨트랙트 호출 등을 포함하지만,
여기서는 노드와 노드 사이의 상호 작용을 위한 것이라고 생각하자.

메시지로 블록 생성을 하고 다른 노드에게 전파할 수도 있고,
분기가 발생했을 때 "나는 얘를 선택함"을 다른 노드에게 전파할 수도 있는 것이다.

Latest는 또 뭔가? 최신의,
비동기 네트워크에서는 각 노드가 전달받은 메시지들이 다를 수 있다.
(애초에 비동기니까 분기가 발생하지)

즉 Latest Message Driven은

현재 내가 수용한 최신 메시지 상태를 기준으로 삼아~

라고 보면 되겠다.

이게 내 노드의 최신 메시지 상태다.
다른 애들이 투표한 결과를 볼 수 있다.

맨 오른쪽에 리프 노드가 아닌데 그 위에 투표한 놈은 뭘까?
걔한테는 저게 리프 노드여서 저기에 투표한 것이다.

1에 투표한 놈들은 뭘까?
걔들한테는 맨 왼쪽의 3이 3이 아닐 것이다. 나보다 일찍 받아서 1이었을 수도,
아예 안 보일수도 있다.

모든 것은 뭐 때문이다? 비동기적 네트워크 때문이다.

자 그래서 나는 어디에 투표해야 할까?
당연히 3이지.
리프 노드를 선택하는 것 자체가 메인 블록체인을 선택한다는 것과 같은 말이다.
(메인 체인 = 캐토니컬 체인 이라 부른단다.)

나도 이렇게 LMD GHOST 투표를 마쳤으니, 다른 노드에게 메시지를 전파해야겠지?
이러면 끝이다.

Casper FFG : 완결성 보안

Safety를 보완하기 위한 투표다.
비트코인에는 Finality가 있는가? 시간이 졸라 지나면 99.999% 확률적으로 가능하지만, 완결이 되는 것은 아니다.

완결이 되지 않는다는 것은 트랜잭션이 취소될 수 있다는 뜻이고,
코인으로의 거래는 문제가 없는데,
리얼 월드에서 물건을 이미 팔았는데 내가 받은 돈이 다시 쟤한테 가,
이런 개같은 상황이 발생할 수 있는 것 아니겠는가?

그래서 문제가 없다면 아예 블록을 완결짓게 하는 것이 Casper 투표다.

캐스퍼 투표는 체크포인트 간선에 대한 투표다.

모든 블록을 하나 하나 완결 짓는게 아니고,

체크 포인트 블록을 일정 간격으로 두어서, 체크포인트들 사이의 간선에 대해 투표를 한다.

예를 들어 간격이 100이야. 그럼 100번째 블록을 받는 순간, 0번 블록과 100번 블록을 잇는
간선에 투표를 한다.
2/3이 넘으면, 100번 블록은 Justify(정당화)된다.
아직 완결이 아냐, 한번 하고 완결되겠냐?

추후에 200번째 블록이 나오면 100번과 200을 잇는 간선에 투표를 하겠찌?
여기서도 2/3 넘으면 100번은 Finalized(완결)된다.

비콘체인 시뮬레이션

1. 보증금 예치(Staking)
나도 블록을 생성하거나 검증하고 돈을 벌고 싶다. (Validator)
널 뭘 믿고? 보증금 걸어.

2. 대기 기간 (Waiting Period)
아무것도 하지 말고 기다려.

3. 에포크 진입 (Epoch)
에포크는 이더리움의 시간 단위이다.
다음 32 블록을 생성할 놈들을 슬롯에 집어넣는다. (Commitee)
1개 슬롯은 1개의 블록을 생성한다.

4. 검증 및 블록 생성

RANDAO로 슬롯마다 블록 생성할 놈 뽑는다.
6초 안에 블록 생성해서 검증자들에게 전파해.
검증하고 아까 투표들 하고.
(경험적으로 12초면 블록생성 + 검증까지 마쳐서 대략 이렇다고 한다.)

Q. 내가 0번 슬롯에서 블록생성했는데, 난 끝나면 뭐함? 31번 끝날때 까지 기다림?
A. ㅇㅇ

Q. 블록 생성자나 검증자가 이상한 짓 하면 어떻게 함?
A. 노드끼리 신고해서 처벌할 수 있음. 이를 Slashing이라 함. 보증금 짤리는 거지 뭐, 신고자는 보상받고

5. 보상 수령

이렇게 돌아가는 구조라고 생각하면 된다.

여담 : 상하이/카펠라 하드포크

내가 스테이킹한 이더는? 못 찾음?
못 찾았음. 만약 검증자들이 돈 다 빼봐. 블록 생성이 되겠냐?
그래서 아주 예민한 작업이 필요했고,
상하이 하드포크와 카펠라 업그레이드로 스테이킹한 자금을 출금할 수 있다고 한다.

여담 2 : 샤딩 ? 레이어 2 롤업?

이더리움을 공부하며 샤딩에 대해 들어봣을 것이다.
아직 적용안된거고, 걍 이론이다.
샤딩보단 레이어 2 솔루션 중 롤업이 가능성 있어 보인다.
비탈릭이 직접 롤업에 대해 긍정적인 멘트를 줬다고 까지 한다.

profile
시리즈 클릭하셔서 카테고리 별로 편하게 보세용

0개의 댓글

관련 채용 정보