[Ethereum] '제53차 이더리움 개발자 회의' 분석 및 개인 논평(1월 18일) v1.2

<제53차 이더리움 개발자 회의 안건>


□ 콘스탄티노플 HF 연기 관련

  ㅇ 난이도 폭탄 업데이트 
    - 개발자들이 최근 보안 결함 이슈(콘스탄티노플 포크지연사유)에 대한 대응으로 시작부터 피곤해진 상태였고, 대응에 도움준 개발자, 채굴자, 토큰보유자 등에게 감사를 표하며, 난이도 폭탄 업데이트에 대한 논의를 시작으로 회의가 시작되었다.
    - 보통 개발자 회의 시청자가 100명 안팎인데, 오늘은 안건에 대한 관심이 커졌는지 시청자가 300명이 넘었다.
    - 1월부터 블록타임이 증가하기 시작했고, 해시파워가 20%정도 하락하게 되고 시기는 4~5월이 예상된다(아래 '참고내용' 참조).
      * 난이도 폭탄 가동 시작 관련 글 : https://www.ddengle.com/traders_free/10746520

  ㅇ SSTORE net gas 보안 문제를 어떻게 완화하는가
    - 체인시큐리티가 지적한 EIP1283 보안결함에 대하여, 미리 철저한 검증을 하지 않았을까에 대한 성찰부터 여러 개발자들의 논의와 분석이 있었다.
    - 앞으로 콘스탄티노플을 어떻게 해야할지에 대해 의견을 모으자는 분위기로 자연스럽게 넘어갔다.
      * 보안결함에 대한 기술적 분석 관련 글 : https://www.ddengle.com/develop/10745930

  ㅇ 콘스탄티노플 포크를 언제 어떻게 재추진 할것인가
    - 충분한 테스트와 논의를 통해 하드포크를 하되 앞으로 몇 개월(가령 3개월) 뒤에 진행하는것은 로드맵에 부담이 있을것이다.
    - 콘스탄티노플 포크를 테스트넷 포크와 메인넷 포크 등 2개로 나누어 추진 고려하기로 하였다(아래 '참고내용' 참조).
    - 2개로 나눌경우, 테스트넷 포크과 메인넷 포크 사이에는 6주 정도 두는 걸 제안(2주간의 안정된 테스트와 6주간의 사용자편의 등 완충기간)하였다.
    - 기존 테스트넷을 없애고 새로 출시하여 심플하게 콘스탄티노플을 한번에 가자는 의견도 있었으나 그럴경우 Geth 등 이더 클라이언트에게는 새로운 포크가 발생하게 되는 문제점이 있다는 반박이 있었다.
    - 포크 재추진 기간이 6주간으로 의견이 모아지는 가운데 예상되는 시점과 블록시점이 계산되었다(EIP1283은 제외).
    - 콘스탄티노플 HF 재추진 시기는 2.27(수)쯤 예상되며 블록 기준으로는 7,280,000블록 예상된다.
    - 보안결함 수정 버전 콘스탄티노플HF(콘스탄티노플2)를 코드0로 명명(확실치 않음;)되었다. 

  ㅇ 사후 진단 : 어떻게 된 일인가? 어떻게 재발방지 할수 있는가?
    - 자세히 다루지 않음

