traders_free custom_top_html:no
default debug random = 2 / type = READ / detected = READ

경쟁적 합의 알고리즘에는 pow(Proof Of Work)와 pos(proof of stake)가 있습니다.

 

이들은 마치 100m 경주를 이어달리기 하는 것과 유사합니다.

일등을 하는 사람(노드)가 블럭을 생성합니다.

 

블럭이 생성된 후 다음 블럭을 찾으므로, 이어달리기를 무한 반복합니다.

비트코인의 경우 10분이고, 이더리움은 약 10초(?) 정도의 경주를 무한 반복하죠..

 

이들 경주자의 뛰는 능력은 pow의 경우 초당 해시 계산능력, 즉 계산능력에 비례하고, pos의 경우 지분에 비례합니다.

즉, 해시 계산능력인 월등하거나 지분이 많으면 경주에서 일등하기 쉽겠죠.

 

하지만, 해시능력이나 지분이 가장 많다고 경주에서 항상 일등을 하는 것은 아닙니다.

 

가장 작은 경주 능력을 가진 경주자도 일등을 하도록 만들었습니다.

(블럭 생성하는 노드가 랜덤하게 선정되도록 하기 위함입니다.)

 

예를 들면, pow 경주자는 모래주머니를 발에 차고 뜁니다.

 

pow의 경우는 거의 완전한 난수성을 가진 난수발생기인 해시함수를 사용합니다.

이 해시함수가 일종의 모래주머니 역할을 하고 이 때문에 경주할 때마다 모래주머니의 무게가 달라집니다. 물론 다음 주자가 이어 달리기를 할 때마다 모래 주머니의 무게가 달라집니다.

즉, 경주 능력이 제일 작은 선수도 해시함수의 거의 완전한 랜덤성에 의해서 '자신의 해시능력/전체 네트워크의 해시능력'의 비율로 일등을 할 가능성이 있습니다.

 

이제 pos의 경우는 특정 시간 후에 누가 가장 큰 수를 가졌는가를 겨루는 이어달리는 경주 같습니다.

이때 숫자는 지분 * 시간으로 정해지는 coinage로 정해집니다. (coinage의 공식은 각 코인마다 조금씩 다릅니다.)

 

지분은 전체 코인 수 중에서 지갑에 들어있는 코인의 수이고, 시간은 계속 증가를 합니다.

만일 coinage가 제일 큰 지갑이 블럭을 생성하면, 이 지갑은 시간이 제로로 세팅이 되어서 coinage는 다시 제로부터 시작을 합니다.

따라서 지분을 적게 가져도 오래 기다리면 결국에는 coinage가 가장 많아져서 지분이 가장 적은 지갑도 블럭을 생성할 수 있습니다.

 

이와 같은 경쟁적 합의 알고리즘의 네트워크 보안은 1) pow의 기계값 + 전기료, 2) pos의 지분 (이것을 '비용'이라고 하자)에 의해서 유지됩니다.

그 외에 누가 블럭을 생성할지를 랜덤하게 결정하는데 이것도 일정 부분 네트워크 보안에 기여를 합니다.

 

하지만, 이 랜덤성의 중요성은 '비용'보다 보안에 취약합니다.

즉, 해시능력 또는 지분의 51%를 가진자가 모든 것을 할 수 있습니다. (마치 주식회사의 주식과 비슷함.. )

이 경우 랜덤성이 거의 필요가 없습니다. 

이를 51%공격이라고 하죠..

 

----

그러면 비경쟁적 합의 알고리즘은 무엇일까요?

 

마치 '가위바위보' 게임과 비슷합니다.

대부분의 노드들이 모여서 가위바위보 게임을 일정한 시간(예로 10초)마다 계속하게 됩니다.

전체 노드가 모일 필요는 없고 다수의 노드가 모여서 게임을 하면 됩니다.

 

예로 매 10초마다 게임을 하게 된다면, 당시 게임에서 이긴 노드가 합의 알고리즘을 각각 만들게 됩니다.

 

제가 처음 비트코인의 pow 합의 알고리즘을 보고, 참 힘들게 게임을 한다고 생각했습니다.

 

그 당시 제 생각에는 비트코인의 pow 알고리즘은 어차피 다음 블럭 생성을 랜덤하게 하려는 게임인 것같이 보였는데,

왜 저렇게 전기를 많이 쓰고 해야 하나라는 생각이 처음 들었죠

 

