[Technology] 안전성과 생존성, 그리고 동기성 // FLP impossibility plus Synchronization v.1.3

□ 안전성(Safety)과 생존성(Liveness)

ㅇ 안전하면서 생존에 강한 블록체인은 없는가
  - 이전글에서 안전성(Safety)과 생존성(Liveness)에 대해서 알아보았고, 안전성을 희생하면서 생존성에 무게중심을 두어 분산 네트워크를 구현한 비트코인을 살펴봤다.
  - 다른 이전글에서는 여러 장애모델을 다뤄봤는데, 그 중 가장 단순한 장애모델은 Fail-stop Failure Model*이며 이 모델수준의 장애가 발생하는 환경에서는, 비동기(asynchoronous)상태이면서 안전성과 생존성을 둘다 만족시킬수 없다. 이를 우리는 FLP불가능정리(FLP impossibility theorem)라고 한다.

   * Fail-stop Failure Model
     - 개념 : 장애가 발생(Fail)하면 더이상 상태변화가 일어나지 않는다(Stop)
     - 특징 : 요청한 메시지는 언제나 도착하며 도착한 메시지는 정상이라고 가정한다.
     - 한계 : 메시지가 도착하지 않는 경우를 가정하지 않기 때문에 서버으 작동불능사고(Crash)가 상황발생하는 현실적인 장애를 처리할수 없다.

ㅇ 엄마가 좋아 아빠가 좋아?
  - 합의 알고리듬의 선택에 있어, 무게중심을 안정성과 생존성 중 어디에 둘것이냐의 문제이기도 하지만, 동기성, 비동기성, 부분동기성 환경을 선택하는 것 역시 문제이다.
  - 이번 글에서는 이런 다양한 요인들을 구분하여 사례를 들어 설명하고자 한다.

