[Consensus] 이더리움 캐스퍼 FFG // Ethereum's Casper FFG(2016~2017) v1.5

캐스퍼 FFG // Ethereum's Casper in 2016~2017


□ 캐스퍼 "베팅에 의한 합의" 포기

  ㅇ 새로운 PoS로 재정비
    - 비탈릭은 고민끝에 캐스퍼 '베팅에 의한 합의'버전을 위험한 접근방식이라고 결론냈다. 당시 PoS에 대한 많은 문제점들에 대하여 나름대로 대응책을 마련했지만, 예측가능한 모든 변수와 그에 따른 특징들에 대한 설명이 충분치 않다고 판단하였다. 특히, 이 방식은 흥미롭지만 매우 복잡하고 불확실성이 높았다.
    - 전체적으로 단점이 보이면 보일수록 그에 따른 대비책이 많아져, 결국 잘 실행하기 위해 손볼수록 오히려 실행하기 힘든 상황에 봉착하게 되어버렸다.
    - 이후 비탈릭은 PBFT에 대해 연구하였고, 메세지 조합이 모순되거나 보증금이 삭감되는 경우를 고민하였다.

<https://www.bitrates.com/news>


  캐스퍼 "Friendly Finality Gadget(FFG)" 등장

 <비탈릭의 Casper FFG 개발>
  ㅇ 비탈릭만의 삭감조건을 만들기까지의 과정
    - 비탈릭이 연구한 PBFT 관련 논문에는, 4개의 검증자 예치금 삭감 조건들이 나와있다.
      1) Commit 요구조건 : 검증자가 참여(commit) 메세지를 보냈고, 그에 따른 준비(prepare)메세지를 서명하여 전송하였는데, 2/3이상 검증자들이 이를 전송하지 않는 경우
      2) Prepare 요구조건 : 검증자가 과거의 특정시점을 가리키는 준비(prepare)메세지를 서명하여 전송했는데, 2/3이상 검증자들이 그 특정시점이 아닌 다른시점을 가리키는 준비(prepare)메세지를 전송할 경우
      3) Commit와 Prepare간 일관성 : 검증자가 한 시점에 참여(commit) 메세지를 보냈는데, 다른 시점의 준비(prepare)메세지를 서명하여 전송할 경우.
      4) 중복 Prepare 불가 : 검증자가 한 시점에 다른 2개의 준비(prepare)메세지를 서명하여 전송할 경우

    - 위의 4개의 삭감조건들은 다음과 같은 2개의 조건을 충족해야 한다.
      1) 책임있는 보안성(accountable safety) : 만약 2개의 충돌하는 해시가 완결된다면,  적어도 1/3이상의 검증자들이 삭감 조건을 어긴것이다.
      2) 실질적 생존성(plausible liveness): 2/3 이상의 검증자들이 정직하다면 삭감조건을 어기지 않고 블록을 확정시킬수 있으며, 이때 본인의 결정을 번복하거나 알고리듬이 멈추는 상황은 없다.

  ㅇ 비탈릭만의 삭감조건 확립 : 고민끝에 최소 삭감조건을 2개로 줄이다
    - FFG에서는 PoW를 통해 블록이 생성되고 1에포크(100블록)마다 체크포인트*를 두면서 투표를 진행한다.
     * 체크포인트(CheckPoing) : 장거리 공격 등 과거의 특정 블록으로부터 포크체인을 형성하는 반 확정성 행위를 막기위한 장치

    - 검증된 체크포인트의 해쉬를 s(source), s의 자손격인 체크포인트 내 해시를 t(target),  s의 체크포인트 높이를 h(s), t의 체크포인트 높이를 h(t), 검증인 v의 개인키로부터 서명(s, t, h(s), h(t))되는 값을 S라 할때, 2가지의 최소 삭감조건은,
      1) h(t1) = h(t2) : 검증인이 같은 높이의 체크포인트 해시에 동시에 투표할 경우
      2) h(s1) < h(s2) < h(t2) < h(t1) :  검증인이 투표한 하나의 체크포인트 범위(h(s1)~h(t1))와 또다른 체크포인트 범위(h(s2)~h(t2))가 겹치는 경우.
    - 이를 통해 모든 블록체인에서 확정성이 발생할수 있기에 FFG(Friendly Finality Gadget)라고 이름지었다.