하지만, 다수의 계정을 이용한 시빌 공격 때문에 랜덤하게 블럭을 생성하는 것만으로는 해킹을 막을 수 없다는 것을 나중에 알았죠.

 

비트코인의 pow 합의 알고리즘을 처음 이해했을 때, 제게 든 첫번째 생각은 노드들이 모여서 가위바위보를 하면 될 텐데 왜 저렇게 돈을 많이 들이면서 합의를 할까라는 것이었습니다.

 

어차피 '안전'하게 합의만 하면 될텐데...

(당시에는 '안전'은 '랜덤성', 즉 다음 블럭을 누가 생성할지 전혀 모르게 하는 것이라고 생각했죠)

 

그래서, 제가 처음 만든 합의 알고리즘의 제목이 'Proof of Randomness' 였습니다.

http://www.ddengle.com/bitcoindeveloper/889821 

 

물론 pow는 앞에서 언급한 '비용'이 네트워크 보안을 강화하죠..

 

하지만 pow 알고리즘은 비트코인 이전에 도스 또는 디도스 공격을 방어하기 위해서 공격자 pc에게 일정량의 계산을 시킴으로서 도스 공격을 완화시키기 위해서 만든 알고리즘이었죠.

 

이것이 비트코인의 합의 알고리즘으로 쓰인 이유는 그냥 사토시가 합의 알고리즘에 쓸 것을 찾다가 이미 잘 알려진 pow를 선택한 것이 아닌가라는 생각도 했습니다.

 

비경쟁적 합의 알고리즘의 장점은

1) 유효한 블럭체인이 두개 이상이 동시에 존재하는 포크가 생길 가능성이 거의 없습니다. (이것은 굉장한 이점입니다. 포크가 발생하면, 어느 블럭체인을 선택할지에 대한 투표 등을 해야 하는 경우가 발생합니다.)

2) 일정시간마다 컨펌이 이루어집니다.

 이에 반해서 경쟁적 합의 알고리즘은 평균적인 일정시간마다 컨펌이 이루어지도록 난이도를 조정하죠..

3) 경쟁을 하지 않으므로 컴퓨팅 능력을 많이 사용하지 않습니다. 정해진 규칙에 따라서 베팅이 이루어집니다.

4) 컨펌시간을 거의 네트워크의 지연시간(약 2초)로 줄일 수 있습니다. 가위바위보 게임만 하므로, 경쟁을 하는 시간이 필요가 없죠..

5) pow의 경우, 네트워크가 1TH라고 하면 1Tera번의 블럭을 생성해서 그 중 마지막 하나의 블럭이 유효한 블럭이 되는 것입니다.

(엄청난 비능률이죠.., 즉 1Tera번 블럭을 계산하고 그 중에서 마지막 하나를 선택하고 이전의 모든 계산은 버리는 것입니다.)

 

하지만, 이런 비경쟁적 합의 알고리즘도 '비용'문제를 생각하지 않으면, 해킹에 매우 취약합니다.

 

따라서 비경쟁적 합의 알고리즘도 pos를 기반으로 만들게 됩니다. 

해커가 '비용'을 지불하도록 하지 않으면, 다수계정에 의한 시빌 공격에 아주 취약합니다.

 

--

경쟁적 합의 알고리즘은 각자 알아서 경쟁을 하는 것입니다.

구체적으로 말하면, 제일 처음 유효한 블럭을 만든 노드가 그 블럭을 네트워크에 전파를 하면, 다른 노드들이 자체적으로 검증을 해서 맞으면 이 노드들은 다음 블럭을 찾게 됩니다.

즉 블럭을 전파받은 노드는 만약 그 블럭이 유효하다면, 다음에 다른 블럭에 도착해도 이를 무시합니다.

이 때문에 블럭체인이 두개 이상이 유효한 포크가 생길 수가 있습니다.

네트워크에 특정 문제가 있을 때 vote(투표)를 한다고 사토시의 논문에 나옵니다.

원칙은 1cpu, 1vote라고 나오죠..

 

(급하게 쓴 글이라서,, 좀.. 산만합니다. 그리고 저는 이쪽에 전문가가 아니기 때문에 다소 틀린 내용이 있을 수 있습니다.)

 

 

10

