블록체인의 합의 알고리즘에 대해서 공부해보자

in #kr6 years ago (edited)

sirin.png


블록체인의 합의 알고리즘에 대하여


궁금증.

합의 알고리즘은 왜 필요한가? 어떤 상황에서 필요한가? 무엇인가? 어떤 종류가 있나? 어떻게 구성되는가? 여러 의문을 해소하는 목적으로 공부해봅니다.

  1. 왜?
    TCP/IP 프로토콜과 비슷한 맥락으로, 블록체인 네트워크 상에서의 합의 규약(규칙)을 설정하기 위해 존재합니다. 어떤 형식으로 DB(블록체인)를 보존할 것인가에 대한 문제 해결 방식으로, 일반적인 중앙화 서버에서는 관리에 대한 주체가 장부(DB)를 관리하고 보존하기 때문에 합의 알고리즘의 설계가 불필요합니다. 네트워크를 유지하기 위한 합의 알고리즘을 사용할 수 있는 시스템이 블록체인 네트워크이며 블록체인의 등장으로 모든 장부를 각 노드들이 공유하고 저장하며 신뢰성을 보장하는 알고리즘이 필요하게 되었습니다. 결과적으로는 신뢰성이 없는 노드들끼리의 ‘합의’가 필요한 네트워크인 블록체인 네트워크인 것입니다.

  2. 어떤 상황에서 쓰이나?
    체인이 동일한 시점에 분기(Fork)될 경우 어떤 체인을 main chain으로 봐야할 지의 문제가 생깁니다. 비트코인의 경우 동일한 타임스탬프(시간 변위)에서 블록이 생성되면, 난이도가 높은 블록을 선택하는 합의 알고리즘이 존재합니다.
    블록체인 네트워크는 Safety(같은 트랜잭션을 처리하면 모든 노드는 같은 결과를 도출해야 한다), Liveness(구동되는 모든 노드는 모든 트랜잭션을 수신해야 한다), Finality(완결성. 변경할 수 없는 데이터를 확보해야 한다)를 고려하여 합의 알고리즘을 설계해야 합니다.(Ethereum 참고) 비트코인의 경우에는 Finality(확정성)를 일부 포기하고Safety(안정성)를 확보하는 것 – 긴 체인, 트랜잭션이 많이 담긴 무거운 체인, 난이도 합이 높은 체인을 main chain으로 봄. 을 중점으로 둔 PoW 방식으로, 블록의 유효성이 확정 날 때까지의 시간이 필요합니다. (블록 생성 시간이 10분) 이렇게 어떤 요소를 중점으로 두는지에 따라 합의 알고리즘은 달라집니다.
    예를 들어, 일부 악의적인 노드들의 합의를 무시하고 다수의 합의를 도출하는, 비잔틴 장군 문제를 해결하기 위해 발명된 BFT 알고리즘의 경우에는 Safety를 일부 포기하고 Finality를 확보하는 방식입니다.

  3. 어떻게 구성되어야 하는가?
    노드를 구성하는 합의 메커니즘(PBFT, DPoS, PoS)과 블록의 유효성을 검증하는 메커니즘, 누구에게 블록 생성권을 줄 것인가에 관한 메커니즘, 노드들의 Broadcasting을 하기 위한 메커니즘, 블록 검증에 관한 메커니즘 등이 필요합니다.
    악의적인 노드에 대한 차단 시스템을 설계해야 하며, 각각의 메커니즘은 역할이 중복되어 있는 경우도 있습니다. PBFT의 경우 노드 구성과 블록 검증 방식의 속성을 지닌 알고리즘입니다. 블록체인 네트워크를 구성하려면 DPoS + BFT의 EOS와 같은 Multi-Consensus를 구상해야 합니다.
    블록체인 네트워크의 합의 알고리즘을 설계하는 내용 중, 대표적으로는 블록 생성 권한 분배 방식(누가?)과 블록 생성 및 검증 방식(어떻게?)이 있습니다. (PoW는 블록 채굴에 관한 권한 부여 방식의 속성이 있습니다)
     얼마 전, 비트코인 코어의 치명적인 결함이 있었습니다. 비트코인 코어는 비트코인을 구성하는 블록을 검증하는 코드가 주로 담긴 소프트웨어입니다. 정상적으로, 블록을 안전하게 검증해야 하는데 블록 검증을 생략하는 버그가 발생한 것입니다. 이 문제는, 곧 비트코인 코어팀에 의해 업데이트 되었지만 변조되지 않은 블록을 블록체인에 제안하고 블록에 담아 체인을 유지시키는 시스템이 무너질 뻔했던 사실은, 블록체인의 핵심인 무결성이 깨질 수도 있었음을 증명합니다.


