안녕하세요. 코인예수 블록바입니다.
이번 글에서는 비잔틴 장군 문제에 대해 알아보도록 하겠습니다.
비잔틴 장군 문제
비잔틴 장군 문제는 합의 시스템에서 통신의 문제 혹은 악의적으로 정보를 변경시키는 행위에 대해
전체 시스템이 올바른 합의를 이룰 수 있는지를 고대 동로마 제국에 빗대어 표현한 것입니다.
예를들면,
비잔틴 장군들이 어떠한 지역을 공격한다고 할 때,
상대 군사력이 상당하여 일정 비율 이상의 군 병력이 동시에 그 지역을 공격해야 승리할 수 있습니다.
장군들 사이에 공격에 관한 사항은 암호화되고,
확인했다는 것을 사항 또한 암호화하여 기입 후 다음 장군에게 순차적으로 전달이 됩니다.
장군들 중에는 배신자가 한 명 섞여있는 상황입니다.
첫 번째 장군으로부터 공격에 관한 사항이 전달되기 시작하는데요,
이 메세지는 '금요일 오후 1시에 동시 침공하자!' 라는 내용이 암호화되어 전달 됩니다.
두 번째, 세 번째 장군도 역시 동일 내용을 암호화하여 전달을 하였고,
해당 전문은 드디어 배신자인 네 번째 장군에게 전달됩니다.
네 번째 장군은 해당 내용을 살짝 변조하는데요,
'금요일 새벽 1시에 동시 침공하자!'라는 내용으로 변조하여 다섯 번째 장군에게 전달합니다.
전문이 다섯 번째 장군에게 전달되었고, 다섯 번째 장군은 해당 전문을 해석하기 시작합니다.
해석 결과 이전의 전문들은 금요일 오후 1시에 침공 계획이었으나,
네 번째 장군이 해당 전문을 새벽 1시로 변조한 것을 발견합니다.
다섯번째 장군은 다음 장군들에게 '금요일 오후 1시에 동시 침공하자!'라는 내용을 전달하고,
결국 대다수의 장군들이 금요일 오후 1시에 적진을 침공하여 전투에서 승리합니다.
비트코인에서는 이러한 악의적인 정보 변경에 관한 비잔틴 장군 문제를
POW(작업증명방식)라는 증명 알고리즘을 통해서 해결합니다.
비트코인은 해시함수를 풀기 위해 채굴자들에 의해서 해시력이 투입됩니다.
이를 통해 해시 함수를 풀며 채굴자들(노드들)은 채굴을 합니다.
비트코인의 블록 생성주기가 10분인데요,
이 블록에는 비트코인의 체인상에서 이루어진 거래 정보가 담기게 되고
이 거래정보를 담은 블록은 계속 연결이 됩니다.
이러한 방식으로 이루어진 거래 정보들은 전체 블록체인이라는 연결망에 저장되며
연결되는 블록들은 노드들에 의해 끊임없이 검증을 받게 됩니다. (분산원장)
이렇듯, 거래 정보가 지속적으로 이어져 오고,
블록체인이라는 전체 연결망에 거래정보들을 저장함으로써
악의적인 정보 변경에 관한 비잔틴 장군 문제를 해결하려 하는 것입니다.
'블록체인은 신뢰할 수 있는 노드들에 의해 체인이 유지된다'라는 관점에서
가장 긴 체인이 신뢰할 수 있는 진짜 체인이 됩니다.
블록을 발견하는 채굴자에게는 비트코인이 보상으로 주어지기에 채굴자들이 채굴에 참여한다는 점은
다들 아실거라고 생각합니다 ^^
< 블록 연결 방식 - 숫자는 몇번째 블록인지를 나타내기 위해 적었음>
위의 사진과 같이 블록들이 계속 연결이 되어 거래 정보들이 체인상에 저장이 됩니다.
그럼 실제 사이트에서 어떻게 표시가 되는지 봐야겟죠?ㅎㅎ
<비트코인 블록 탐색기 - https://blockchain.info/ko/blocks>
위의 사진은 블록체인이라는 사이트인데요, 여기서 비트코인의 블록 정보들을 볼 수 있습니다.
제가 글을 쓰는 시간 기준으로520824번째 비트코인 블록이 채굴되었네요.
그러면 블록에 어떤 정보들이 담겨있는지 봐야겠죠? 해당 블록의 hash 를 눌러봤습니다.
이 블록에 담긴 거래 정보는 549 개의 거래 정보가 담겨있네요.
Slush Pool이란 곳에서 채굴을 했고 거래량이 얼마인지, 수수료가 얼마인지가 나오고
블록 보상이 12.5 BTC로 나오는 것을 보실 수 있습니다.
아래쪽에는 누가, 어디로, 얼마의 비트코인을 전송했는지 내역이 나오는군요 ^^
카카오 단톡방 : https://open.kakao.com/o/gtlP3PH
블록패치 블로그 : https://blog.naver.com/minstarshop
트위터 : https://twitter.com/DanieIKimcoin
유투브 : https://www.youtube.com/channel/UCBmM7nVhbTysFB2i1pDreSA
스팀잇 : https://steemit.com/@bitjesusblockba
네이버 카페 : https://cafe.naver.com/copanam