□ 로드맵

  ㅇ 콘스탄티노플 - 다음은 무엇인가? 
    - 자세히 다루지 않음

  ㅇ ProgPoW HF 결정 
    - ProgPoW의 테스트넷인 Gangnam에 대한 기술적인 분석이 있었고, ProgPoW에 대한 결정이 아직 없지만 AMD, NVIDIA과 같은 그래픽카드 제조에 영향이 있을거라고 하였다.
    - ASIC에 대한것은 찬성/지지에 대한 논의는 결론이 안나는 가치문제라는 의견도 있었고, 가치문제를 떠나 ASIC에 대하여 ProgPoW 등 대응을 하느냐 안하느냐 결정을 해야한다는 의견도 있었다.
    - PoS가 도입되면 포크없이도 자연스럽게 ASIC저항이 되며, 현재 진행중인것을 유지하고 발전시키는게 생산적이라는 의견도 있었다.
    - 비탈릭은 비콘체인을 언급하며 비콘체인이 도입되면 51%공격에 대한 저항력이 강해질것이고, 따라서 (ProgPoW같은 ASIC저항 방식과 동일한) 충분한 보안이 충족될거라고 했다.
     * 제의견 : 비탈릭은 커뮤니티의 여론보다는 개발자 관점으로, 51%공격 등 안전성(Safety)에 있어 ASIC이슈를 보려는 경향이 강하다. 그에게 ASIC대응 이슈는, 메트로폴리스에서 세네러티로 넘어가는 현 시점에서 최우선순위로 두지 않는듯 보이나 최근들어서는 커뮤니티 여론이나 개발자회의 안건으로 올라온만큼 이전보다 더 중요하다고 생각하긴 하는듯 보였다.
    - 비탈릭은 마지막 멘트로, ProgPoW에 대한 여러 의견들에 대하여 어떤 대응이 더 나은건지는 모르겠지만, 사람들이 ProgPoW로 가자 또다른 대안으로 가자 등 다양한 의견들이 있다는 것은 '아직은 특정된 일치의견이 없는것이고 그래서 개발자들로 하여금 결정하도록 요구하는것이며, 우리는 여튼 그런 여론을 명심하는 것이 중요하다'고 말했다.

  ㅇ 이스탄불 HF 로드맵 
    - 다루지 않음

  ㅇ 전망- PoW체인(Serenity)에서의 PoS 확정성 이행
    - PoS의 비콘체인에 대해 논의시 51%공격 및 검열성에 대해 언급은 되었지만, 이에 대해서는 다루지 않았다.

ㅁ 테스팅 업데이트, 클라이언트 업데이트, 리서치 업데이트, 작업별 업데이트 등
    - 다루지 않음

※ [참고내용] 회의 시작전 일부 개발자의 사전 코멘트

  ㅇ 콘스탄티노플 HF를 2개로 쪼개기(kalalabe)
    - 최근 불거진 SSTORE를 바로잡는 것는 별개로,  Ropsten과 Rinkeby같은 테스트넷은 이미 콘스탄티노플이 적용되었다.
    - 따라서, 콘스탄티노플에 대한 새로운 사항을 추가하게 되면 테스트넷과는 따로 놀게 된다.
    - 이에 클라이언트(특히 Geth)에게는 테스트넷 버전 콘스탄티노플과 메인넷 버전 콘스탄티노플을 구분하는 로직이 적용되어야 할 필요가 있다. 
    - 그러므로, 나의 제안은 콘스탄티노플에 (별도 추가사항 없이) 그대로 두어 시행하되(콘스탄티노플1), 버그를 해결한 버전(콘스탄티노플2)를 따로 두어서, 테스트넷에는 어차피 현재 기존 콘스탄티노플이 적용되었으므로, 테스트넷에는 콘스탄티노플2만 적용하고, 메인넷에는 콘스탄티노플1,2 둘다 같은 시점에 적용한다.
    - 이렇게 진행하게 되면, 메인넷과 테스트넷이 동일한 로직이 적용되며, 클라이언트에게는 추가코드 수정이 필요없고 분란의 소지가 없게 만들며, 또한 기존의 콘스탄티노플 테스트를 유지하고 새 포크로 확장하기에 용이할것이다.

  ㅇ 난이도 폭탄 요약(lrettig)
    - 1월부터 블록타임이 증가하기 시작할것이다.
    - 5월에 30초 블록타임이 예상되며, 해시파워가 20~25% 하락시 4월초가 될수도 있습니다.
    - 가장 가능성 높은 예측은 4월말쯤 30초 블록타임이 되는것이다.

  ㅇProgPoW에 대한 설문조사(ppratscher)
    - 2,400여명(주로 채굴자)이 참여한 ProgPoW 관련 설문조사 결과, 79%가 Anti-ASIC을 찬성(45%는 ProgPoW, 34%는 또다른 Anti-ASIC방식을 찬성)하였고, 18%는 현재 ethash를 지지, 나머지 3%는 ASIC을 지지하였다.