< Casper FFG에서의 블록생성과 체크포인팅 과정 >


 ㅇ 체크포인트가 확정되는 과정(=캐스퍼FFG에서 블록체인이 올바르게 이어지는 과정)
    1) PoW에 의해 블록생성이 되고 1에포크(100블록)마다 체크포인트를 두며, 캐스퍼 FFG방식에 따라 매 체크포인트마다 검증인들이 지분을 예치한후 투표를 진행한다.
    2) 방금 하나의 체크포인트A가 검증(Justified)되고, 계속해서 채굴이 진행되는 동안 다음 체크포인트B 확정을 위한 투표를 진행한다.
    3) (2가지의 삭감조건이 없다는 전제하에) 적어도 2/3이상의 검증자가 체크포인트B에 투표를 하면, 이때 체크포인트A와 B사이에 Supermajority link가 형성되며  그와 동시에 체크포인트B는 검증(justified)되고 그러고나서 체크포인트A는 확정(Finalized)된다.
    4) 2번~3번이 반복된다. 즉, 생성되는 매 블록마다 PoW가 실행되고, 그것을 뒤따라 일정 시점마다 PoS가 실행되는 셈이다.

 <새롭게 발생되는 문제들>
  ㅇ 하나의 원인으로 규정할수 없는 장애(Non-uniquely attributable faults)
    - 네트워크의 검증자 전체를 100%로 볼때 70%의 검증자 메세지만 존재하여
      네트워크 안정성 저하 및 체인포크 발생시, 2가지의 시나리오가 가능하다
      1) 실제로 나머지 30%의 검증자가 오프라인 상태이다.
      2) 70%의 검증자가 카르텔을 형성하여 나머지 30%의 검증자를 검열한뒤 그들의 메세지를 받지 못했다고 한다.
    - 위와 같은 상황에서, 양쪽 모두에 작은 페널티 부여, 양쪽 모두에 큰 페널티 부여,
      다수에 페널티 부여 후, 소수에게 양쪽체인중 투표하게 하여 메인체인을 결정하게 하는 방법이 있다.
    - 캐스퍼의 경우, 페널티의 경중은 미정이나 양쪽 모두에 페널티를 부여하는 방식을 선택한다.

 ㅇ 비극적 사고(Catastrophic Crash)
    - 전체 검증인 중에서 총 예치금의 3/1이상의 검증인들이 어떤 이유로 연결이 끊겨 어떤 체크포인트도  2/3이상의 투표를 받지 못해 검증 또는 확정되지 않는 상태이다.
    - 이를 해결하기 위하여 비활성 유출(Inactivity leak)을 도입하여,
      투표 미참여 검증인을 대상으로 시간이 지나며 예치금을 삭감시키게 하고,
      시간이 어느정도 지나면 투표 참여 검증인들의 예치금 합이 총 예치금의 2/3이상을 차지하여 체크포인트의 검증 및 확정이 가능하다.(단, 비활성 유출로 인해 삭감된 예치금을 돌려줄지는 아직 명확하지 않음)

  ㅇ 장거리 수정(Long range revisions)
    - PoW의 51%공격과 유사한 것으로, 현재는 모든 예치금을 인출했으나 과거에 오랜기간동안 총 예치금의 2/3이상을 보유한 집단이 있을때, 오레전 체크포인트로 돌아가 계속 투표를 하여 기존에 확정된 체크포인트를 새롭게 다시 확정시키는 공격을 말한다.
    - 이를 해결하기 위하여 항상 최초로 확정된 체크포인트들만 인정하자는 규칙(Fork choice rule)과 예치금 인출시 의도적으로 일정 시간을 소모하게 하는 인출지연시간(Withdrawal delay)를 도입한다.
    - 가령, 인출지연시간을 4주로 할때, 클라이언드 노드들은 적어도 4주에 한번씩 접속 및 업데이트하면, 기존에 최초로 확정된 체크포인트들을 알고있고 현재는 인출이 없는 검증인들이 과거로 돌아가 포크체인을 설정하려는 의도를 포착할 가능성이 커지게 된다.

  또한번의 Casper 재정비

  ㅇ Casper FFG 컨트렉트 구현 포기
    - Casper FFG를 컨트렉트로 구현시, 이더리움 프로토콜에 무리없이 적용시켜 곧바로 노드운영, 검증시뮬레이션, 디버깅 등을 할수 있는 이점이 있는 반면 솔리디티 언어를 사용하는 EVM과 dApp들을 웹기반인 eWasm으로 바꿔야 하는 문제가 발생하였다.
    - 결국 싱글체인 방식을 유지하지 못하는 상황에 봉착하게 되었다.
    - 그와 동시에 네트워크 노드 '전체'가 아닌 '일부'만 거래를 검증하는 새로운 매커니즘을 만들 수 없을까라는 생각에 데이터를 쪼개 저장하는 방식인 샤딩(Sharding)을 도입하게 됨
    - 간단히 말해, 캐스퍼를 통해 주기적인 완결성 확보를 노렸고, 샤딩을 통해 보안약화에 대한 우려를 줄일수 있다.

  ㅇ 개척정신과 장인정신
    - 필자는 2016년 초부터 이더리움 투자와 분석을 시작했고 현재보다 이더리움을 잘 알지 못했기에 2017년과 2018년에 로드맵 일정보다 늦어진것에 대한 불만이 있었다. 그래서 그 2018년 하반기 초심으로 돌아가 비탈릭을 포함한 이더리움 재단 및 개발자의 동향을 살폈고, 그들의 고민과 연구의 흔적을 발견하였고 왜 지지부진했는지 다는 아니어도 일부는 알수 있었다.
    - 만약 우리가 어떤 독창적인 프로젝트를 순수한 마음에서 시작했는데, 예상보다 큰 자본과 관심이 생긴다면 보통 어떤일이 벌어질까. 돈과 인기에 흔들려 초심을 잃을까, 아니면 우직하게 철학을 고수하며 마이웨이를 걸을까. 20대 초반의 비탈릭은 그 둘의 중간 어디쯤을 선택하여 중도의 길을 선택했다. 블록체인과 암호화폐 영역에서, 비트코인 이후 돋보이는 혁신을 일으켜 '개척정신(Frontier Spirit)'을 보여주면서도, 주변에 흔들리지 않되 아니다 싶을때는 과감히 방향을 트는 '장인정신(Craftsmanship)'을 보였다. 본인도 똑같이 그랬을지는 장담할수는 없지만, 분명한건 그 당시 또한번 캐스퍼에 대한 방향을 튼것은 첫번째 이상으로 어려웠을 것이다.
    - 앞으로 좀더 그 당시 캐스퍼 관련 히스토리와 기법들을 알아보면서 이더리움이 어떤 길을 걸어왔는지 계속 알아보기로 하자. 



