캐스퍼(Casper)+고스트(GHOST)=개스퍼(Gasper)
이 기사를 공유합니다
DSRV
DSRV 2022년 8월29일 12:10
출처=DSRV 미디엄
출처=DSRV 미디엄

DSRV 리서치는 더 많은 사람이 웹3를 이해하고 참여하는 데 기여하기 위해, 블록체인과 관련된 지식을 연재합니다.



개스퍼(Gasper): 이더리움2.0의 합의 알고리듬

 

[이더리움2.0 합의 알고리듬 시리즈]

 

0. Safety and Liveness

1. 우리들의 귀여운 친구, 캐스퍼

2. LMD 고스트(Ghost)

3. 개스퍼(Gasper)

 

이더리움2.0 합의 알고리듬 시리즈의 마지막 아티클, 개스퍼(Gasper)로 인사드립니다. 지금까지 길고 긴 여정을 통해 캐스퍼와 LMD GHOST에 대해서 알아보았는데요, 이번 아티클에서는 드디어 그 둘을 합쳐 어떻게 하나의 합의 알고리듬을 만들 수 있는지 자세하게 다루어보도록 하겠습니다.



개스퍼(Gasper) 톺아보기

개스퍼에 대한 이야기는 지금까지 알아보았던 캐스퍼와 LMD GHOST를 합치는 것과 동시에 어떻게 블록을 만들지에 대한 방법 또한 포괄하는 넓은 주제를 다루는 것이기 때문에, 우선 큰 그림을 그려 구조를 잡은 뒤 세부적인 개념들에 대해 더 자세히 알아보고자 합니다.

 

에폭과 슬롯, Epoch & Slot

개스퍼는 여타 블록체인과는 다르게 에폭(epoch)과 슬롯(slot)이라는 시간 단위를 사용합니다. 1슬롯은 12초의 시간을 의미하고, 그런 슬롯이 32개 모이게 되면 1에폭이 됩니다. 슬롯과 에폭에 따라 시간을 표현해 보면, 아래의 그림과 같습니다.

슬롯과 에폭의 개념도. 출처=DSRV 리서치
슬롯과 에폭의 개념도. 출처=DSRV 리서치

마치 책장처럼 보이는데, 이더리움 비콘 체인에서 블록을 생성하는 것은 이렇게 빈 책장에 책을 순서대로 꽂아 넣는 것과 비슷합니다.

한 칸에 책 한 권을 꽂듯이, 슬롯 한 칸에는 블록 하나가 생성됩니다. 그렇게 하나의 에폭에는 총 32개의 블록이 생성됩니다.

이렇게 슬롯과 에폭의 개념을 통해 구조화하는 이유는, 바로 LMD GHOST와 캐스퍼를 하나의 합의 알고리듬으로 녹이고자 하기 때문입니다.

다시 한번 되짚어보자면, 캐스퍼에서는 32블록마다 체크포인트를 설정하고, 그러한 체크포인트와 체크포인트의 관계를 정립 및 체크포인트를 확정시키는 메커니즘이었습니다.

반면, LMD GHOST는 어떤 포크에 다음 블록을 생성해야 할지 결정하는 포크 초이스 룰(Fork Choice Rule)의 일종이었습니다.

이를 바탕으로 슬롯끼리의 관계를 살펴보자면, 다음 슬롯의 블록 제안자는 어떤 포크에 블록을 생성할 것인지 LMD GHOST를 통하여 결정합니다. 즉, 이렇게 슬롯과 슬롯은 LMD GHOST에 의하여 연결된다고 할 수 있습니다.

반면, 그러한 슬롯들이 모인 에폭은 캐스퍼의 규칙에 의해서 블록들을 확정하는 단위로 사용됩니다.

이전에 캐스퍼 아티클에서 언급되었던 '체크포인트'는 바로 여기서 '에폭과 에폭의 경계에 있는 블록'으로 대체되어 사용됩니다. 즉, 에폭과 에폭의 관계는 캐스퍼에 의해 지배됩니다.



위원회, Committees

슬롯과 에폭이 책장이라면, 책장에 책을 꽂는 것이 블록을 생성하는 것과 같다고 했습니다.

그렇다면 누가 책장에 책을 꽂아야 할까요?