□ 개인논평

  ㅇ갈길이 멀다 
   - 전반적으로 최근 갑자기 불거진 EIP1283보안결함으로 인하여, 무게감이 있는 다른 안건들을 충분히 다루지 못했다.
    - 메트로폴리스를 마무리하는 콘스탄티노플을 앞두고 벌어진 중요한 문제인거는 알지만 이번 회의에서 정해진거라고는 콘스탄티노플 재추진 일정이 나왔다는 것뿐이라 아쉬움이 많이 남는다.
    - 애초 회의 안건으로 들어간 ProgPoW HF 일정, 새로운 HF인 이스탄불 HF, 그리고 세레너티는 거의 묻혔다.
    - 특히, 커뮤니티 여론에 힘입어 연속해서 안건으로 선정된 ProgPoW의 경우, 비탈릭의입장을 다시금 느낄수 있었는데, "사용자/투자자로서 이제는 개발자 마인드를 존중해줘야하나..", "아니 그래도 그렇지, ASIC을 계속 그냥 냅두나?"라는 마음이 혼재되어 개인적으로는 약간은 답답한 마음이 들었다.
    - 회의 중 일부개발자가 ProgPoW할지 안할지 우선 결정부터 하자라는 의견도 있었으나, 여전히 논의가 더 필요할 것 같다.



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

[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

[Ethereum] 이더리움 ‘콘스탄티노플 포크 연기’ 총정리 및 세부분석 v1.5

이번 이더리움 콘스탄티노플 포크의 연기와 관련하여 나름대로 정리해봤습니다. 

콘스탄티노플을 약 하루 앞두고 스마트컨트렉트 전문보안업체인 체인시큐리티가 중대한 보안 버그 발견하였고 그와 관련 내용을 공개하였습니다. 

앞서 이번 콘스탄티노플 하드포크는 총 5개 개선안이 포함되어 있었고, 이 중 데이터 스토리지에 대한 공정한 가격책정 방안 제시하고 적은 가스(GAS, ETH 네트워크 상의 수수료)로 스마트 컨트랙트 생성 가능케 하는 개선안(EIP1283)에서 보안 결함이 발견되었습니다. 

<https://keepingstock.net>


세부적으로는, 송수신 같은 기능의 가스비용을 낮추는 것과 관련하여, 사용자 몰래 자금을 옮기는 문제 즉 ‘재진입공격(Reentrancy Attack)’의 위험이 있다는 것이 이번 결함의 핵심입니다. 

‘재진입성’이란 함수들이 동시에 호출이 되어도 문제가 없는 함수의 성질을 의미하는데요, 이때 재진입성을 만족하지 않은 함수가 있는 경우를 ‘재진입 문제’ 또는 ‘재진입 공격’이라고 부릅니다. 
가령, 사용자가 스마트계약에 따라 자금 송금시, 1)잔고 확인 -> 2)호출한 주소로 송금 -> 3)잔고 업데이트 순으로 처리되는데, 이때 공격자는 송금시(2번) 특정함수를 활용하여 인출함수를 다시 호출하게되면, 잔고가 업데이트(3번)되기전에 자금을 또 송금받을수 있습니다. 

이렇게 된이상 제 생각으로는 향후 단기 일정의 경우의 수는 다음과 같을수도 있습니다. 
1> 최대한 빠른 수습 및 큰 이상이 없다는 판단하에 콘스탄티노플 포크 재추진(1-2월)
2> 논의 중인 ProgPoW(ASIC차단코드)포크 추진확정시, 콘스탄티노플 포크와 동시 추진(2-5월)
3> ProgPoW포크가 없거나 또는 별도추진하되, 추가테스트 및 감사가 길어져 공백을 두고 콘스탄티노플 재추진(3월 또는 그이후)

뭐,, 그외의 경우가 될지도 모르겠지만 이번주 금요일에 있을 ‘Ethereum Core Devs Meeting #53때 이 부분을 다룰 예정이라고 하니 현재로서는 지켜봐야할것 같습니다. 
*사실 본 이슈 관련으로 긴급 개발자 회의가 있었고 공식/비공식적으로 추가 논의가 있지 않을까 싶습니다.