법적 고지 : 본 게시글은, 투자를 위한 정보제공을 목적으로 작성되었기에 투자결정은 신중을 기하여 주시기 바라며, 참고자료를 토대로 본인 판단하에 내용을 추가, 편집 등 작성되었기에 본인의 허락없이 복사, 배포, 편집 등을 할 수 없습니다.



<References>
1) https://medium.com/hashed-kr/vitalik-twits-on-casper-2-kr-5c1d3ad092d5
2) https://medium.com/dnext-post/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-%EC%BA%90%EC%8A%A4%ED%8D%BC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98-%EC%B5%9C%EC%86%8C%ED%95%9C%EC%9D%98-%EC%82%AD%EA%B0%90-%EC%A1%B0%EA%B1%B4-90da163d36a0
3) https://medium.com/decipher-media/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%ED%99%95%EC%9E%A5%EC%84%B1-%EC%86%94%EB%A3%A8%EC%85%98-%EC%8B%9C%EB%A6%AC%EC%A6%88-1-1-casper-overview-3e0154487458
4) https://medium.com/decipher-media/scailabilty-series-1-2-casper-code-review-8a84103990d1

댓글

이 블로그의 인기 게시물

[Insight] JP모건을 통해 본 월가와 코인시장(2부작) 1부 // Wallstreet and CryptoMarket with JPmorgan part1 v1.2

[Insight] JP모건을 통해 본 월가와 코인시장(2부작) 2부 // Wallstreet and CryptoMarket with JPmorgan part2 v1.3

[Insight] 팍스 아메리카나와 팍스 블록체이나(2부작) 1부 // Pax Americana & Pax Blockchaina Part1 v1.1