이더리움 비콘 체인에서는 매 슬롯마다 딱 한 명을 뽑아 블록을 제안하고 모두의 검증을 받는다기보다, 슬롯마다 하나의 검증인 집단이 힘을 모아 블록을 생성하고 검증합니다. 이때, 이 검증인 집단을 ‘위원회(Committee)’라고 합니다.

각 슬롯 당 검증인 위원회를 할당하는 과정. 출처=DSRV 리서치
각 슬롯 당 검증인 위원회를 할당하는 과정. 출처=DSRV 리서치

하나의 에폭은 32개의 슬롯으로 되어있기 때문에, 위원회도 32개가 필요합니다. 그래서 전체 검증인 집단을 32개의 위원회로 쪼개어 각 검증인들이 하나의 위원회에 속하도록 하고, 이렇게 만들어진 위원회를 각 슬롯마다 하나씩 할당합니다.

위원회는 여러 명의 검증인으로 구성되어 있는데, 그중 무작위로 선정된 한 명이 블록을 제안하면, 블록 제안자를 포함한 위원회의 모든 검증인들이 블록을 검증하는 식입니다.

이렇게 구성되어 슬롯마다 할당된 위원회들이 각각 블록을 생성하여 하나의 에폭 동안 총 32개의 블록을 모두 생성해냈다면, 다음 에폭에서는 다시 전체 검증인들을 뒤섞어 새롭게 32개의 위원회들을 구성합니다. 다시 그들은 다음 에폭의 슬롯마다 할당되어 블록을 제안하고 검증하는 과정을 거치게 됩니다.



증언, Attestations

그렇다면 여기서 블록을 검증한다는 것은 무엇을 의미할까요? 슬롯과 슬롯의 관계는 LMD GHOST가 지배한다는 것을 기억하면 유추해낼 수 있는데, 바로 LMD GHOST 아티클에서 언급했던 attestation(증언 메시지)를 전파하는 것입니다.

위원회에서 한 명의 검증인이 블록을 제안하면, 해당 슬롯의 위원회를 구성하는 검증인 멤버들은 새롭게 제안된 블록을 확인하는 대로 그 블록에 대한 증언 메시지를 전파합니다.

위원회 구성 검증인들의 블록 제안 및 증언 메시지 전파. 사각형 안 숫자는 최신 증언 메시지들의 지지로 인한 점수. 모든 검증인들의 지분량은 동일. 출처=DSRV 리서치
위원회 구성 검증인들의 블록 제안 및 증언 메시지 전파. 사각형 안 숫자는 최신 증언 메시지들의 지지로 인한 점수. 모든 검증인들의 지분량은 동일. 출처=DSRV 리서치

위의 그림은 슬롯별로 할당된 위원회와, 그 구성원에 의한 블록 생성, 그리고 증언 메시지의 전파 과정을 표현합니다. 3번 위원회와 4번 위원회에서는 네트워크 지연, 또는 검증인의 악의적인 행위와 같은 이유로 위원회 전체로부터 증언 메시지를 받는 것에 실패한 모습이 보입니다.

이렇게 블록들에 대한 증언 메시지의 전파는 LMD GHOST에 자주 등장하는 그림이었습니다. 위원회들로부터 받은 증언 메시지는 위의 그림처럼 블록마다 LMD GHOST 점수로 매겨지고, LMD GHOST에서 정의한 규칙에 따라 다음 블록 생성자는 점수에 기반하여 어떤 포크 위에 블록을 생성해야 하는지 결정합니다.

만약 5번 슬롯의 검증인이 새롭게 블록을 추가할 차례이고, 위의 그림과 같은 뷰를 가지고 있다면 LMD GHOST에 따라 2번 슬롯과 3번 슬롯에서 발생한 포크에서 더 높은 점수를 가지고 있는 2번 슬롯의 포크 (아래쪽, 파란색 포크)에 연결하는 블록을 생성하게 될 것입니다.

 

DSRV's Tip; 뷰(view)란 무엇인가요?

뷰의 개념에 대해서는 LMD GHOST 아티클에서 다루어보았습니다. 각각의 검증인들은 네트워크 지연 등의 이유로 전체 네트워크에서 발생하는 모든 메시지들을 파악하지 못할 수 있습니다.

따라서 각 검증인들마다 취합한 정보가 다르기 때문에 현재 네트워크의 상태에 대한 다른 이해를 가질 수 있는데, 이를 각각의 검증인들이 서로 다른 뷰를 가지고 있다고 표현합니다.

 

