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

(내용 일부를 이해하기 좀 쉽게 고쳤습니다. )

----------

 

이더리움의 캐스퍼 알고리즘을 조금 읽어보았다.

 

https://github.com/ethereum/economic-modeling/tree/master/casper

 

pos의 가장 큰 문제점이 'Nothing at stake'라는 문제라는 것입니다.

 

'Nothing at stake'는 유효한 블럭체인이 두개 이상이 존재하는 포크(fork) 상황에서 어느 블럭체인이 유효한지를 validator가 투표(vote)를 하는데,
validator가 모든 블럭체인에 투표를 하는 것이 보상을 받을 확률을 높이기 때문에, 모든 블럭체인에 투표를 해서 유효한 하나의 블럭체인을 결정하지 못하는 상황이발생하는 것을 말합니다.

 

validator는 일반 노드와 달리, 일정한 코인을 출금할 수 없게 deposit 하고 포크상황에서 vote를 하는 노드입니다.

 

참조: https://docs.google.com/viewer?url=http://tendermint.com/docs/tendermint.pdf 

 

'Nothing at stake'를 해결하기 위해서, Tendermint 코인은 'shashing' 알고리즘으로 validator가 두개의 블럭체인 이상에서 투표를 하면 deposit한 코인을 빼앗는 방법을 사용합니다.

 

이더리움의 캐스퍼 알고리즘은 consensus-by-bet이라는 방법으로 정답을 맞춘( 다음 블럭체인에 투표한) validator에게 보상을 주고, 틀린 validator에게서 예금(deposit)한 코인을 빼앗는 방법을 사용합니다.


---

여기서 생각해볼 것은 현재의 pow, pos 알고리즘의 동작 방법입니다.

 

이들은 어떤 조건(pow은 target)값 이상일 때 블럭을 생성하여 네트워크에 블럭을 전파(broadcast)하고, 다른 노드는 이 블럭을 검증하여 검증을 통과하면 다음 블럭을 찾는 경쟁 합의 알고리즘 때문에 발생하는 문제입니다.


이런 pow, pos의 블럭찾기 경쟁은 노드가 전파된 블럭의 검증을 만족하면, 노드가 바로 다음 블럭을 찾는 방법을 사용하기 때문에 이를 '단독 결정'이라고 정하겠습니다.


포크가 발생하는 주원인은 "블럭을 전파받은 노드가 이 블럭을 검증하여 검증을 통과하면, 이 노드가 바로 다음 블럭을 찾는 단독 결정 알고리즘" 때문에 발생합니다.

 

즉, 각각의 노드가 독자적으로 판단하여 일정 조건을 충족하기만 하면, 무조건 다음 블럭을 찾는 것에 문제가 있는 것입니다.

 

그리고, 다수의 블럭체인이 동시에 생기는 포크 상황은 "네트워크의 전파 지연시간 때문에 발생을 합니다. 아시아에서 북미 등으로 데이터를 전파를 하면 네트워크 전파시간은 약 2초 이상이 걸리고 있습니다.

 

즉, '네트워크 전파 지연시간' + '단독 결정'이 블럭체인에서 포크를 발생시키는 원인입니다.

 

그렇다면, 이와 같이 포크가 생기는 핵심 알고리즘을 바꾸어 포크가 생기지 않도록 하는 합의 알고리즘을 만든 것이 해결방법이 될 것입니다.

 

그러면, dpos 합의 알고리즘을 살펴보겠습니다.

dpos는 일정한 증인 그룹을 만들고 이들 사이에 경쟁을 하는 그룹 안에서 각 노드가 '단독 결정'을 하는 방법입니다. 
(비트쉐어의 경우, 몇시간에 한번씩 증인그룹을 다시 구성하고, 컨펌은 약 3초 정도입니다.)


예로, 만일 dpos의 경우 100명의 증인 그룹을 만든다면, 이들이 서로 coinage 경쟁(?)을 하여 누가 블럭을 만들지를 경쟁합니다.
이런 경쟁은 경쟁자가 적기 때문에 포크가 생길 확률도 상당히 줄일 수 있습니다,

 

하지만, dpos에서 'Nothing at stake'가 문제가 되었다는 글을 읽었는데요.. 


따라서, 포크가 생기는 문제는 해결하기 힘듭니다.


---

포크가 생기는 문제점은 


1) 노드들이 전파된 검증을 통과하면, 노드가 바로 다음 블럭을 찾는는 '단독 결정', 즉 노드 단독에 의한 결정으로 바로 다음 블럭을 찾는 경쟁 방법 때문에 생깁니다.

그렇다면, 해결 방법도 다양하게 마련할 수 있습니다.