어쨌든 이번 콘스탄티노플 하드포크가 이전의 연기에도 불구하고 또다시 연기되어 개인적으로도 아쉽고 불만도 있지만, 사용자 자금을 위험에 빠질수 있는 개선안에 대해 포크를 즉각 연기시키기로 한 특단의 조치가 그나마 다행이라고 생각합니다. 다만, 커뮤니티의 불안감이 커지기 전에 빠른 수습과 포크 재추진 날짜가 정해지기를 바랍니다.



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

[Consensus] "지분증명방식" 개론 // Introduction to Proof of Stake plus PoW v1.5

지분증명방식(Proof of Stake)이란 무엇인가

□ 지분증명방식이란

  ㅇ 개념 
    - 공개형* 블록체인이면서 무허가성 네트워크**에서는 '블록선택'과 '체인선택'을 하기 위하여 합의알고리듬이 매우 중요하며, 그 중 '블록선택'에 있어 대표적인 합의방식이 지분증명방식(Proof of Stake, 이하 PoS)이다.
     * 블록체인상 공개형(Public)과 폐쇄형(Private) 차이는 '어떤 자가 블록체인을 조회(read)할수있는가'에 대한 문제로, 누구든 블록체인을 조회할수 있으면 공개형, 제한된 자들만 블록체인을 조회할수 있으면 폐쇄형이다.
     ** 블록체인상 무허가성(Permissionless)과 허가성(Permissioned)의 차이는 '어떤 자가 블록체인(합의)에 참여(write)할수 있는가'에 대한 문제로, 누구든 블록체인(합의)에 참여할수 있으면 무허가성, 허가된 자들만 블록체인(합의)에 참여할수 있으면 허가성이다.

  ※ 합의알고리듬 구성 요인
    1) 누구에게 블록생성 권한을 줄것인가(블록선택규칙)
    2) 체인포크시 어떤 체인을 선택할것인가(체인선택규칙)
    - 예를들어,비트코인은,
      i. 가장 빨리 '작업'(채굴)을 '증명'하는(캐는) 자에게 블록생성 권한을 주고(→작업증명방식, 이하 PoW),
      ii. 체인포크시 블록 난이도 합이 가장 높은(체인길이가 가장 긴) 체인이 메인체인으로 선택된다(→나카모토 컨센서스)
    - 반면, 이더리움의 Casper FFG 등 일부 PoS에서는,
      i. '지분'을 갖고 있고 그 지분의 일부 또는 전부를 보증금으로 '증명'(예치)한 자에게 투표 및 승인 권한을 주고(→PoS),  ,
      ii. 체인포크시 가장 많은 투표(예치금)이 모인 체인이 메인체인으로 선택된다.

  ㅇ PoS 종류
    1) 체인기반 지분증명방식(Chain-based PoS) : 일정 주기마다 랜덤변수를 통해 검증인을 선정하여 블록을 생성시키며(블록선택규칙), 그 검증자는 반드시 분기된 여러 체인의 블록들 중 하나를 선택해야하는데 보통 가장 긴 체인의 마지막 블록을 선택한다(체인선택규칙).
    2) 비잔틴장애허용 타입 지분증명방식(BFT-style PoS) : 매 라운드마다 검증인들 중에서 특정 알고리듬에 의해 블록생성권한을 얻은 검증인이(블록선택규칙), 여러 체인의 블록들 중 한 블록을 다음정상블록으로 제안하고 2/3을 초과하는 검증인들의 투표로 그 제안블록을 인정하면 확정되는데, 체인 길이와 블록 사이즈와는 무관하게 무조건 많은 투표를 많이 받은 블록이 정규블록이 되며, 그 정규블록의 체인이 메인체인이 된다(체인선택규칙)
    3) 하이브리드 지분증명방식(Hybrid PoW-PoS) : 필요에 따라 PoW와 PoS를 혼용하며, 이더리움 캐스퍼FFG의 경우, PoW에 의해 가장 빨리 채굴하는 자가 블록생성권한이 생기고(블록선택규칙), PoS에 의해 매 100블록(1에포크)마다 체크포인트를 두어 이전 체크포인트 이후 분기된 여러 체인의 블록들 중 가장 많은 투표를 얻은 블록이 정규블록으로 간주되어 그 블록이 새로운 체크포인트가 됨과 동시에 해당 체인이 메인체인이 된다(체인선택규칙).