loum님의 서명

 

 
 
 
댓글 2
  • 아주쉽게 설명을 해주셨네요.
    (여기서 해시계산능력을 다른것으로 바꾸어도 되겠지요?...최저비용을 계산해내는 문제로 말입니다.)

    여기서 랜덤성은 정답을 풀어낸 노드들중에서 랜덤하게 선택한다는 것이죠?
  • ?
    @신피질

    '해시계산능력'는 블럭을 만드는 초당 계산능력을 말합니다.

    에로 해시계산 능력이 1MH/s이라면 1초에 10^6번의 블럭을 생성할 수 있는 계산능력을 가진 것을 말합니다.

    이체 가능 컨펌이라고 있죠..
    비트코인은 6컨펌이 지나면 블럭체인을 바꿀 수가 없습니다.

    따라서, 해커가 6번 연속으로 블럭을 만들면 해킹에 성공한 것입니다.
    이를 방지하기 위해서 블럭을 누가 만드는지 모르게, 즉 다음 블럭을 만들 노드를 완전 랜던하게 선택하는 것이 네트워크 보안에 필요합니다.
    이 때문에 다음 블럭을 만드는 노드가 최대한 랜덤하게 선택되도록 해야 합니다.

default debug random = 0 / type = READ / detected = READ

List of Articles
번호 제목 추천 수 조회 수 글쓴이 날짜
5315 코인원,빗섬 등에서 자기 비트코인 주소를 바꿀 수 있게 해주는 곳 있나요?    폴로닉스에서는 수신주소 변경이 지원 된다고 하던데 ( API로???),   국내 거래소 중    비밀키를  이메일로(보안??) 받아  자기 수신 주소를 바꿔주는   거래소가 있나 알고싶습니다... 0 1030
스머프1000
2016.10.23
5314 이더리움 저금통을 만들었습니다. (프로젝트 피그박스) 먹튀하는  pump & dump  코인 투자하지 마시고 이더리움 가지고 계세요.   어차피 이 생태계가 무르익으려면 시간이 조금 걸립니다.    그래서 입금하면 6개월간 이더리움을 못 빼는 돼지저금통을 만들었습니다. ... 12 12 4666
철학자
2016.10.23
5313 이더리움 옐로페이퍼를 잠깐 보고 든 생각.... 어제 잠깐 이더리움의 옐로페이퍼를 보았다. https://docs.google.com/viewer?url=http://gavwood.com/Paper.pdf   논문이고, 익숙하지 않은 부호들이 있어서, 처음에는 읽기가 좀 어려웠지만, 그래도 건성으로 듬성... 10 5 4656
loum
2016.10.21
5312 대쉬코인 이더가pos로바뀌고  난이도도  마니올라서  대쉬코인을 채굴해보려는데 혹시 대쉬코인 채굴하시는분계신가요  이더처럼  채굴장비가4웨이로 대당 백몇십만원하나요?채굴한다면10대기준 하루채굴량은 몇개정도나올까요... 4 0 2554
초보2
2016.10.20
5311 라이트코인 시아코인 지금 현재   라이트코인과 시아코인과 대쉬코인 그리고 모네로코인  z케쉬  시세아시는분계신가요 아무리 인터넷으로 찾아도 몇년전 시세만 나와있고 현시세는안나와있네요 아시는분 부탁좀드립니다 4 0 4314
초보2
2016.10.19
합의 알고리즘에 대한 쉬운 설명 경쟁적 합의 알고리즘에는 pow(Proof Of Work)와 pos(proof of stake)가 있습니다.   이들은 마치 100m 경주를 이어달리기 하는 것과 유사합니다. 일등을 하는 사람(노드)가 블럭을 생성합니다.   블럭이 생성된 후 ... 2 7 7720
loum
2016.10.18
5309 이더리움 하드포크 카운트다운 이더리움 하드포크 카운트다운을 볼 수 있는 사이트입니다.   https://fork.codetract.io/   Please upgrade your Ethereum client using the links below. Latest version of Ethereum Wallet/Mist (v0.8.6) Latest ... 18 9 4561
atomrigs
2016.10.18
5308 블록체인지갑 해킹 당한거 같아요 도와주세요.   이메일 로그인 신호 제가 한거보다 몇초 먼저 줘서 제가 그 해커한테 제 월렛을 열어주게됫고요   해킹해서 몇초만에 2비트 코인정도를 해킹 당했습니다.   승인이 1/3 중이엇는데 2/3으로 바꼇어요   이거 거래 돌... 22 0 3300
바이어
2016.10.17
5307 pos의 단점인 nothing at stake를 보고 든 생각... 검색을 통해서 casper방식의 pos에 대해서 방금 검색을 해보았습니다.   pos의 단점인 nothing at stake에 대해서 처음 보았습니다.   https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ http://www.ddengle... 1 5428
loum
2016.10.17
5306 이더리움 하드포크에 따른 코인원 ETH/ETC입출금 정지 안내 (오후 7시~)   안녕하세요. 코인원입니다. 이더리움 관련 중요한 공지라 땡글에도 같이 올립니다. 이전에 올린 공지에서 하드포크 블록수가 변경되어, 예정 일정이 변경되었습니다. 아래 저희 거래소 공지내용을 붙여드리니, 하드... 0 2455
Coinone
2016.10.17
5305 방금 폴로닉스에서도 NXT의 ARDOR 코인 거래 시작 Bittrex에 이어 폴로닉스에서 거래 시작되며 가격이 0.000025BTC에서 0.000035로 상승했네요. 1 0 1916
leftsword
2016.10.17
5304 [Coinone] $640 돌파: 위안화·파운드 약세에 치솟는 비트코인   10월 3주차 $640 돌파: 위안화·파운드 약세에 치솟는 비트코인   지난 11일(화) 비트코인은 최저가 $615.87에서 4% 이상 올라 3개월 만에 $640선을 돌파했습니다. 이후 아래로 소폭 밀린 후 지지선 635, 저항선 640... 1 file 4 1678
Coinone
2016.10.16
5303 이더리움 geth 하드포크 노트7 과 parity 이더리움 DoS 하드포크를 위한 새버저들이 출시되었습니다.   Geth 1.4.18 일명 노트 7   https://github.com/ethereum/go-ethereum/releases/tag/v1.4.18   패러티도 업데이트 되었습니다. 1.3.8   https://github.c... 3 3 2153
atomrigs
2016.10.16
5302 POLONIEX Dao extraBalance 는 언제쯤받을수있을까요?? POLONIEX Dao extraBalance 는 언제쯤받을수있을까요?? 아톰님의 소중한답변으로 한국거래소에서는 빠른 처리를 받을수있었는데요 폴로닉스에서는 아직 답변이없네요  티켓을 보내보기도했는데 답변이 무슨말인지 잘... 14 0 1883
디자이너
2016.10.15
5301 ETC 의 진로   이더리움 DOS 하드포크가 확정되고 최종 테스트작업이 계속 진행중입니다. 블럭하이트가 조금 뒤로 미루어졌습니다. 첫번째 하드포크 블럭번호가 2463000 입니다. 현재 이더리움 커뮤니티내에서는 이번 하드포크의... 9 file 12 4603
atomrigs
2016.10.15
5300 합의 알고리즘에 대한 개략 http://www.ddengle.com/blockchain/1433956 에 제가 답글로 쓴 합의 알고리즘에 대한 내용을 다시 올립니다.   --------------------------   스팀은 기본적으로 dpos방법을 사용합니다. 추가로, 개발자의 지분확보... 6 2 2383
loum
2016.10.15
5299 폴로닉스 인증서 문제 임시 해결방법... 인터넷 익스플로러   출처 : http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3608654 의 댓글중...   "인터넷 옵션 -> 고급 -> 보안 -> 서버의 인증서 해지 확인 을 체크 해제 후 익스창 다시 실행하면 되더군요........ 2 1 902
은빛늑대
2016.10.14
5298 인제 폴로닉스에서 Ardor 코인을 지급해줍니다 Nxt 지분 * 가지고있는 시간 대비해서 준다고합니다     2 file 0 1117
미리노니나니
2016.10.14
5297 이더리움의 단점에 대해서 알고 싶습니다. 저는 이더리움에 대해서, 잘 알지 못하고, 개략적이고, 부분적인 사항만 조금 알고 있습니다.   하지만, 이더리움의 현재의 단점에 대해서 토론이 없고, 이런 단점들이 어떻게 해결이 가능할지, 아니면, 해결이 힘들... 20 3 8501
loum
2016.10.14
5296 현재 드워프풀 테스트 중입니다 그런데 코인이 안들어오네요 ㅠ_ㅠ 마풀허를 주로 사용할 거지만 혹여 문제 대비해서 드워프 풀을 테스트 하며   클레이모어로 사용해서 듀얼로 캐고 있습니다.   해쉬는 확실히 나오느데 제 지갑을 코인원 지갑으로 우선 해둿는데 지갑에 안들어오네요... 3 0 1332
살려는주세요
2016.10.14
목록
Board Pagination Prev 1 ... 893 894 895 896 897 898 899 900 901 902 ... 1163 Next
/ 1163
default debug random = 0 / type = READ / detected = READ