에폭 경계 블록, Epoch Boundary Blocks

지금까지 개스퍼가 동작하는 큰 그림을 알아보았는데, 다시 한번 정리하자면 아래와 같습니다.

 

1. 슬롯과 에폭으로 구조화된 책장이 있습니다. 슬롯은 하나의 블록을 생성하기 위한 시간적인 범위로 각 슬롯의 길이는 12초이며, 에폭은 32개의 슬롯들로 이루어진 뭉치입니다.

2. 책장에 책을 꽂기 위해서, 즉 슬롯에 블록을 만들기 위해서는 검증인들이 필요한데, 개스퍼에서는 전체 네트워크를 구성하는 노드들을 32개의 검증인 위원회로 분류하며, 각 슬롯마다 하나의 검증인 위원회를 할당합니다.

3. 검증인 위원회는 매 에폭마다 갱신되어 매번 새롭게 구성된 위원회가 슬롯에 할당될 수 있도록 합니다.

4. 슬롯에 할당된 위원회를 구성하는 검증인 중 한 명이 블록을 제안하면, 위원회의 구성원들은 증언 메시지를 통해서 그 블록을 지지합니다.

5. 이 증언 메시지들은 다음 슬롯에 블록을 생성할 때, LMD GHOST를 통하여 어떤 포크 위에 새로운 블록을 생성할지 결정할 때 사용됩니다. 즉, 슬롯 간의 관계는 LMD GHOST가 결정합니다.

6. 반면, 에폭과 에폭 간의 경계는 캐스퍼 '체크포인트'로써 역할합니다. 즉, 에폭과 에폭의 관계는 캐스퍼가 결정합니다.

 

여기에서 6번, '에폭과 에폭 간의 경계'에 대하여 아직 모호한 부분이 남아있습니다. 만약 이번 에폭에서 발생한 포크가 이전 에폭에서 시작되었다면 이번 에폭에도 여전히 존재하는 각 포크를 뜻하는 두 개의 체크포인트 중 무엇을 에폭 경계 블록으로 선택해야 할지 아직 정해지지 않았기 때문입니다.

무슨 말인지 아직 이해되지 않지만, 이 부분을 조금 더 명확히 정의하기 위해 에폭 경계 블록(Epoch Boundary Block)이란 무엇인지부터 차차 알아보겠습니다.

에폭 경계 블록. 출처=DSRV 리서치
에폭 경계 블록. 출처=DSRV 리서치

캐스퍼에 따라 블록을 확정할 때는 '체크포인트'를 기준으로 하는데, 개스퍼에서는 에폭과 에폭 사이의 경계, 더 정확히 말하면 각 에폭의 가장 첫 번째 슬롯의 블록을 체크포인트로 설정합니다.

이 블록들은 에폭의 경계에 있다고 해서 '에폭 경계 블록'이라고 합니다. 위의 그림에서, 1번 에폭의 가장 첫 번째 블록인 32번 슬롯의 블록, 그리고 2번 에폭의 가장 첫 번째 블록인 64번 슬롯의 블록이 바로 에폭 경계 블록입니다.

블록이 순조롭게 찍힐 때는 아무런 문제가 없지만, 에폭 경계 블록은 슬롯 당 단 하나이기 때문에 에폭 경계 블록의 개념만을 사용하여 블록을 확정할 때는 포크가 발생했음에도 에폭 경계 블록에 반영되지 않는 문제가 생길 수 있습니다. 위에서 언급했듯, 아래와 같이 n 번째 에폭에서 발생한 포크가 n-1 번째 에폭에서 시작되는 경우입니다.

포크 발생과 에폭 경계 쌍을 사용한 보정. 출처=비탈릭 부테린 외. 고스트와 캐스퍼 결합하기(Combining GHOST and Casper). 2020. p.11. DSRV 리서치 재구성본.
포크 발생과 에폭 경계 쌍을 사용한 보정. 출처=비탈릭 부테린 외. 고스트와 캐스퍼 결합하기(Combining GHOST and Casper). 2020. p.11. DSRV 리서치 재구성본.

문제가 되는 부분은 바로 34번째 슬롯입니다. 34번째 슬롯의 블록은 0번 에폭에 속해있는 31번째 슬롯의 블록에 연결되는 블록입니다.