<https://www.draglet.com/proof-of-work-vs-proof-of-stake>

□ 키워드로 본 PoS

  ㅇ 지분 : 지분이 곧 권력(Power)이며, 참여자는 지분을 잘 활용하여 네트워크에 공헌하면 인센티브를 받거나, 지분을 잘못 활용하여 네트워크에 피해를 끼치면 페널티를 받는다
  ㅇ 페널티 : 토큰 이코노미 설계상, PoW의 경우 합의참여자시 악의적 행동에 따른 페널티는 블록생성(채굴)에 쏟는 시간+체력+전기에너지+장비구매비 및 감가상각비 정도다. 반면 PoS의 경우 패널티는 보증금을 사라지게 하는것부터 커뮤니티 내 평판을 잃게하는 것 등 다양하게 설계할수 있다.

  ㅇ 경제적 안전성
    - 네트워크에 해를 끼치는 악의적인 행동을 할 경우, PoW에서 처벌할수 있는 페널티보다 PoS에서 처벌할수 있는 페널티가 더 크게 설정할수 있으며, 덕분에 경제적 안전성 즉 네트워크 보안성을 높일수 있는 여지가 있다.
    - 가령, PoW에서는 악의자가 51%공격시 51%의 컴퓨팅파워만 유지하면 공격을 반복해서 할 수 있는 반면, PoS에서는 악의자가 그러한 공격을 한다면 그의 지분을 삭감시켜서 더이상의 공격을 할수 없게 만들수 있다.
    - 또한 합의에 도달하기 위해서 PoW에서는 채굴을 하는 동안에 소모되는 내부비용과 환경에 끼치는 영향이나 농업/산업용 전기사용에 따른 전기보조금 등의 외부비용이 들지만, PoS에서는 딱히 소모되는 내부비용이나 전력이나 장비에 쓰는 외부비용이 거의 없고 그 비용을 네트워크 보안에 활용할수 있다.(물론 다수의 선의에 의존해야하는 점이 있긴 하다)

  ㅇ 덜 중앙화
    - 비트코인 초기시절부터 현재까지 PoW는 규모의 경제 논리에 입각하여 일부 대형 채굴장들이 네트워크의 큰 비중을 차지하고 있다. 이는 규모가 클수록 그에 따른 비용(단가)가 저렴해지는 데 이유가 있으며(뭉치면 살고 흩어지면 죽는다), 따라서 채굴의 집단화가 사토시 정신중의 하나인 탈중앙화에 역행하는 모습을 보이고 있다.

  ㅇ 친환경성
    - ASIC채굴과 대형 채굴장 등을 통한 탐욕스런 채굴경쟁때문에 비트코인에 들어가는 전기에너지가 일부 국가의 연간 전력소모량보다 많다보니, 아무래도 환경에 악영향을 끼친다. 물론 PoW를 대표하는 비트코인의 경우, 블록체인의 등장, 네트워크 장애모델의 신기원, 암호화폐의 실현 등 사회, 경제, 기술적으로 긍정적인 영향을 끼쳤지만, 그런 좋은 영향을 유지하면서 친환경적인 대안이 있다면, 그리고 그게 PoS라고 한다면 가능성이 전혀 없진 않다.

