You are viewing a single comment's thread from:

RE: DPoS 비판에 대한 반론

in #coinkorea6 years ago (edited)

먼저 마지막 주장에서 잘못된 부분을 정정해드리자면 BP 또는 증인 수가 늘어나도 네트워크 속도는 동일합니다. 다만 네트워크 유지 비용이 비례해서 증가하게 됩니다. 또한 투표수를 줄이지 않는 근본적인 이유는 20인 중 한 명이라도 악의적인 증인이 들어오지 못하게 하기 위함입니다. BP나 증인들은 긴밀한 연결관계에 있기 때문에 적은 표로 상위 증인에 들게 된다면 보안위험이 발생할 수 있습니다. 물론 저도 증인 수를 늘리면 좋겠지만 적어도 네트워크 보안이 안정적으로 유지되고 효율적인 정도까지만 늘리는 것이 좋다는 입장입니다.

이 부분이 잘 이해가 안되네요. 우선 의문점은 두가지 입니다.

  1. 정말로 BP 또는 증인 수가 늘어나도 네트워크의 속도가 동일한게 맞나요?

노드의 수가 증가하게 되면 자연히 블록체인의 처리 속도가 감소하게 되는게 제가 기존의 알고있는 상식이여서요.
https://medium.com/loom-network/ethereum-will-be-the-backbone-of-the-new-internet-88718e08124f
이 글에선 이런 구문이 있죠.

So if you want the network to be sufficiently decentralized by having thousands of users running validators, the max number of transactions per second needs to be capped by what the average user’s PC and network speed can handle.

즉 탈중앙화와 처리속도는 tradeoff관계로 볼 수 있습니다.
글에서 주장하신 BP 수가 증가해도 처리량이 감소하지 않는다는 주장은 검증이 필요해보입니다. 과연 BP수가 몇천개가 되어도 여전히 같은 속도를 유지할수 있을까요? 단순히 네트워크 유지비용 때문에 BP수를 20으로 제한했다는 말은 설득력이 부족합니다. 네트워크 유지비용이 더 늘더라도, 지금과 같은 처리량에 탈중앙화 수준을 높일 수 있더라면 당연히 그렇게 하지않았을까요?

2 .두번째 질문은 이 부분에 대한 질문입니다.

또한 투표수를 줄이지 않는 근본적인 이유는 20인 중 한 명이라도 악의적인 증인이 들어오지 못하게 하기 위함입니다.

저는 애초에 합의 알고리즘의 설계과정에서 악의적인 노드가 있다고 가정해야 한다고 봅니다. 즉 설사 증인 또는 BP에 악의적인 노드가 여러개가 존재한다고 하더라도 저항성을 가져야된다는거죠.
투표라는 선출을 통해 이런 악의적인 노드가 증인으로 참가하지 못하게 된다면 정말 베스트지만, 항상 최악의 상황, worst case를 가정해야죠. 그런 의미에서 20명의 증인은 너무 작다고 보여집니다. 증인 몇개가 악의적인 노드일시에는 정말 취약해지는 것이 아닌가요?
당장은 투표가 잘되고, 증인도 공정하게 선출되고 있죠. 지금은요. 하지만 아직 문제가 발생하지 않은 것뿐, 잠재적인 위험이 크다고 생각됩니다.

Sort:  
  1. 각 개념을 정확히 파악하셔야 합니다. (1) BP 수와 블록 생성속도(원문에서의 네트워크 속도라 제가 이해한 바)는 관계가 없습니다. (2) BP 수와 네트워크 회선 속도 (언급하신 Loom 네트워크 글에서 network speed 부분)도 관계 없습니다. 이건 BP들이 어떤 물리적인 회선과 서버위치를 사용하느냐에 좌우됩니다. (3) 하지만 BP 수가 늘어나면 네트워크 "처리량"은 비례해서 증가합니다. 제가 위의 댓글에서도 언급했습니다. 각 BP가 서버 내에서 블록을 처리하는 속도와 해당 블록이 네트워크를 타고 다른 BP들에게 전파되는 속도가 블록타임보다 작아야 블록이 이어질 수 있습니다. 블록이 너무 커서 처리하는데 오래 걸리거나, 네트워크 전송에 오래 걸리면 블록생성에 실패하게 됩니다. 이것이 인용하신 글의 요지입니다.

  2. 이건 댄이 얘기한 글이 어딘가에 있을텐데요, 1인 1표일 경우 악의적인 BP가 20위 안에 들어올 확률이 높아지기 때문이라 합니다. “훌륭한” BP 몇명에게 표가 집중되면 상대적으로 한두명의 고래를 등에 업은 BP가 20위 안에 들어올 가능성이 커진다는거죠.
    또한 DPoS에서는 상위권에 들기만 하면 투표수와 관계없이 1/n의 블록생성 확률을 가지게 됩니다. 1위가 10만표 받고 20위가 5천표 받아도 동일하게 매 라운드당 한번씩 생성을 하는거죠. 만약 상위 증인이 100명이라면 1위와 100위의 차이는 더 커질 것입니다. 그리고 앞에서 말한 소수 고래를 등에 업은 증인이 더 많이 들어오고 그 중에는 악의적인 공격자가 포함될 여지도 커질 수 있습니다.