합의 알고리즘의 종류


PoW, PoS(Randomized block selection, Coin Age based selection), DPoS, PoI, PoAuthority, Raft, PBFT, Tendermint, Ben-or, PoET, PoC, PoActivity, PoBrain or Burn, DAG, SBFT, PAXOS 등 블록체인 내 합의의 도구로 쓰여질 수 있는 여러 알고리즘들이 존재합니다. 이를 조합하여 가장 효율적이고 이상적인 합의 알고리즘을 설계하는 것이 과제라고 볼 수 있습니다.


몰랐던 것

  • PBFT는 Hyperledger Fabric도 사용, 대체적으로 Private에서 많이 쓴다. 또한 20명 보다 적은 Validator(검증자)를 두는데 Tendermint는 100명의 Validator를 두는 것을 목표로 함.

  • 비트코인 코어에 치명적인 결함이 있었던 것. 그것이 블록 검증을 생략하고 위조된 트랜잭션을 등록할 수 있는, 블록체인의 뿌리를 송두리째 뽑을 수도 있는 문제였던 것.

  • 비트코인 코어는 검증 코드, 즉 블록 검증을 하기 위한 도구임.

  • 비트코인이 6개 블록 이상 fork되는 상황 지속 시 재단에서 강제로 두 개의 체인 중 하나의 체인으로 정하는 게 아니라 비트코인 커뮤니티에서 논의가 발생.

  • PAXOS 합의 알고리즘은 투표 Process에 관한 알고리즘.

  • Raft는PAXOS의 방식을 개량한 합의 알고리즘으로써 투표를 통해 선정된 Leader를 통해 의견을 제시하는 방법. Leader에게 모든 결정권이 있음.

  • PoW의 거래 검증과 블록 검증 방식의 검증 Checklist 존재.


잘못 생각했던 것

  • 검증 기준과 생성 기준에 대한 합의 알고리즘에 기반한 블록체인 내에서의 Checklist에 대해 몰랐을 뿐만 아니라, 간단히 코딩 및 프로그램만 돌리면 되는 줄 알았음. 어떤 기준에 의해 생태계가 형성되는지에 대해 놓친 부분이 아쉬움.


의외로 건진 것

  • 합의 알고리즘을 파다 보니 종류를 꽤나 많이 알게 됐음. 이에 대해 공부를 해볼 예정.
  • 일반적으로 우리는 블록체인에서의 Fork 된 체인들을 그냥 체인이 포크됐다고 표현하는데 Branch라고 표기할 수도 있음.




요즘 @rothbardianism님(이 분 너무 바빠서 저랑 같이 밥도 못 먹.. -> 신라는 네버..)과 같은 블록체인 학회에 들어가 재밌게, 또 열심히 공부하고 토론하고 있습니다. 그래서 그런지 부족한 제 자신이 더욱 더 잘보이는 것 같습니다.. 그런 제 자신의 한계를 극복하고자 블록체인 관련 지식을 넓혀가고 있습니다! 공부할 게 태산이네요.ㅠㅠ 그럼 여러분 다음에는 저희 학회에서 나왔던 주제에 대한 제 생각과 학회 토론에서 나온 얘기들을, 스스로 공부한 바탕으로 글을 적어보겠습니다! 안녕히 주무세요~ 꾸벅.

Sort:  

상당히 복잡하네요 ㅠㅠ 자주 봐줘야겠어요.;;

읽어주셔서 감사합니다!

Congratulations @sirin418! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of comments received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Presentamos el Ranking de SteemitBoard
Introducing SteemitBoard Ranking

Support SteemitBoard's project! Vote for its witness and get one more award!

그러게 ㅋㅋ 밥을 먹어야 하는데 기회를 못잡고 있군 ㅠㅠㅠㅠ

빨리 나에게 시간을 달라

moon0819님이 sirin418님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
moon0819님의 [18.10.10] 테라+야놀자! 빗썸 암호화폐 지수 공개! 다양한 합의 알고리즘들! 다양한 소식!

...
■ 읽어볼만한 글
블록체인의 합의 알고리즘에 대해서 공부해보자
https://steemit.com/kr/sirin418ap5jr
■ [일일 시황분석] 비트코인 1일봉이 매도세를 보이며 비트파이넥스에서 0.37% 하락한 6,6...

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.029
BTC 63706.08
ETH 2615.50
USDT 1.00
SBD 2.82