가상화폐 #1 - 합의 문제(Consensus Problem), 합의 알고리즘
가상화폐 기술에 대하여 학습하고, 블록체인 기술에 대하여 관심이 많은 개발자입니다.
블록체인 기술에 대하여 학습하고 학습한 내용을 정리하여 스팀잇에 포스팅을 진행하면 좋을 것 같아 포스팅을 시작하게 되었습니다.
탈중앙화 Application(DApp)
백엔드가 탈중앙화된 피어 투 피어(Peer-to-Peer) 네트워크에서 동작.
소스가 오픈 소스인 일종의 인터넷 애플리케이션.
어떠한 단일 노드도 탈중앙화 애플리케이션(DApp)에 대한 제어권을 가질 수 없음.
DApp은 기본적으로 피어 투 피어 네트워크에서 동작하기 때문에 인터넷에 연결된 어떤 컴퓨터라도 피어가 될 수있으므로 애플리케이션 데이터를 잘못된 값으로 변경하거나 다른 피어들과 올바르지 않은 정보를 공유하는 피어를 찾아내고 방지하는 것이 큰 도전 과제입니다.
피어가 발행한 정보가 올바른지 검증하기 위한 방법이 일종의 합의 프로토콜, 합의 알고리즘 입니다.
여기서 이야기하는 합의 프로토콜, 합의 알고리즘은 P2P 네트워크(분산시스템)의 신뢰도를 보장하기 위해서 나온 알고리즘이며, 합의 문제는 블록체인 나오기 전부터 존재하던 개념입니다.
그럼 가장먼저 합의 문제에 대해 간략하게 알아보도록 하겠습니다.
합의 문제(Consensus Problem)
P2P 네트워크와 같이 정보 도달에 시간차가 있는 네트워크에서 참가자가 하나의 결과에 대한 합의를 얻기 위한 알고리즘입니다.
예를 들어 분산 컴퓨팅으로 이루어진 비행기 예매 시스템에 합의 알고리즘이 없다고 가정해봅시다.
손님 A와 손님 B가 같은 자리 a를 동시에 예매했을 경우 합의 알고리즘이 없다면 들어온 시스템에 따라 자리 a를 예매한 사람이 달라지게 됩니다.
이런 시스템 오류와 무결성을 보장하기 위하여 합의 문제를 해결하는 합의 알고리즘이 생겨났습니다.
블록체인 합의 문제
전 재산 1,000원을 가지고 있는 A가 B와 C에게 동시에 1,000원을 송금한다는 메시지를 보냈을 경우 블록체인 시스템에서 합의를 하지 못하면 큰 문제가 생길 수 있습니다.
블록체인에서 합의 알고리즘이란 쉽게 말해 블록체인 상에서 의사결정 방식을 의미합니다.
블록체인 위에서 어떤 블록을 '진짜'로 판단할 것인지.
예를 들어 A, B 채굴자가 동시에 블록을 생성했다면, 어느 블록이 진짜 블록이라고 부를 수 있을까?
만약 중앙집권적인 기관이었다면 전부 통제가 가능하기 때문에 두 개의 블록이 생성되지 않았을 뿐만 아니라 설사 생성된다 하더라도, 블록체인을 운영하는 중앙기구에서 어떤 블록이 진짜인지 선택하면 문제는 해결됩니다.
하지만 탈 중앙화된 블록체인에서는 해당 의사결정을 해 줄 사람이 없기 때문에 이를 결정할 어떤 과정이 필요한 것입니다. 이때 등장한 것이 바로 합의 알고리즘이라고 생각하시면 되겠습니다.
블록체인 기술에서 대표적으로 사용하는 합의 알고리즘에는 비트코엔이서 사용되는 PoW(Proof of Work), 이더리움이 지향하려고 하는 PoS(Proof of Stake), EOS에서 사용되는 DPoS(Delegated Proof of Stake)등이 있습니다.
추후 PoW, PoS, DPoS와 같은 합의 알고리즘의 종류에 대하여 심도있게 다룰 예정입니다.
이러한 내용을 심도 있게 다루기 위해서 다음 포스팅에서는 해시(Hash)에 대해 알아보도록 하겠습니다.
해시에 대한 개념은 블록구조를 이해하기 위해서도 필수적으로 알고 있어야 하는 개념입니다.
긴글 읽어주셔서 감사합니다!
다음편 보기 / #2 - 해시함수란 무엇인가?
(https://steemit.com/kr/@yahweh87/2)
깜박하고 참고 했던 사이트 정보를 누락하였네요!!
[자료 출처]
https://blog.theloop.co.kr/category/%ED%95%A9%EC%9D%98/
https://blog.naver.com/zeigal/221189671484
https://bismart.com/en/best-text-analytics-systems/
아이리포 - 블록체인 합의 알고리즘 편
보팅!
환영합니다~팔로우 하겠습니다 ^^ 스팀잇 가입과 알아 두셔야 할점들 간단하게^^
일단 1.팔로우먼저50-100명한다2.그리고 글을쓴다(이전에 글 써봐야 잘 노출이 안된다)3.보팅은하루에10~15 회정도만보팅 80%유지 4.다른사람 보팅 할때는 30분이상 지난 글에 보팅을 한다( 바로하면 보팅수익없음)5.제목 오른쪽에 온천 표시 안 나오도록, 1스팀이 1USD 이상일 때 보상은 50:50으로 설정6.댓글소통을 많이하라 스팀잇을누벼라~!!
넵 감사합니다. 즐거운 스팀잇하세요~
네네 ^^
좋은글 리스팀 해요~앞으로도 잘부탁드립니다.
넵 감사합니다~ 앞으로 잘 부탁드립니다!
블록체인 기술을 잘 알고 싶으신 분들은 yahweh87님을 꼭 팔로우 해야겠네요! @홍보해
감사합니다~ 앞으로 좋은포스팅 하겠습니다!!
감사합니다!!
좋은글 잘읽고 갑니다^^ 반가워욤 팔로우할께요^.^
네~ 반가워요~ 저도 방문한번 하겠습니다! ㅎㅎ
쉬운 설명 감사합니다. 많은 도움이 되네요. 팔로우 하고 갑니다.^^
맞팔했습니다ㅎㅎ
팔로하며 많이 배우겠습니다.
맞팔 환영입니다!! ^^
아직까지 잘보는중이에요 ㅋㅋ
오오오오 좋은 글이네요!! 블록체인을 체험하러 가입했는데 블록체인 공부까지 하다니 :) 팔로우하고 꼭꼭 챙겨볼게요
도움이 될 수 있다니 뿌듯하네요~ 즐거운 스티밋하세요!!^^;