잠깐 생각나는 해결방법:


1) '단독 결정'을 없애자..

 1.1) 개발자가 운영하는 검증노드를 만들고, 검증노드에서 네트워크로 전파된 블럭을 일정시간 동안 모아서 최종적인 블럭을 다시 네트워크에 전파하면 모든 노드가 이 블럭의 다음 블럭을 찾는다.

 

  • 단점: 집중화로 보인다라고 공격받을 수 있음. 블럭을 모으는 시간으로 컨펌시간이 좀 길어질 수 있다.
  • 포크 상황을 막기위한 검증노드 방법의 구현은 다양하게 만들 수 있고, 위 예는 한가지 방법에 불과합니다.

 

  • 한가지 예로서, 검증노드가 일정시간 동안 모인 블럭을 모두 모아서 모든 블럭의 블럭해시값을 해시함수에 적용하여 기준 해시값을 만들고, 기준 해시값에 가장 가까운 블럭해시값을 가진 블럭이 우승자가 되어 다음 블럭을 생성하는 시스템입니다.

'단독 결정'을 없애는 방법은 위 방법 말고도 더 좋은 방법이 있을 것입니다.


2) 이더리움과 같이 계정정보(state)를 이용하여 누가 블럭을 생성할지 각각의 노드들이 바로 알게 하자


이런 방법은 이전에 제가 제안했던 비경쟁적 합의 알고리즘에 해당합니다.


기본적인 방법은 각 노드는 모든 계정의 코인량을 모두 알고 있어서, 
이 코인량과 램덤화할 수 있는 다른 조건을 결합하여 다음 블럭을 누가 만들지를 모든 노드가 바로 알 수 있게 하는 방법입니다.

 

http://www.ddengle.com/bitcoindeveloper/985327
https://steemit.com/kr/@loum/5gc6kw

 

(제가 아직도 이해하지 못하는 것이 있을 수 있습니다. 따라서 위 글은 추측성 내용이 포함되었을 수 있습니다.)

3