□ PoW와 PoS의 길

  ㅇ PoW의 수렴
    - 사견이지만, 만약에 사토시 나카모토가 P2P e-cash system을 PoW가 아닌 PoS에 기반하였다면 블록체인과 암호화폐가 이렇게 성공하기는 어려웠을것이다. 그 이유는, PoW는 인간이 동기부여시키는 가장 간단하면서도 명쾌한 '경쟁'을 끌어와 블록생성과 체인선택을 쉽게 정의했을 뿐만 아니라 확률적으로 긴 시간 생존(Liveness)에 유리하도록 잘 설계된 '하드웨어'처럼 작동했기 때문이다.
    - 하지만 이런 간단명료하면서도 생동감 있는 메커니즘은 확률게임과 인간탐욕에 의해 위태로워졌고 그 대안을 찾기 시작했으며 그 부족한 점을 채우기 위하여 상대적으로 쉽게 다양한 콘텐츠를 구사할줄 아는 '소프트웨어'같은 PoS가 제안되었다.

  ㅇ PoS의 발산
    - PoS를 최초로 구현한 '피어코인'부터, 최초로 Full PoS를 선보인 'NXT', PoW에서 PoS로 전환하는 '이더리움(Casper)', 강력한 안전성을 자랑하는 'Cosmos(Tendermint)'까지 보다 경제적이고 안정적이고 생동적인 PoS방식을 구현하기 위하여, 전 세계의 많은 개발자들이 오늘도 개발에 열중하고 있으며, 본인은 앞으로 여러 PoS프로젝트에 대한 분석과 논의를 해보겠다.



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



<References>
1) https://medium.com/@jonchoi/ethereum-casper-101-7a851a4f1eb0

[Consensus] 이더리움 캐스퍼 - 베팅에 의한 합의 // Ethereum's Casper by betting(2014~2015) v1.3

□ PoS가 미래다

  ㅇ PoW와 나카모토 컨센서스의 대안 제시

     - PoW는 2013년에 이미 ASIC에 의해 경쟁과열 및 중앙집중화가 심해지고 있었고, 경쟁을 통해 가장 긴체인이 메인체인이 되는 간단명료한 합의방식에도 불구하고 '확정성*'이 보장되지 않았다.(과도한 전기사용 등의 문제는 논외)
     *확정성(Finality) : 블록체인에 한번 기록된 거래는 그 특성상 불가역적이고 수정불가이므로, 거래 이후 절대 바뀌면 안된다는 것을 의미
     - 이더리움의 창시자 비탈릭은 이더리움이 나오기 전부터 "PoS가 미래다(PoS is the Future)"라고 하였고, 그 이유는 PoW보다 안전하기 때문이다. 사실 더 안전하다는 것은 상대적*이겠지만 잘만 구현된다면 PoS가 PoW보다 충분히 안전성이 높다고 말할수 있다.
     *상대적인것에 대한 고찰 : 전통적으로 합의알고리듬 설계시, 안전성을 확보한후 생존성을 줄이는 방식(Safety over Liveness)으로 접근하여 네트워크 내에서 합의가 이루어지지 않아도 모든 노드에게 동일한 메세지를 주고받는게 중요하다고 생각했다. 하지만 비트코인의 경우, 그와 정반대로 생존성을 살리고 안전성을 뒤로 미루되(Liveness over Safety), 경쟁을 통한 포크 선택규칙(가장 빨리 수학계산을 푼 자가 블록생성시키며, 긴 체인이 곧 메인체인)으로 안전성을 보완했다. 다만, 이런 보완책도 완벽하게 보장할수 없는것이, 51%공격과 같은 극단적인 경우에는 큰 의미가 없다는 것이며, 이는 단지 확률적으로 안전성을 부여한다는 한계에 부딪힌다.(자세한 내용은 여기를 참조)
< https://twitter.com/vladzamfir >

