검색을 통해서 casper방식의 pos에 대해서 방금 검색을 해보았습니다.
pos의 단점인 nothing at stake에 대해서 처음 보았습니다.
https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ
http://www.ddengle.com/index.php?mid=bitcoinqna&document_srl=1222923&rnd=1436738#comment_1436738
그런데, 위 단점의 핵심에는 pos에서 "경쟁"을 하기 때문에 발생하는 것입니다..
캐스퍼는 이 문제를 해결하기 위해서 포크된 블럭체인 모두에게 투표를 하는 노드에게 손해를 주는 방법으로 해결을 합니다.
(사토시의 비트코인 논문을 보면, 블럭체인에 문제(포크 상황일 때로 추측)가 있을 때 투표(vote)를 하는데, 1cpu, 1vote라고 적고 있습니다.)
포크가 된 블럭체인이 동시에 두개가 있을 경우 노드가 두 블럭체인 모두에 투표를 해서 두 블럭체인 중에 어느 것이 이기든지 블럭생성을 통해서 이익을 보려는 행위 때문입니다.
이더리움의 이런 해결 방법은 효과가 있을 것입니다.
하지만, 이런 현상이 생기는 원인은 pos가 '블럭을 누가 빨리 찾는냐'를 경쟁하기 때문에 생기는 문제 입니다.
즉, 두개 이상의 유효한 블럭체인이 동시에 존해하는 포크(fork)라는 상황은 노드가 서로 경쟁을 하기 때문입니다.
그렇다면, 경쟁을 하지 않고, 다수의 노드가 합의해서 누가 블럭을 생성할지 정하는 합의 알고리즘이라면, 포크가 생기기는 힘든 상황이 됩니다.
제가 몇번 제안했던 비경쟁 pos 합의 알고리즘이 이런 특성을 지닙니다.
---
비경쟁 pos읠 실제 예를 들면, 비트쉐어의 dpos가 있습니다.
dpos의 경우도, 지분 + 추천을 통해서 블럭을 생성할 증인그룹을 미리 정합니다.
스팀의 경우 약 3초가 컨펌 시간으로 알고 있는데요..
이렇게 정해진 증인 그룹이 정해진 순서(물론 이들이 랜덤 방식으로도 가능함)로 블럭을 생성하면,
컨펌시간을 네트워크 지연 시간에 거의 가깝게 컨펌이 가능한 이점이 있습니다.
왜냐면, 누가 블럭을 생성할 것인지에 대해서 컴퓨팅 파워를 거의 사용할 필요가 없기 때문입니다.
증인 그룹은 예로 약 100개로 정할 수도 있고, 또한 예로 2시간마다 새로운 증인 그룹을 정할 수 있습니다.
물론 컨펌시간은 5초정도로 하고요...
---
제가 제안했던 합의 알고리즘은 기본적으로 비경쟁 방식의 pos이었습니다.
https://drive.google.com/file/d/0B5hmGlVuh8KZUzJGdDJ2bVNwSE0/view
https://steemit.com/kr/@loum/5gc6kw
물론 dpos의 가장 강점은 컴펌 그룹을 만들고 이들이 몇시간 동안 컴펌을 한 후 다시 새로운 컨펌 그룹을 만드는 것입니다.
이때 블럭의 컨펌 시간은 2~5초로 할 수 있습니다.
쉬운 비경쟁의 합의 알고리즘을 만든다면,
dpos의 증인을 선정하는 방법을 기존의 dpos와 다르게 하는 것입니다.
이를 구현하는 방법은 아주 여러가지이고, 아주 다양하게 구현할 수 있습니다.
사실 노드에 대한 추천이라는 방법은 해킹이 조금은 취약할 수 있습니다.
추천을 잘하지도 않고요..
사용자가 다수의 계정을 만들어 이들이 서로 추천을 하면, 이들이 거의 모두 증인 그룹에 들어갈 경우 위험할 수가 있죠..
물론 증인 그룹도 지분에 따라서 블럭을 생성을 하기 때문에 개발자가 지분을 많이 가지고 있으면, 해킹은 불가능합니다.
제가 제안했던 51%의 컨펌용 코인을 도입하고 증인그룹을 적용한다면,, 좋은 합의 알고리즘이 될 수도 있습니다.
제 나름대로는 pos가 경쟁방식보다, 비경쟁 방식으로 갈 것으로 예견하고 있습니다.
비경쟁 방식이 이점이 경쟁방식보다 이점이 더 많다고 개인적으로 생각을 합니다.
(하지만, 제가 이쪽을 전공하지 않았으므로, 다른 문제가 발생할 가능성은 있습니다.)