그러나 에폭 경계 블록인 32번째 슬롯의 블록은 다른 포크에 있기 때문에, 34번 블록이 새롭게 만들어낸 포크의 존재를 반영하지 못합니다. 이렇게 에폭 경계 블록만으로는 발생한 포크를 표현하지 못하는 한계가 발생할 수 있습니다.

따라서 실제 개스퍼에서는 에폭 경계 블록이 아닌, 에폭 경계 '쌍'(Epoch Boundary Pair)을 사용합니다. 에폭 경계 쌍은 에폭 경계 블록에 '몇 번째 에폭에 포함된 블록인가'에 대한 정보를 더한 쌍으로, (블록, 에폭)으로 표현됩니다.

위의 그림과 같은 상황에서는 에폭 경계 쌍이 반드시 필요합니다. 34번 블록으로 인한 포크가 발생했다는 것을 에폭 경계에 표현하기 위해 31번 블록을 32번 슬롯으로 '당겨와서(pull up)' 가상의 에폭 경계 블록을 만들어야 하기 때문입니다.

이때 34번 블록에 의한 포크를 표현하는 에폭 경계 쌍은 '1번 에폭으로 당겨온 31번 블록'이라는 의미로 (31번 블록, 1)이 됩니다. 이러한 블록은 실제로는 존재하지 않지만, 에폭 경계 쌍으로 표현하여 이후 캐스퍼로 체크포인트를 확정할 때 사용됩니다.



증언 메시지, Attestation Message

지금까지는 증언 메시지가 LMD GHOST에 의한 포크 선택에 도움을 준다는 것만 살펴보고 캐스퍼에서는 어떻게 사용되는지 살펴보지 않았는데, 증언 메시지가 어떻게 생겼는지를 살펴보면 어떻게 에폭 경계 쌍에 투표하는지 알 수 있습니다. 증언 메시지는 아래와 같은 정보들을 담고 있습니다.

class AttestationData(Container):

    slot: Slot 

    index: CommitteeIndex

    # LMD GHOST vote 

    beacon_block_root: Root 

    # FFG vote 

    source: Checkpoint 

    target: Checkpoint

slot은 증언 메시지를 전파할 당시 슬롯의 번호, index는 자신이 속해있는 위원회의 번호를 말합니다. 여기에서 중요한 것은 바로 LMD GHOST 투표와 관련된 beacon_block_root와 캐스퍼 투표와 관련된 source, target입니다.

증언 메시지를 통한 고스트 투표(GHOST vote)와 캐스퍼 FFG(Friendly Finality Gadget) 투표 진행. 출처=DSRV 리서치
증언 메시지를 통한 고스트 투표(GHOST vote)와 캐스퍼 FFG(Friendly Finality Gadget) 투표 진행. 출처=DSRV 리서치

슬롯이 시작된 이후 절반, 즉 6초가 지나면, 블록 제안자를 제외하고 위원회를 구성하고 있는 검증인들은 beacon_block_root에 투표할 블록에 대한 정보를 담아 특정 블록에 대한 지지를 표현합니다.

이 정보가 지금까지 LMD GHOST를 사용하여 포크를 결정할 때 사용된다고 했던 증언 메시지인데, 이를 'GHOST 투표'라고 합니다. LMD GHOST 아티클에서도 증언 메시지에 의한 포크 선택 메커니즘을 단순화해서 알아보았었는데, 위의 코드가 그러한 증언 메시지의 모습입니다.

증언 메시지는 동시에, 캐스퍼에서 체크포인트와 체크포인트를 연결하듯, 에폭 경계 쌍과 에폭 경계 쌍을 압도적 다수의 링크(Supermajority Link)로 연결하는 '캐스퍼 FFG 투표'에 대한 정보 또한 포함하고 있습니다.

source에는 검증인의 뷰에서 가장 최근에 타당하다고 판단된(justified) 에폭 경계 쌍이 들어가고, target에는 검증인의 뷰에서 가장 최신의 에폭 경계 쌍이 들어가게 됩니다.



캐스퍼의 타당화 메커니즘, Justification

타당화된(justified) 체크포인트로부터 새로운 체크포인트로 전체 검증인 지분의 2/3 이상만큼 동의한 압도적인 다수의 링크(Supermajority Link)를 인정받으면 새롭게 타당화된 체크포인트가 생긴다는 것을 캐스퍼 아티클에서 다룬 적 있습니다.

