블록체인을 지탱하는 기술: 합의 알고리즘
사토시 나카모토가 창안한 비트코인에서 시작된 블록체인은 컴퓨터 과학 분야에 여러 기술들의 조화로 탄생한 기술입니다. 오늘은 블록체인을 지탱하는 기술 가운데 하나인 합의
알고리즘(일치된 의견을 도출하는 과정)를 간단히 다뤄보고자 합니다.
합의과정이 필요한 이유
먼저 블록체인 기술에 합의과정은 왜 필요할까요? 블록체인은 소위 우리가 장부(Ledger)라고 하는 일련의 정보를 네트워크에 참여한 모두가 동일하게 공유하는 것이 핵심입니다. 공개된 네트워크에 참여할 수 있다면 누구라도 자신의 컴퓨터(노드)를 통해서 다른 참여자와 똑같은 정보를 블록체인 형태로 갖게됩니다. 네트워크에 참여한 노드는 누구라도 블록체인에 포함할 새로운 정보를 제안할 수 있습니다. 네트워크에 소속된 누구라도 새로운 정보를 제안할 수 있다는 사실은 서로 다른 정보를 제안할 수 있다는 의미입니다. 이 때 우리는 누구의 정보를 블록체인에 포함시켜야 할 지 결정이 필요합니다. 바로 이 지점에서 의견을 하나로 모을 필요가 생깁니다.
우리가 합의를 이루는 방법
현실 사회에서 의견을 하나로 수렴하는 일은 언제나 피해갈 수 없습니다. 학창시절 반장 선거, 직장인의 점심메뉴, 심지어 프로듀스 101까지... 이렇게 합의가 필요한 때에 우리는 어떤 방식을 취할 수 있을까요? 일반적으로 다수결을 통해 다수의 의견을 취하거나 그렇지 않으면 권한을 가진 리더가 정한 의견을 선택합니다.
합의를 이루는 2가지 방법
- 투표를 통해서 다수의 의견을 채택
- 결정권자 혹은 리더의 의견을 채택
블록체인 세계의 합의
블록체인에서 노드가 제안하는 의견은 하나의 블록
이고 선택된 블록
이 블록체인에 포함되는 것이 블록체인을 지탱하는 합의 알고리즘입니다. 사실 블록체인 세계에서 합의를 이루는 방식도 우리가 일상에서 경험하는 2가지 방식과 크게 다르지 않습니다. 구체적으로 블록체인 안에서 어떻게 합의가 이뤄지는지 2가지 방식을 각각 살펴봅시다.
결정권자 혹은 리더의 의견 채택
먼저 특정한 노드의 블록을 채택하여 블록체인에 포함시키는 방식입니다. 블록체인 세상에 참여하는 노드간에는 현실 사회의 관계처럼 리더나 독재자 같은 존재는 없겠지요. 하지만 리더와 같은 역할을 할 노드를 선출하는 일은 가능합니다. 이 때 현실세계의 독재자처럼 악의적인 의견을 제안할 가능성으로부터 블록체인을 보호하기 위해 임의의 리더를 선출하는 일이 필요합니다. 블록체인에서는 이를 소위 작업증명(Proof of Work)
1이라는 방식을 통해서 구현하고 있습니다. 바로 비트코인이 PoW
라고 하는 작업증명 방식을 채택하고 있습니다.
투표를 통해서 다수의 의견을 채택
현실 세계의 민주주의와 같이 블록체인에서도 투표를 통해서 다수를 획득한 블록을 블록체인에 포함하는 방식을 사용할 수 있습니다. 투표에는 유권자가 있다면 블록체인 세상에서 유권자는 누가 될 수 있을까요? 공개된 네트워크에 누구나 참여할 수 있다는 점은 현실의 민주주의와 달리 명확하게 투표권을 부여할 기준이 없습니다. 대신 블록체인 세상에서는 지분증명(Proof of Stake)
이라는 방식을 통해서 유권자를 정의합니다. 이 방식은 민주주의 보다는 주식회사의 주주총회에 조금더 비슷하다고 할 수 있습니다. 블록체인을 운영하기 위한 인센티브로 제공되는 토큰
의 보유량을 기반으로 투표권을 갖는 방식이지요. 대표적으로 이더리움이 캐스퍼라는 프로토콜을 통해 현재 Pow
방식에서 PoS
로 전환하려고 하고 있습니다.
재미있는 부분이 하나 더 있습니다. 민주주의에도 고대 그리스 사회와 같은 직접 민주주의와 오늘날의 간접 민주주의가 있는 것처럼 유권자의 투표를 통해 위임된 노드 사이에서 다수결로 합의를 의루는 지분위임증명(Delegated Proof of Stake)
방식이란 것도 있습니다. DPoS
방식을 사용하는 블록체인으로 EOS
를 들 수 있습니다.
마치며
이상으로 블록체인을 지탱하는 기술 중 합의 알고리즘
을 현실 사회의 합의를 이루는 과정을 바탕으로 가볍게 다뤄 봤습니다. 오늘 이야기 하고 싶은 중요한 부분은 합의를 이루는 과정의 구현이 현실 사회의 역학과 무관하지 않다는 점입니다. 간략하게 정리하려다 보니 다소 과감하게 요약한 내용도 있습니다. 궁금한 내용이나 의견주실 내용이 있으면 부담없이 댓글로 알려주세요. 관심과 피드백은 언제나 환영입니다. 😀
1 작업증명의 구체적인 방법은 다른 글을 통해서 다뤄보도록 하겠습니다.
안녕? 난 가즈아 홍보 빌런이야. 내말을 한번 들어주지 않을래?
가즈아 태그는 반말하면서 편하게 놀자고 만든 태그야.
가즈아 태그의 원 의도는 이런거라구.
https://steemit.com/kr/@morning/4op4rt
그러니 반말을 하기 싫거나 반말 댓글을 원치 않으면 가즈아 태그를 삭제해주었으면해. 안그러면 댓글에서 존대와 반말이 섞여서 유저끼리 오해가 생기거든.
아예 반말로 놀려는 의도의 포스팅이라면 다른 태그를 삭제하고 가즈아 태그만 이용하는것도 좋겠지.
괜히 다른 태그로 들어온 사람들이 해당 포스팅 반말에 혼란을 겪을수도 있으니 말야.
그리고 이왕 반말하면서 가즈아 쓰는거라면
https://steemgazua.com/ 여기 들어와서 쓰는게 어때?
B급 정서 가득한 이모티콘과 익명채팅으로 도를 넘지 않는 막말을 즐길수 있어.
게다가 워드 프레스라서 스팀잇보다 아주 빠르지. 약간이지만 보팅도 기대할수 있다구.~
내가 댓글다는게 싫다면 뮤트해도 괜찮으니 즐거운 스팀 가즈아 하길 바래.
아직 2달된 스티미언이라 kr-gazua 태그 의도를 미쳐 몰랐네 ㅠ
취지에 적극 공감하고 다음 기회에는 제대로 kr-gazua를 사용해 볼게!! 알려줘서 고마워 :)
이 글에서는 태그를 삭제할게!
짱짱맨 호출에 출동했습니다!!
늘 감사합니다 :)
짱짱맨 흥하랏!
방식에 대한 재밌는 글이네요.오늘도 좋은 하루되세요.
글의 모티브는 오늘 회사에서 분산시스템을 오랫동안 연구하시는 교수님 강의에서 나왔어요.
강의 듣고 나서 제 방식으로 풀어서 써 본것이에요. ^^
오늘 하루 평안히 마무리하셔요!~
이야 대단하시네요. 블록체인기술이 회사에서도 많이 언급되나보네요
Congratulations @woojin.joe! You received a personal award!
Click here to view your Board
Congratulations @woojin.joe! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!