< 블록체인의 트릴레마-장애허용, 생존성, 안전성(https://medium.com/@alexandratran) >



□ 동기성과 비동기성

  ㅇ 동기성 모델(Synchoronous Model) 
       : 노드 간 메시지 전달이 정해진 시간 안에 이뤄지는 모델
   
    <생존성을 우선시한 사례> 
      - 비트코인 : 채굴이라는 연산작업 경쟁을 통해 블록을 생성하면서 체인을 이어나갈수 있도록 프로토콜을 설정하여 생존성을 우선시한다. 다만, 네트워크 내 모든 노드가 10분동안의 정해진 시간에 상호 통신을 통한 트랜잭션 유효성 검사할 시간을 확보함으로써, 안전성을 보완한다.
      - 이더리움(現 PoW버전) : 비트코인과 마찬가지로, 채굴 경쟁을 통해 블록을 생성하면서 체인을 이어나갈수 있도록 프로토콜을 설정하여 생존성을 우선시한다. 다만, 비트코인 블록생성시간(10분)보다 현저하게 짧아 모든 노드가 상호통신할 시간 역시 짧아진다. 그 덕분에 시간당 네트워크 처리량이 많아지지만, 그 때문에 고아블록(메인체인으로 선택받지 못한 포크체인 상의 블록)이 많이 생긴다. 참고로, 이더리움은 캐스퍼를 통해 PoS로 전환을 계획중이다.
      - 이렇듯, 비트코인이나 이더리움이 노드간 상호통신할 시간을 확보한 이유는, PoW의 경우 통제요인이 외부(채굴기)에 있기때문에 일단 돌발상황이 발생하는지 어느정도 지켜볼 필요가 있고, 그렇게 지켜본뒤에야 비로소 결과값(블록)을 확정시킬수 있기 때문이다. 가령, 100개의 채굴기가 있는 상황에서 별도의 101개의 채굴기가 갑자기 추가되면, 그 추가된 101개가 주도권을 갖고서 기존의 체인을 엎어버릴수 있는(51%공격) 등 문제가 생길수 있기때문에 확정된 결과값(Finalized Output)을 도출하는데 대기 시간이 필요하다.

    <안전성을 보완한 사례>
     - 이더리움(PoS(Casper FFG)버전) : 블록생성을 PoW방식을 활용하여 생존성(Liveness)를 유지하되, 매100블록(1에포크)마다 PoS 검증인들의 투표를 통해 돌이킬수 없는 지점인 체크포인트를 정의(Justify) 및 확정(Finalize)하여 안전성을 보완한다.
   
  ㅇ 부분 동기성 모델(Synchoronous Model) 
       : 노드 간 메시지 전달이 정해진 시간 안에 이루어지지만, 그 정해진 시간이 어느정도인지 알수 없는 모델
   
    <안전성을 우선시한 사례>
      - 코스모스 : 블록을 생성하면서 체인을 이어나갈수 있도록 비트코인(10분)이나 이더리움(15초)처럼 일정시간이 설정되지만(생존성↑), 당시 네트워크 속도에 따라 유동적으로 결정되는데, 메세지 누락(Omission)*이 되지않는 이상 언젠간 메세지가 도착한다.
        *누락장애(Omission Failure) : 메세지 미도착 원인이 무엇이든, 일정시간 내 미도착시 도착하지 않을거라고 보고 단순 누락(Omission)시키는 장애.

  ㅇ 비동기성 모델(Asynchoronous Model) 
      : 노드 간 메시지 전달이 정해진 시간에 구속받지 않는 모델
   
    <안전성을 강조한 사례>
      - 아이오타 : 동기 또는 부분 동기 방식의 블록체인이 처리속도(TPS)에 한계를 보이자, 이 한계를 극복하기 위해 단순 노드수 제어방식에서 벗어난 DAG방식*을 도입하고 DAG기반의 탱글**이라는 알고리듬을 사용한다
        * DAG(Directed Acyclic Graph) : 기존의 선형체인방식을 탈피해 트랜잭션 자체를 트리 방식의 단방향 링크 리스트로 먼저 저장하고 나중에 합의하는 방식.
       **탱글(Tangle) : DAG를 기반으로 하는 새로운 알고리즘으로서, 네트워크 참여가 트랜잭션을 발생시키는 동시에 이전 트랜잭션을 확인하는 검증자가 됨. 새로운 거래를 하기 위해서는 반드시 이전에 진행되었던 2개의 거래내역을 확인하고 검증을 진행해야 함. 전체 트랜잭션 개수가 늘어날수록 네트워크 참여자 및 검증자들이 증가하면서, 시스템의 안전성과 확장성(Scaliability)이 더욱 커짐.
< DAG 도식화(http://tmmse.xyz/2017/12/24/gasanghwapye-seuteodi-iota) >

□ 합의프로토콜의 매력

  ㅇ 그때그때 달라요
    - PoW(작업증명방식)는 경쟁이라는 슬로건 하에 '블록선택'과 '체인선택' 그리고 '인센티브 부여'까지 아주 간단명료하게 구현시킨 '합의 프로토콜(Consensus Protocal)'이다. 하지만 단조로운 PoW와는 달리 PoS(지분증명방식)는 유효지분을 활용하여 블록선택, 토큰이코노미 등을 다양하게 구현시킬수 있는 매력이 있다.
    - 이번 글에서는 안정성 및 생존성과 동기성 정도를 키워드로 하여 다양한 사례들을 살펴봤는데, 각 토큰을 만드는 개발자들이 예상가능한 공격, 장애 등을 회피하면서 동시에 성능향상을 꾀하는 전략들을 얼마나 고민하고 있는지에 대한 단서들을 볼수 있었다.
    - 앞으로 관심있는 코인/토큰을 발견할 경우, 스스로 개발자의 시각으로 해당 메커니즘을 바라본다면 투자자로서도 유의미한 기본적 분석이 될 수 있을거라 필자는 생각한다.



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



<References>
1) https://medium.com/lunamint-atlas/%ED%85%90%EB%8D%94%EB%AF%BC%ED%8A%B8-tendermint-%EC%84%A4%EB%AA%85-%ED%8D%BC%EB%B8%94%EB%A6%AD-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-public-blockchain-%EC%84%B8%EA%B3%84%EC%97%90%EC%84%9C-%EB%B9%84%EC%9E%94%ED%8B%B4-%EA%B2%B0%ED%97%98-%EA%B0%90%EB%82%B4-bft-%EA%B8%B0%EB%B0%98-%EC%A7%80%EB%B6%84%EC%A6%9D%EB%AA%85-pos-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-d195944b984b
2) https://blog.seulgi.kim/2018/05/safety-liveness-in-blockchain.html
3) http://wiki.hash.kr/index.php/%EC%95%84%EC%9D%B4%EC%98%A4%ED%83%80

댓글

이 블로그의 인기 게시물

[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