이 내용을 그대로 개스퍼에 가져와 적용하면 아래와 같은 그림이 완성됩니다.

검증인들의 캐스퍼 FFG 투표와 압도적인 다수의 링크(Supermajority Link) 생성 및 타당화 (Justification). 출처=DSRV 리서치
검증인들의 캐스퍼 FFG 투표와 압도적인 다수의 링크(Supermajority Link) 생성 및 타당화 (Justification). 출처=DSRV 리서치

우선 j 번째 에폭 경계 쌍으로부터 j+1 번째 에폭 경계 쌍으로의 연결이 이미 타당화되었다고 가정해 보겠습니다 (1번 동그라미). j+2 번째 에폭에서 블록들을 생성하면서 각 위원회의 검증인들은 증언 메시지를 통해 캐스퍼 FFG 투표를 진행합니다 (2번 동그라미).

각각의 투표는 타당화된 j+1 번째 에폭 경계 쌍으로부터 새롭게 생성된 j+2 번째 에폭 경계 쌍으로의 압도적인 다수의 링크(Supermajority Link)를 지지하는 투표입니다.

이러한 투표가 쌓여 전체 검증인 지분의 2/3 이상이 된다면 압도적인 다수의 링크(Supermajority Link)가 생성되고, 그 링크는 이미 타당화된 j+1 번째의 에폭 경계 쌍으로부터 시작된 링크이므로, 결국 타당화됩니다(3번 동그라미).

캐스퍼 아티클에서 다루었듯이, 타당화된 체크포인트에서 바로 다음 자식 체크포인트와도 압도적인 다수의 링크(Supermajority Link)로 연결된다면, 비로소 그 블록을 우리는 ‘확정(finalize)’되었다고 할 수 있습니다.

위의 그림과 같은 상황에서도 j+1 번째 에폭 경계 쌍은 j 번째 에폭 경계 쌍과 타당화된 연결을 인정받고, 또 바로 다음 에폭 경계 쌍인 j+2 번째 에폭 경계 쌍과도 압도적인 다수의 링크(Supermajority Link)로 인정받았으므로, 최종적으로 확정(finalize)됩니다(4번 동그라미).

바로 이 부분이 개스퍼와 캐스퍼가 완전하게 합쳐지는 부분인데, 원래 작업증명 기반 이더리움의 캐스퍼에서 달라진 부분이 있습니다.

원래는 블록 생성 메커니즘으로 작업증명과 가장 긴 체인 규칙(Longest-Chain Rule)이 적용되었고 캐스퍼의 압도적인 다수의 링크(Supermajority Link)를 생성하기 위한 투표가 이와는 독립적으로 이루어졌습니다.

그러나 개스퍼에 적용된 캐스퍼에서는 블록 생성 메커니즘에 LMD GHOST가 적용되고, 이때 사용하는 증언 메시지에 캐스퍼의 압도적인 다수의 링크(Supermajority Link) 생성을 위한 투표를 함께 담아 한 번에 유기적으로 처리합니다.



HLMD GHOST

지금까지는 LMD GHOST를 통해 포크를 선택하고 그 위에 새로운 블록을 생성한다고 했지만, 실제로 이더리움 비콘 체인에서는 LMD GHOST를 약간 더 최적화시킨 버전인 하이브리드 LMD GHOST (HLMD GHOST)를 사용합니다.

LMD GHOST는 제네시스 블록부터 블록마다 어떤 포크가 정격 체인(Canonical Chain)인지 계산하기 때문에, 블록체인이 점점 길어질수록 계산이 오래 걸린다는 단점이 있습니다.

반면, HLMD GHOST는 제네시스 블록이 아닌, 가장 최근 타당화된 블록에서 시작해서 정격 체인(Canonical Chain)을 결정하기 때문에 블록체인이 길어져도 일정 수준 이상 연산이 복잡해지지 않습니다.

HLMD GHOST에서 중요한 부분은, 각 검증인마다 각자의 뷰에 따라 '가장 최근 타당화된 블록'을 다르게 생각할 수 있다는 문제를 해결하는 것입니다. 아래의 그림과 같은 경우에는 하나의 에폭 안에서 각 검증인들이 생각하는 '가장 최근 타당화된 블록'이 변경될 수 있습니다.