loum님의 서명

 

 
 
 
댓글 4
  • 비경쟁개념이 각 노드가 다음 블럭을 생성할 노드가 누구인지를 미리 알게하는 것이라면, 캐스퍼도 이미 그런 로직이 들어 있습니다.
    매 블럭마다 어느 노드가 블럭을 생성해야 할지 리얼타임으로 경쟁하지 않습니다.
    에포크 마다 (그러니까 하루에 약 2번) 다음번 에포크에서 블럭 생성을 담당할 validator 를 미리 뽑습니다. 현재 스펙상으로는 샤드당 100개의 validator 를 뽑습니다. 그러니까 하나의 에포크가 시작되면, 이미 누가 블럭을 생성할지 알고 있는 상태이고, 다만 해당 노드가 블럭 생성을 정해진 시간안에 안하면 스킵합니다.
    그렇다면 노드간의 경쟁은 에포크가 시작하기 전에 이미 끝난 것이지요.

    캐스퍼와 dpos 와의 가장 큰 차이점은, 노드선정 알고리듬과 bond deposit 여부가 될 것 같습니다.
  • ?
    @atomrigs

    항상 좋은 정보 감사합니다.
    그런 면에서 존경하고요..

    본문에 설명이 다소 부족한 부분은 본문에 굵은 글씨로 추가했습니다.

    조금 더 설명드리자면,
    본인의 방법은 validator를 통하는 방법이 아니고, 블럭이 전파되어 오면, 지갑 자체가 계정 db를 가지고 있어서 모든 지갑의 코인수 및 랜덤화할 수 있는 조건을 결합하여서, 모든 지갑이 바로 누가 다음 블럭을 찾아야 하는지 알 수 있도록 한 것입니다.

     

    그리고, 위 설명은 제가 구체적으로 이해가 안가는데요..
    혹시 위 정보에 대한 링크나 좀 더 구체적으로 말씀해주셔면 좋겠습니다.

     

    epoch가 시작되면, 블럭이 전파된 후 validator가 다음 블럭을 생성할 지갑을 선정한다는 것인지 아니면, 다른 방법인지 모르겠습니다.

     

    정보를 주셔서 감사합니다.

  • @loum
    At the start of every epoch, a random VALIDATORS_PER_SHARD validators are selected for each shard, and are assigned as validators for that shard for the next epoch (ie. the validators for epoch n+1 are assigned at the start of epoch n). getValidator(skips), when called to determine the validator within one of these shards, simply picks randomly (with an even distribution, as the deposit-size weighting was already done at selection time) from one of the selected validators.

    http://vitalik.ca/files/mauve_paper.html

    validator 는 블럭을 생성하는 노드입니다.
    한 에포크가 시작하기 전에 다음번 에포크에서 각 샤드마다 블럭을 생성할 노드를 미리 다 결정한 다음, 이 노드리스트를 미리 어나운스 해놓는 것입니다. 그래서 새 에포크가 시작되면, 이 순서에 따라 블럭을 생성합니다.
  • ?
    @atomrigs
    항상 답변 감사합니다..
    이런 정성을 보면, 내공이 대단하신 분임을 느낍니다.
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 제목 추천 수 조회 수 글쓴이 날짜
6115 거래소 레벨4 단타쟁이였습니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 6 2 2798
모방랑자
2017.06.13
6114 국내 거래소 이더 폭락중이네요 무섭네요 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 7 0 3956
데몰리션
2017.06.13
6113 6월 14일 이더 발표 연기됐다는데... 사실입니까? *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 8 0 3842
무표정으로
2017.06.13
6112 XRP에 관한 관망은 어떤지요? 모 거래소 보니   500원 이상찍고 내려 왔던데   현재는 300원 전후에서 거래가 이뤄지고 있습니다   300원 100개 = 3만원   300원 1000개 = 30만원   1이더 팔고 1000정도 XRP 구입해서   묻어 두면 어떨까 싶어요 ... 15 0 3268
카오린
2017.06.13
6111 폴로닉스 이더리움 전송 지연 폴로닉스에서 개인지갑 jaxx, myetherwallet 로 각각 이더리움을 보냈는데 폴로닉스 거래목록에 송금 완료 되어 있으나, 개인지갑으로 10시간째 들어오지 않고 있습니다. ICO 과열로 이더리움 거래 폭주가 원인인지..... 5 0 2512
dualcoin
2017.06.13
6110 거래소에 거래후 코인 안전하게 보관할수있는 곳있나요? *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 3 0 2226
순돌이아버지
2017.06.13
6109 코인 가격예측 프로그램 ㅋ *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 6 file 0 2964
피터킴
2017.06.13
6108 Bancor ICO *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 6 0 1844
1sang
2017.06.13
6107 [Coinone] 이더(ETH) 40만 원 돌파, 올해들어 3,000% 초고속 상승세 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 2 file 1 2291
Coinone
2017.06.12
6106 현재 비트코인 폭락 / 이더 급상승 사유 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 10 1 4808
토마스123
2017.06.12
6105 빗썸 안녕~ *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 13 1 3203
호호랑이
2017.06.12
6104 빗썸, 코인원 븅신 사이트 터졌음... *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 15 2 3264
날아라태권V
2017.06.12
6103 빗썸 다운. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 5 0 1477
무표정으로
2017.06.12
6102 폴로닉스 출금이 1주일째 awaiting approval 상태입니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 9 0 2886
Yohha
2017.06.12
6101 이더 50만원이 눈앞으로.... *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 9 0 2740
다크핑거
2017.06.12
6100 해외 이더리움 시세 잘나오는거 사이트 뭐가 있을까요 ? 중국이나 해외실시간 이더시세 변동 확인 가능한 사이트 뭐뭐가 있을까요 ?   아시는분 수고스럽겠지만 조금만 공유 부탁드립니다 ㅠ_ㅠ   1 0 1397
킹킹킹킹킹킹
2017.06.12
6099 이더 미쳤는데요..?   진심 채굴기 반쯤 팔고 코인 살까 생각중입니다.   44.5라니.. 곧 45 찍겠네요..크허엉..   18 1 2748
류류류
2017.06.12
6098 빗썸에 휴면계정 전환으로 물려보신 분 계신가요? ㅠㅠ   작년 본격적으로 시험준비에 들어가기 전에 장기투자 목적으로 코인을 묻어뒀다가 최근에 시험에서 해방+취직한 사람입니다. 땡글 눈팅으로 코인 압류(?) 당할 수 있다는 글을 보고 서둘러 빗썸에 가서 확인, 코인 ... 0 1880
우사짱
2017.06.12
6097 이더 비트대비 20%가격 가겠네요. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 3 0 1646
무표정으로
2017.06.12
6096 이더가 또다시 사상 최고가를 경신했습니다. 역시 화끈하게 올라주네요.   채굴자/트레이더 모두 모두 행복한 시간이네요...ㅎㅎㅎ 그런데, 코인원 서버가 버텨 주는거 보니 서버를 대대적으로 증설하기는 했나 봅니다. 시장가 마구마구 던지는데도 끄덕없네요. ... 40 1 2499
꿀맨
2017.06.12
목록
Board Pagination Prev 1 ... 853 854 855 856 857 858 859 860 861 862 ... 1163 Next
/ 1163
default debug random = 0 / type = READ / detected = READ