□ PoS로 가는 만만치 않은 여정

  ㅇ PoS로의 도전과 그에 따른 문제

     1) 잃을게 없는 문제(Nothing at Stake)
      - PoW의 경우, 동시에 2개의 체인에서 블록생성이 되어도 누가 더 빨리 길게 다음 블록으로 이을것인지에만 신경을 쓰는 경쟁때문에, 시간이 흐르면서 자연스럽게 편익이 크고 기회비용이 적은 가장 긴 체인이 메인체인으로 선택된다.
      - PoS의 경우, 체인이 분기되면 유효성 검증자(블록생성에 참여한 유효지분보유자)들이 보상을 더 많이 받기 위하여, 분기된 복수의 체인들에 투표하는데도 불구하고 딱히 손해보지 않는다. (다만, 결국에는 해당 네트워크의 신뢰성을 잃게된다)
     - 이 문제를 해결하기 위하여 비탈릭은 당초 유효성 검증자의 서명보상(Signing Reward)를 뺏자고 하였지만, 이후 이더리움 캐스퍼 개발자인 블라드(Vlad Zamfir)와 논의후 '슬래셔(Slasher)'를 도입해서 유효성 검증자가 보증금을 예치하게 하고 분기된 복수의 체인에 투표하는 행위를 악의적으로 간주하여 보증금을 삭감(Slash)시키는 재정페널티를 주기로 한다.
     - 가령, 노드 A가 블록생성을 위하여 100만원을 예치하면서 블록보상으로 1만원(이율1%)의 편익을 얻고 악의적인 행동의 페널티가 보증금 50% 삭감일 경우, 얼핏보면 편익이 1%로 매우 적게 보이지만 악의적인 행동에 대한 기회비용은 -51만원(51%)일것이며 이는 상대적으로 매우 치명적인 재정패널티다.

     2) 뇌물 공격(Bribing Attack) 또는 장거리 공격(Long Range Attack)
      - 악의자가 뇌물을 주면서 현재는 보증금을 모두 인출하여 잔고가 0이지만 과거에는 유효성 검증자였던 사람의 계정 키를 공유받는 경우, 악의자는 과거의 계정 히스토리를 악용하면 해당 블록체인을 통제할수 있는 일부 권한이 생긴다.
      - 가령, 뇌물을 받은 유효성 검증자가 보증금을 인출하기 이전(잔고가 있을때)의 블록으로부터 포크시킨 공격체인을 남모르게 만들어 이어나가면서 거짓된 역사의 체인을 만들수 있으며, 메인체인과 길이가 같아질때 노드들은 메인체인과 공격체인 중 어느 체인이 정통체인인지 알수없게 된다.
      - PoW의 경우, 채굴경쟁을 통해 블록이 생성되면 외부정보 없이 그 자체로 유효한 블록으로 인정(장거리 공격, 51%공격, 이중지불문제 등은 논외)되지만, 보증금을 예치하는 캐스퍼같은 PoS의 경우, 검증자의 잔고를 확인하는 과정이 필요하다.
      - 이 문제를 해결하기 위하여 현재 잔고가 없는 검증자의 서명은 유효하지 않다고 간주하고, 예치금을 인출하는데 걸리는 시간을 N이라고 할때 N보다 더 오래된 시점으로 돌아가려는 시도가 있다면 노드는 그것을 악의적인 행동이라고 판단하여 거절할수 있으며, 노드는 적어도 N기간에 한번은 소프트웨어 업데이트를 하면된다.
      - 가령, 예치금을 인출하는데 걸리는 시간을 72시간으로 할때, 72시간보다 더 오래된 시점으로 돌아가 포크체인을 구성한다면 노드는 그것을 공격체인으로 간주하여 유효하지 않다고 판단하며, 노드는 이런 올바른 판단을 지속 유지하기 위해서는 적어도 72시간에 한번씩 업데이트만 해주면 큰 비용없이 장거리 공격을 방지할수 있다.

  ㅇ 베팅에 의한 합의(Consensus by betting)

    - 일종의 게임이론(Game theory)으로, 검증자가 블록A에 베팅을 했는데 블록A가 가장 많은 검증자들로부터 베팅을 받아 정상블록으로 인정이 되면 베팅한 검증자는 보상을 받지만, 블록A가 아닌 다른 블록이 정상블록이 되면 검증자가 예치한 보증금은 삭감된다.
    - 이런 방식때문에, 검증자들은 다른 검증자들이 특정 블록에 베팅을 할수록 덩달아 그 블록에 베팅을 하게되어 자연스럽게 한 블록에 보증금이 몰리게 된다. 다만, 특정 블록에 베팅을 할때 그게 정상블록이 될 확률이 50%일때 베팅하여 성공하면 2배로 보상을 받고 대세로 기울어진 99%일때 베팅하여 성공하면 보상금은 미미하다.
    - 흥미로운 점은, 베팅확률이 99%가 되기전에 다른 블록에 베팅한 검증자가 마음을 바꾸어 대세 블록으로 베팅하면 합법적인 행위로 간주하여 재정페널티가 없다. 이렇게 게임이론을 통해 이익을 취하고 손실을 줄이는 경제적인 방식으로 블록체인의 확정성을 이루는 것을 '경제적 확정성(Economic Finality)'이라고 한다.


  ㅇ 카르텔 방지

     - 초기 캐스퍼에 적극적으로 참여한 블라드의 제안으로, 새로운 합의알고리듬인 캐스퍼 CBC(Casper Correct By Construction)이 나온다. 이는 검증자들이 블록에 서명할 때마다 어느 블록에 누가 서명했는지 DAG방식*으로 기록해두면 어떤 블록이 서명 가중치가 높은지 알 수 있을 뿐만 아니라 하나의 노드만 남더라도 시간 순으로 모든 트랜잭션을 다시 만들수 있다는 것이다.
      *DAG(Directed Acyclic Graph, 방향성 비순환 그래프) : 하나의 트랜잭션은 다음 트랜잭션을 검증하고 승인하며, 블록의 수준을 트랜잭션 수준으로 쪼개고, 이러한 검증이 동시 다발적으로 이루어지는 방식. 보통 직렬이 아닌 병렬로 구성됨.
     - 가령, 특정 검증자가 서명한 블록이 자주 DAG에 포함되지 않으면 다수가 카르텔을 맺고 소수 검증자를 검열하고 있다는 것으로 간주하여 페널티를 줄수도 있다.
     - 결국, 안전성(Safety)에 중점을 둔 전통적인 BFT보다는 생존성(Liveness)를 더 강화시키고, 블록이 생성된 뒤에 블록에 서명할 수 있게 하면 노드의 2/3(BFT의 정족수)를 충족시킬수 있어 확정성(Fanality)도 챙길 수 있다.