에폭 내에서 검증인들의 뷰에 따라 가장 최근 타당화된 블록(Last Justified Epoch Boundary Block)이 변경될 수 있음. 출처=DSRV 리서치
에폭 내에서 검증인들의 뷰에 따라 가장 최근 타당화된 블록(Last Justified Epoch Boundary Block)이 변경될 수 있음. 출처=DSRV 리서치

에폭1이 시작되는 32번 슬롯의 블록에서는 증언 메시지가 충분히 쌓이지 않았기 때문에 새로운 에폭 경계 블록, 즉 32번 슬롯의 블록에 대한 증언 메시지가 전체 지분의 2/3 이상이 될 수 없습니다.

따라서 32번 슬롯에 블록을 생성할 당시 '가장 최근 타당화된 블록'은 슬롯 0번의 제네시스 블록이 됩니다. 그러나 이후 증언 메시지가 쌓여감에 따라 63번 슬롯에서는 에폭 경계 블록인 32번 슬롯의 블록에 대한 증언 메시지가 전체 지분의 2/3 이상이 될 수 있습니다.

이때는 '가장 최근 타당화된 블록'이 제네시스 블록이 아니라 에폭1의 에폭 경계 블록, 즉 32번 블록이 될 것입니다.

이처럼 에폭의 초반부와 후반부에서 바라보는 '가장 최근 타당화된 블록'이 달라질 수 있는데, HLMD GHOST에서는 이러한 문제를 해결하기 위해 '같은 에폭에 있는 증언 메시지들의 캐스퍼 FFG 투표'를 제외하고 생각합니다.

즉, 에폭의 초반부와 후반부 상태 간의 차이를 만들어내는 모든 증언 메시지들을 투표 상태에서 제외함으로써 각 검증인들의 뷰를 같아지도록 하는 것입니다. 따라서 위의 그림에서는 32번 슬롯의 블록과 63번 슬롯의 블록 모두 '가장 최근 타당화된 블록'이 에폭1의 에폭 경계 블록이 아닌, 제네시스 블록이 됩니다.

HLMD GHOST는 이렇게 가장 최근 타당화된 블록에 대한 상태를 에폭이 시작할 당시로 '얼려서(freeze)' 가장 최근 타당화된 블록을 정하고, 그로부터 시작해서 기존의 LMD GHOST처럼 계산합니다.



보상과 페널티

마지막으로 지금까지 설명된 방식대로 검증인들이 행동하도록 장려하는 리워드와 페널티 설계에 대한 내용입니다. 이더리움 비콘 체인에서 검증인으로 참여하기 위해서는 지금까지 설명된 방식으로 동작하는 프로그램을 실행시키면 되는데, 그러한 프로그램의 코드를 임의적으로 수정하여 부당한 이익을 얻고자 하는 악의적인 검증인도 있을 수 있습니다.

이렇게 의도한 바와는 다르게 악의적으로 행동하는 검증인을 '비잔틴 노드'라고 합니다. 이러한 비잔틴 노드가 네트워크를 일정 수준 이상 장악한다면, 전체 이더리움 비콘 체인 또한 비정상적으로 작동할 수 있기 때문에, 비잔틴 노드의 악의적인 행위에 대한 페널티와, 정상적인 노드의 행위에 대한 보상이 적절히 이루어져야 합니다.

개스퍼에서 검증인에게 주어지는 보상은 크게 두 가지로 나누어집니다. 해당 슬롯에 정당한 블록을 제안하는 검증인에게 주어지는 '블록 제안자 보상 (proposer reward)'과 제안된 블록에 대해 유효한 증언 메시지를 전파하는 검증인에게 주어지는 '증언자 보상 (attester reward)'이 있습니다.



1. 블록 제안자 보상

특정 슬롯마다 블록을 제안하는 검증인이 있다는 것을 “위원회” 단락에서 알아보았습니다. 블록을 제안하는 검증인은 자신이 제안한 블록에 대한 증언 메시지들을 수집하는데, 이때 유효한 증언 메시지를 수집한 것에 대하여 보상이 주어집니다. 이는 블록 제안자로 하여금 많은 증언 메시지를 통해 지지받을만한 유효한 블록을 생성하도록 장려하기 위함입니다.

 

2. 증언자 보상

