합의시스템의 진화 - Finality(완결성)과 Fork
sct·@twinbraid·
0.000 HBD합의시스템의 진화 - Finality(완결성)과 Fork
 합의(consensus)는 분산체제에서 필수적인 과정입니다. 이에 대한 내용은 [🔗NOTHING AT STAKE (POS의 최대약점) 란?](https://steemit.com/kr/@twinbraid/nothing-at-stake-pos) 에서 다룬바가 있습니다. 이것을 더욱 요약하면 **거래기록의 통일을 위해 대표를 선출**하는 것입니다 탈중앙 분산은 중앙화와 달리 단일서버에 집중하지 않습니다. 은행사이트가 아니라 그냥 이웃집 찰스한테 접속해서 일을 처리해도 문제가 없죠. 매우 신박하지만 어딜 접속해도 된다는 것은 역으로 어딜 접속해도 반드시 같은 자료여야한다는 뜻입니다. 모두가 같은 자료를 가지는 가장 쉬운 방법은 아이러니하게도 중앙화입니다. 어느 하나의 중앙에 접속하여 그가 나눠주는 자료를 받으면 모두가 같은 자료를 가지게 되죠. 하지만 탈중앙 실컷 외쳐놓고 그거하면 도로아미타불이죠 그래서 선택한 것이 **'임시적 중앙'**의 선출입니다. 영구적 중앙이 아니라 매번 모든 이중에서 한명을 임시적 중앙으로 선출하고 자료를 나눠주게 하는 방법이 바로 '다수결 합의' 입니다. 그리고 가장 처음에 나온 방법이 POW (PROOF OF WORK) 노가다의 증명 입니다. 수학적 개노가다를 통해 (사실 수학도 아님) 매라운드 선착순 1등을 대표로 뽑는 것이죠. 초기에 나온 이방법은 천재적 발명으로 인정받긴했지만 여러모로 문제점도 많았습니다. 개노가다 경쟁을 위해 점점 고성능 컴터가 필요했고 전기낭비도 심해졌으며 발행과 동시에 완결성을 가지지 못해서 완결성을 획득하기까지 여러번 검증이 필요했습니다. 결국 엄청 느려졌죠. 완결성을 가지지 못하는 이유는 전세계의 분산된 곳들에서 시합을 펼치므로 1등이 미묘한 타이밍에 동시다발적으로 등장했을때 누가 젤 빨리 만들었는지 판별이 안되기 때문입니다. 스포츠를 보면 장소적으로 매우매우 근접한 시합장에서도 누가 먼저 들어왔는가등의 판정에 맨날 논란이 생깁니다  그런데 장거리 네트웤 상이라면 말할것도 없죠 예를들어 미국에서 1등이 나왔는데 그 소식이 미처 들어오기전에 중국에서 또다른 1등이 나왔다면 양국은 서로 자기네쪽에서 먼저 나왔다고 싸울것입니다. 그리고 절대 상대방걸 인정안하겠죠. 그렇게 싸우면 체인이 멈추게되니까 블록체인 프로그램은 이런식의 분쟁이 일어나도 서로를 무시하고 각자 1등이라고 여긴 블록을 독자적으로 쌓게 허용합니다. 그럼 서로간의 자료가 달라지게 되는거죠  이렇게 각자 갈길을 가는 것을 체인분리, FORK(분기점)이라고 합니다.  (과거 포크는 두개짜리가 대부분이었다고 하더군요) 자 근데 이렇게 갈라진채로 각자 가는게 계속 허용된다면 자료들은 수도 없이 갈라질겁니다. 그래서 포크가 일어나는것은 구조상 어쩔수 없지만 오래지속되지는 못하게 만들어놨습니다. 두개의 분리된 체인이 있다면 이들중 가장 긴 체인만을 인정하게 하는 것이죠. 체인은 블록을 쌓아서 길게 만들고 블록을 쌓는데는 컴퓨팅 파워가 필요합니다. 컴퓨팅 파워는 더 많은 이들이 참여시 강해지고요 결국 다수가 인정하고 참여하는 체인이 길게 될 것이며 이것이 결국 승리체인이 됩니다. 이렇게 두개의 체인이 경쟁할때 서로 같은 길이를 유지하는 팽팽한 접전이 될 가능성은 거의 없습니다. 대개 다음 블록을 먼저 만드는 쪽이 승리하고 끝나죠. 근데 확률상 아주 없는건 아닙니다. 다음번 블록에서도 서로 비슷한 시간에 만들어서 다시 무승부가 되는 수가 있습니다.  이렇게 연속으로 무승부가 될 확률을 비트코인에선 6번까지를 한계로 보고 7번의 무승부는 있을 수 없다고 규정합니다. 그래서 자신의 기록이 어느 체인에 들어간 이후 6번의 블록이 발행되었고 기록이 무사히 살아있다면 99.9999% 승리체인이라고 보고 Finality 판정을 내립니다. 이때 자신의 기록이 체인에 편입되는 시점을 1 Confirm 이라고 하며  비트코인의 경우 6 컨펌이 나면 뒤집을 수 없는 완결한 기록이라 인정받고 거래소등에서도 입금완료를 해주는 것이죠. 이것이 기존의 합의와 그에 따른 확률형 완결성입니다. 한편 사전 완결성의 경우는 당연히 합의과정부터 다르며 그에 따라 포크도 발생하지 않는 시스템입니다. 그에 대해선 또 
👍 hanir98, chronocrypto, eforucom, zugs, gamezine, minja, supu, xyzashu, laissez-faire, bluen, curastic, ezravandi, samotonakatoshi, curatoris, confirmed, idakarlsen, onyourmark, aleister, accelerator, olorin, designkoi, onehand, naha, dssdsds, hwan100, stylegold, carrotcake, mastertri, bramd, busy.pay, naha.sct, kview, vi1son, blockchainnomad, ryanhkr, cryptogee, familydoctor, atomicannie, dakeshi, yjs3694, leesongyi, eunsik, jkkim, steemitjp, molamola, molang, won0s, acehunter, wunderpa, twinbraid, arama, nounou, sct.cu15, btccurrency1, magical-salt, felixnam, insidebig, bystyx, relaxkim, ramires, pediatrics, nnaraoh, sct.cu1, bree1042, woo7739, sct.cu5, pys, jonghun98, ssm1810, nexgen, gosainkund, chungjh, floatinglin, gwoo, isi3, jisui, sintai, sct.cu16, zzings, futurecurrency, jhparksy, eversloth, khaiyoui, ksc, fhool, skan, kim0jh0, lonose, sct.cu8, card1001, vincentkang, hasobang, sct.cu17, tiffany4ever, lovelyyeon, brightmoon, shiho, dj-on-steem, son10001,