빠른 답변 감사합니다. 그런데 뭔가 챗바퀴가 도는 느낌이네요.
1번 답변의
(1) BP 수와 블록 생성속도는 관계가 없다라는 말과
(3) BP수가 늘어나면 네트워크의 "처리량"은 비례해서 증가한다.
이 두 주장이 동시에 참일 수가 있나요? 어떻게 블록은 일정한 주기로 생성되는데 처리량만 늘어나는 것이 가능하죠? BP가 늘어난다고 블록사이즈가 변경되는 것도 아닐텐데요
가장 흔히 쓰이는 지표인 TPS를 보면 TPS 는
TPS = (블록에 포함 되는 트랜잭션 수)/ (블록 생성 시간) 으로 볼 수 있죠.
트랜잭션 수가 블록의 최대 사이즈만큼 담긴다고 가정한다면, 여기서 TPS에 영향을 끼치는 변수는 블록생성시간이죠. 즉 (1)번에서 주장하신 것처럼 BP가 증가해도 블록생성속도가 일정하다면, 자연히 TPS는 BP가 늘어나도 그대로가 될텐데 왜 (3)번에선 처리량이 BP에 비례해서 증가했다고 말했는지 이해가가지않네요.

그리고 2번 질문에 대한 오해가 있으신데, 저는 애초에 악의적인 공격자가 BP가 되더라도 '저항성'을 갖고있어야한다고 주장했습니다. worst case로서요
사실 노드가 20개든 100개든, 악의적인 공격자가 BP의 10%가 되더라도 이중 지불 문제나 다른 공격들을 막을 수 있게 설계했어야됐다는게 제 주장이죠.
선거로만 악의적인 공격자를 걸러낼수 있다는 생각은 아주 위험한 발상이기도 하고요.
즉 이러한 '저항성'을 기르는 것은 탈중앙화의 level을 높이는 것에 해당하고
이는 처리량과 트레이드 오프 관계에 있죠. DPOS가 탈중앙화의 level을 낮춘 대신 처리량을 늘린 것인데 DPOS를 비판하는 사람들은 이게 잘못됐다고 주장하는 것이고요

1번은 아직 개념을 명확하게 구분하고 계시지 못한듯 합니다. 조금 더 알아보시고 이해가 안되는 부분을 다시 질문해주세요. 참고로 (3)의 네트워크 처리량은 블록체인에 처리하는 것이 아닙니다.

2번에서 저항성을 얘기하셨는데, 악의적인 BP를 떨궈낼 수 있는것도 저항성입니다. 굳이 악의적인 행위자를 허용하며 내성을 높일 필요는 없죠. 물론 DPoS에 악의적 BP가 상위로 들어온다고 해서 바로 블록체인이 망가지지는 않지만 잠재적 위험이 크기에 빠르게 배제하는 것이 좋습니다. 30표는 이런 맥락에서 나온거죠.

저는 이미 충분히 개념을 알고있습니다… 애초에 처리량을 서로 다른 개념으로 생각하고 있군요
보통 네트워크의 처리량이라고 해도 블록체인 네트워크의 Throughput 을 의미합니다. 초당 TPS가 대표적인 지표고요
Clayop님이 말하신 처리량은 사실 overhead 측면입니다. 보통 이런건 처리량이라고 표현하지않고 amplification 이라고 부르지않나요? 이 오버헤드가 커지면서 네트워크 비용도 커지는거고요

네 일반인이 이해하기엔 트래픽 정도의 개념이 비슷하겠네요. BP수와 관계없이 각 BP당 트래픽은 동일하겠지만, 전체 P2P 트래픽은 비례해서 변화합니다.

그리고 위의 TPS에 대해 커멘트를 드리자면 블록생성시간은 TPS에 큰 영향을 주지는 못합니다. 블록 서명 사이즈가 차지하는 블록 용량에서 비중이 매우 크다면 가능할 수도 있지만 10건의 트랜잭션을 5초 블록타임으로 나눠서 블록당 5건이 들어가건, 2초 블록으로 나눠서 블록당 2건이 들어가건 TPS는 1입니다.