블록체인이 점차 전개되면서 특정 블록들이 타당화되고 더 나아가 확정됩니다. 증언자들은 이후 자신이 증언한 블록이 이렇게 타당화되고 확정될 경우에 증언자 보상을 받을 수 있습니다. 이는 증언자로 하여금 이후 정상적으로 확정될 블록에 대한 증언 메시지를 전파하도록 장려함으로써 악의적으로 생성된 블록에 대한 증언 메시지가 쌓이는 것을 방지하기 위함입니다.



개스퍼에는 보상과 더불어 잘못된 행위에 대한 페널티 또한 설계되어 있습니다. 캐스퍼 아티클에서 살펴보았던 페널티 부과 규칙은 아래의 그림과 같은데, 개스퍼의 페널티 규칙 또한 동일합니다.

캐스퍼 프로토콜의 두 가지 투표 금지 규칙. 출처=DSRV 리서치
캐스퍼 프로토콜의 두 가지 투표 금지 규칙. 출처=DSRV 리서치



만, 위의 그림을 개스퍼에서 처음 소개된 에폭, 에폭 경계 블록, 증언 메시지, 그리고 타당화에 대한 내용과 합쳐서 표현하면 아래와 같은 규칙으로 정형화할 수 있습니다.

 

1. 모든 검증인은 같은 블록 높이의 에폭 경계 블록에 대해 여러 개의 증언 메시지를 전파할 수 없습니다.

2. 위의 '증언 메시지' 단락에서 알아보았듯이, 증언 메시지에는 '가장 최근 타당화된 에폭 경계 쌍'에서 '가장 최근의 에폭 경계 쌍'으로의 연결(Supermajority Link)에 투표하는 '캐스퍼 투표'에 대한 내용이 포함됩니다. 서로 다른 증언 메시지를 전파하는데, 하나의 증언 메시지가 투표하는 범위 내에 다른 증언 메시지가 투표하는 범위가 포함되어서는 안 됩니다.

 

캐스퍼 아티클에서 설명되었듯이, 만약 규칙 1 또는 규칙 2를 어기는 투표를 한다면 위의 그림처럼 양쪽으로 갈라진 포크 모두에 한 표씩을 던질 수 있습니다. 모든 검증인들이 계속해서 양쪽 포크에 모두 투표한다면 두 포크 중 하나를 영원히 결정할 수 없게 됩니다.

그래서 규칙 1과 2를 어기는 투표를 할 경우, 검증인에게 페널티를 부과함으로써 둘 중 하나의 포크를 선택하도록 강제합니다. 이는 'Nothing-at-Stake' 문제에 대한 해결책으로서의 의미도 있습니다. (Nothing-at-Stake 문제에 대해서는 캐스퍼 아티클에 보다 자세히 설명되어 있습니다.)



마무리

지금까지 본문에서는 이더리움2.0 비콘 체인의 합의 알고리듬인 개스퍼에 대하여 알아보았습니다. 첫 번째 아티클인 'Safety and Liveness'부터 캐스퍼, LMD GHOST, 그리고 개스퍼까지 하나의 흐름으로 정리해 보았는데, 매우 방대한 양의 자료를 상세하게 들여다본 만큼 단번에 이해하기는 어려운 주제였던 것 같습니다.

그럼에도 여기까지 따라 읽어주신 독자분들께 감사드리며, 이번 시리즈를 통해서 이더리움이 어떻게 변화해가는지, 그 기반에는 어떠한 흐름의 연구들이 있었는지 알아볼 수 있는 기회가 되었으면 좋겠다는 바람입니다.

시계는 점점 더 지분증명 기반의 이더리움을 향해 나아가고 있는데요, 정말 많은 시간이 지나면 누구나 당연하게 '이더리움은 지분증명이지!'라고 생각하는 때가 올지도 모르겠습니다. 그런 의미에서 이더리움이 크게 변모하는 지금을 살고 있는 우리 모두는 역사적인 순간 한가운데 있을지도 모르겠습니다. (“나 때는 말이야.. 이더리움이 작업증명이었단다..껄껄”)

커다란 이벤트는 또 다른 크고 작은 이벤트들의 시작이 되기도 합니다.

무거운 기술적인 이야기에서 살짝 벗어나서 시선을 돌려보면, 이더리움이 지분증명으로 바뀌어가는 과정에서 '스테이킹된 이더리움'을 표현하는 stETH(리도 스테이크드 이더리움)와 ETH(이더리움)의 가격이 평소보다 크게 벌어지는 사건이 발생하기도 했고, (자세한 내용은 DSRV 리서치의 stETH 디페그 리포트에서 다루어보았습니다.) 이로 인해 가상자산 시장이 불안정해지는 모습을 보이기도 했습니다.