□ 새로운 PoS로 재정비

  ㅇ 불완전한 방식

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

  ㅇ 새 판짜는 장인정신

    - 이더리움의 실체가 나오기 전엔 2014년부터 비탈릭과 주변인물들은 PoS에 대한 연구와 고민을 하고 있었다. 그들은 이더리움을 PoS방식으로 출시하고자 하였으나 결코 쉽지 않았고 결국 차선책인 PoW방식으로 출시한다. 아마 썩 괜찮은 도자기를 마음에 들지않는다며 과감히 깨부스는 도자기 장인정신의 마음같기도 하다.
    - 필자가 비탈릭이었다면 상당히 고민을 했을것이다. 자기 계획대로 갈것인가, 아니면 차선책을 선택할것인가. 만약 자기 계획대로 한다면, 스스로 납득할수 있는 프로젝트를 추진했겠지만 출시가 매우 늦어졌을것이다. 하지만 차선책을 선택하면, 우선 원하는 일정에 따라 프로젝트 추진이 가능하지만 향후 당초 원하는대로 전환을 하기에는 상당한 진통이 있었을것이다. 비탈릭은 실제로 후자를 선택하였고, 현재까지 PoS전환을 위한 연구와 개발을 하고 있다. 과연 그는 역사에 올바른 결정을 한것인가. 그 판단은 시간이 좀 더 지나봐야 알것 같다.


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



<References>
1)https://blog.bitmex.com/please-translate-in-ko_kr-complete-guide-to-proof-of-stake-ethereums-latest-proposal-amp-vitalik-buterin-interview/
2)https://medium.com/@Vlad_Zamfir/the-history-of-casper-part-1-59233819c9a9
3)https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-2-8e09b9d3b780
4)https://medium.com/hashed-kr/vitalik-twits-on-casper-kr-52346495fda7

[Bitcoin] 비트코인의 흥망성쇠(3부작) 1부 "역대 주요이슈 분석" // Bitcoin's Rise & Fall(Trilogy) Part1 v1.5

비트코인의 흥망성쇠 (興亡盛衰) □ 에필로그   ㅇ 분석에 앞서     - 그동안 분석가로서 블록체인과 암호화폐가 지닌 기술 위주의 기본적 분석을 해왔으나, 투자자로서 유의미한 시세변동, 시세에 영향을 끼치는 이슈 등에 대한 분석글 작...