네 tps에 대해 커멘트 주신부분은 이미알고있는 부분입니다. 다만 처리량에 대해 서로 다른 뜻으로 오해하고 있어서 나온 말이죠. 저는 tps를 예시로 들어, bp수의 증가가 tps가 증가로 이어지지않는다는 주장을 했을 뿐이고요. 이 부분은 서로 다른 뜻으로 같은 단어를 사용한 오해니 더이상 할말이 없습니다.

그럼 좀더 근본적인 질문을 하고 싶습니다. 지금 본 글에선 DPOS에 대해서만 중앙화 문제에 대해 지적하고 있다고 말하고 있습니다. POW도 채굴의 중앙화가 나타나는데 말이죠.

하지만 제 생각은 다릅니다. 제가 생각하는 중앙화는 블록생성 권한에 대한 중앙화입니다. 애초에 어떠한 노드든 채굴에 참여가능함으로써 모든 노드가 잠재적으로 "블록생성 권한"을 얻을 수 있는 비트코인과 달리, DPOS는 몇몇의 노드만이 "블록 생성 권한"을 얻는 것이 가능하죠. 이 것이 제가 생각하는 중앙화의 차이입니다. 어차피 비트코인도 큰 체굴 세력들만 블록생성이 가능하다고 변론할 수 있지만, 애초에 '채굴을 하지 못하는 것'과 '채굴할 가능성이 적은 것' 에 대한 차이는 명확하죠.

즉 탈중앙화 Level의 차이가 있습니다. 모든 노드에게 블록 생성권환을 주는 개방성, 또한 불순한 노드가 잠재적으로 "블록 생성권한"을 갖고있더라도 이중 지불에 대해 얼마나 저항성을 갖고 있는지에 대한 수준이죠 . 이 측면에서 보자면 DPOS는 PoW나 PoS계열에 비해 너무 떨어지는게 사실입니다.

탈중앙화 Level이 왜 중요하냐로 넘어가보죠.
다시 돌아가보자면 DPOS는 태생적인 위험성을 갖고있습니다. 다시 말하지만 저는 worst case를 먼저 생각해야 된다고 말씀드리고 싶습니다. 투표 지금 잘돌아가고 있죠. 좋습니다. 그런데 아직 잘돌아가고 있을 뿐이지 잠재적인 위험성을 내포하고 있죠.

비트코인과 스팀의 worst case를 비교하면 쉽게 나옵니다. 비트코인의 worst case는 악의적인 사용자가 전체 채굴파워 중 51%의 채굴파워을 얻는거죠. 반면 DPOS의 worst case는요? 21개의 BP 중 아마 3개의 BP만 악의적인 사용자가 되더라도 네트워크에 치명적이겠죠.

이 두가지의 worst case중 뭐가 더 달성하기 쉬운지는 말안해도 아실거라 봅니다. 즉 탈중앙화 수준의 차이가 이러한 worst case가 얼마나 발생하기 어려운가로 이어진다고 생각합니다. 그런의미에서 DPOS는 worst case발생이 더 쉬울수 있다로 주장할 수 있고요.

물론 비트코인 골드 같이 네트워크의 해쉬파워가 적다면 오히려 DPOS보다 POW계열이 더 취약할수도 있네요. 이 부분은 정량적인 비교가 필요할 것 같군요. 글쓰다보니 덕분에 좋은 논문주제가 생각났네요

PoW가 쏟아붓는 자원을 생각하면 아무래도 더 분권화되어있긴 하겠죠. 하지만 몇 가지 주지하고픈 사실들이 있습니다.

먼저 스팀의 경우에는 상위 20위가 아니어도 득표와 비례해서 블록생성을 할 권한을 가질 수 있습니다. 21번째 증인이라고 하죠. 그래서 DPoS가 상위 20위"만" 블록 권한을 갖는다고 말하면 틀린 것이 됩니다.

비트코인의 경우 누구나 잠재적인 블록생성 권한을 얻을 수 있는 것은 맞지만, 아주 적은 해시일 경우 블록생성을 거의 못합니다. 현재 해시가 45,000,000 TH/s인데 14TH/s인 개미 S9 한대만 가지고 채굴을 한다면 확률적으로는 60년에 한 블록을 채굴할 수 있습니다. 물론 그동안 해시가 늘지 않는다는 전제하에요.
이는 비트코인의 채굴 권한을 일부 채굴풀과 대형 채굴자가 독점하는 결과를 낳았습니다. 이론적으로는 누구나 채굴을 할 수 있지만 현실을 보면 그렇지 않다는 것이죠. DPoS도 이론적으로는 누구든지 BP가 되고 블록생성을 할 수 있습니다. 그리고 실제로 스팀의 증인목록은 꾸준히 변하고 있습니다 (에즈베어님이 20위에 든다면 보다 확실해지겠죠?)

좋은 논문 기대합니다 ^^

흥미로운 내용이네요, 잘 봤습니다.