채굴 산업에서도 큰 영향이 있었는데요, 작업증명을 사용하는 대표적인 블록체인인 비트코인과 이더리움 중에서 하나의 거대한 축인 이더리움이 채굴 산업에서 이탈하면서 여전히 작업증명을 사용하는 이더리움 클래식이 채굴 산업에서 크게 부각되는 모습을 볼 수도 있었습니다.

이더리움과 관련된 내러티브를 따라가 보았다는 것은 이렇게 바뀌어가는 가상자산 산업을 이해하고 새로운 기회를 포착함에 있어서 매우 중요한 무기가 될 것입니다. 그 여정에 있어서 저희 DSRV 리서치와 함께해 주신 독자 여러분께 다시 한번 감사 인사를 드립니다.

Key Takeaways

1. 이더리움2.0 비콘 체인에서 블록을 생성한다는 것은 마치 책장에 책을 꽂는 것과 같습니다.

2. 하나의 슬롯은 12초 길이이고, 그러한 슬롯이 32개 모이면 하나의 에폭이 됩니다.

3. 하나의 슬롯 당 위원회가 하나씩 배정되는데, 위원회에서는 한 명의 검증인이 블록을 생성하고 위원회의 구성원들이 블록에 대한 증언 메시지를 전파합니다.

4. 에폭과 에폭의 경계에 있는 블록을 '에폭 경계 블록 (Epoch Boundary Block)'이라 하는데, 이들은 캐스퍼에서의 체크포인트와 같은 역할을 합니다.

5. 하나의 증언 메시지에는 1) LMD GHOST를 통해 올바른 포크를 선정하는 데 사용되는 'GHOST 투표'와 2) 에폭 경계 블록들을 연결하고 확정하는 데 사용되는 '캐스퍼 투표' 두 가지 종류의 투표가 포함됩니다.

6. 증언 메시지의 '캐스퍼 투표'를 통해 에폭 경계 블록들 간의 연결이 '타당화(justify)'되고 '확정(finalize)'될 수 있습니다.

7. HLMD GHOST란, LMD GHOST의 최적화된 버전으로, 제네시스 블록에서부터 시작하여 올바른 포크를 선정하는 것이 아니라, 가장 최근에 타당화된 블록에서 시작하여 포크를 선정합니다.

8. 검증인들이 올바르게 행위하도록 장려하기 위하여 블록 제안자 보상과 증언자 보상이 주어지고, 캐스퍼와 마찬가지로 투표 규칙을 어길 시, 지분을 삭감시키는 페널티가 주어집니다.

저자: 윤석중 DSRV 웹3 연구원

유의사항: 이 글은 정보 전달을 위한 목적으로 작성되었으며, 특정 프로젝트에 대한 투자 권고, 법률적 자문 등 목적으로 하지 않습니다. 모든 투자의 책임은 개인에게 있으며, 이로 발생된 결과에 대해 어떤 부분에서도 DSRV는 책임을 지지 않습니다. 본문이 포괄하는 내용들은 특정 자산에 대한 투자를 추천하는 것이 아니며, 언제나 본문의 내용만을 통한 의사결정은 지양하시길 바랍니다. 추가적으로 이 글이 쓰인 시점에서 DSRV는 이더리움 비콘 체인의 검증인(벨리데이터)으로 참여하고 있음을 알려드립니다.

DSRV는 좋은 콘텐츠의 힘을 믿고, 기술의 혁신이 우리의 삶과 사회를 더 나은 방향으로 이끈다 확신합니다. ​

블록체인과 웹3를 보다 많은 사람들이 접하고 더 나은 경험을 할 수 있도록 우리의 생각을 콘텐츠로 선보입니다.

사용자를 위한 실용적인 가이드, 웹3를 위한 핵심기술 스택에 대한 소개, 그리고 개발자들을 위한 전문 아티클까지. DSRV와 함께 다음 세대의 인터넷을 위한 여정을 시작하세요.

더 자세한 내용은 '코인데스크 프리미엄'에서 읽을 수 있습니다

 

제보, 보도자료는 contact@coindeskkorea.com



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.