traders_free custom_top_html:no
default debug random = 0 / 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
번호 제목 추천 수 조회 수 글쓴이 날짜
5559 가치편 : 이더리움 토큰이 다가온다 - NEXIUM (3) *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 6 file 9 4320
양큰
2017.02.23
5558 이더리움 지갑 백업 질문드려요~ *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 0 1136
lovignkin
2017.02.23
5557 이더리움 지갑 다운받는 방법 좀 알려주세요. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 2 0 1207
딩가딩
2017.02.22
5556 안전한 지갑 관리법! *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 0 1179
sky빌
2017.02.22
5555 이더리움 질문드려봅니다.. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 7 file 0 1259
dnskdy
2017.02.22
5554 코인 거래소 보안 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 3 0 1445
묭묭
2017.02.22
5553 비트코인 거래 사기에 관하여 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 9 0 2716
이온음료
2017.02.21
5552 가치편 : 이더리움 토큰이 다가온다 - NEXIUM (2) *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 34 file 15 5992
양큰
2017.02.21
5551 비트코인 분석에 대해 질문드립니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 2 0 819
Vaultboy
2017.02.21
5550 코스모스의 atom 총 발행량이 궁금합니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 4 0 6898
ilst7760
2017.02.21
5549 비트코인 전송이 느려졌어요 전에는 15분이면 1승인 떴었는데 지금은 보낸지 5시간이 지나도 미승인 거래라고 나오네요 전송 수수료는 0.0002 코인(200원정도)으로 했어요 3 0 1613
dongsig
2017.02.21
5548 비트코인 송금 수수료에대한 질문 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 5 0 3222
비트콩
2017.02.20
5547 ... ... 1 0 1030
YouareTheGod
2017.02.20
5546 가치편 : 이더리움 토큰이 다가온다 - NEXIUM (1) *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 27 file 14 8169
양큰
2017.02.20
5545 바이트볼에 관심이 있습니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 0 1521
구도일
2017.02.20
5544 저한테 비트코인을 보내거나 제가 상대방에게 비트코인을 보낼때 아이피를 알 수 있습니까? 비트코인 개인지갑간 거래시에   상대방이 나에게 준 비트코인의 발신지 IP    혹은 제가 상대방에게 준 비트코인에 대하여 제 IP를 확인할 수 있습니까?   주고 받았다는 증거확인을 위해서 질문드리는 것입니다.   ... 1 0 1371
라이트러브
2017.02.19
5543 zcoin 중간거래소 괜찬은데부탁드립니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 1 0 1687
comlike
2017.02.18
5542 이더리움 네임서비스 (ENS) - 3월 14일 메인넷 론칭 이더리움 지갑주소나 컨트랙트 주소를 서로 보내거나 기억하기가 매우 힘들죠? 인터넷에서 ip 주소 대신 google.com 같은 기억하기 쉬운 이름으로 바꾸어서 사용하듯이 이더리움에서도 헥스주소를 임의의 이름으로 바... 7 file 11 5381
atomrigs
2017.02.18
5541 이더리움 챠트 *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.   ------------------------------------------------------------... 12 file 7 4691
나빌래라
2017.02.18
5540 비탈릭의 cryptoeconomics 소개 비탈릭이 파리에서 진행중인 이더리움 유럽 개발자모임 (EDCON) 에서 발제한 cryptoeconomics 자료입니다.   http://vitalik.ca/files/intro_cryptoeconomics.pdf   비트코인의 PoW 와 이더리움의 PoS 에 대한 재미있... file 8 2657
atomrigs
2017.02.18
목록
Board Pagination Prev 1 ... 853 854 855 856 857 858 859 860 861 862 ... 1135 Next
/ 1135
default debug random = 0 / type = READ / detected = READ