http://www.ddengle.com/blockchain/1433956 에 제가 답글로 쓴 합의 알고리즘에 대한 내용을 다시 올립니다.
--------------------------
스팀은 기본적으로 dpos방법을 사용합니다.
추가로, 개발자의 지분확보를 위해서 pow를 함께 사용하고 있습니다.
pos는 지분이 많은 지갑이 블럭(거래데이터)를 만들 확률을 높이는 원리이구요..
이것은 coinday(또는 coinage)라는 변수를 사용하여 지갑이 블럭을 만들었으면 코인데이를 제로로 세트하여 다시 경쟁을 하게 하는 원리를 사용합니다.
즉 경쟁방식이고요,, 코인데이가 가장 많은 지갑이 블럭 생성권한을 가집니다.
dpos도 pos의 일종입니다.
다른 것은 추천인 또는 증인(delegate)가 각 지갑을 추천하는 방법을 사용합니다.
추천을 많이 받은 지갑의 상위 약 20개가 지분(?)율에 따라서 정해진 시간 3초(?)마다 블럭을 만듭니다.
---
합의 알고리즘이란
기본적으로 동일한 마이너 또는 노드 중 누가 블럭을 만들 것인가를 정하는 것입니다.
이때 가장 중요한 것은 해킹이 발생하지 않도록 되도록이면 노트가 랜덤하게 선택되도록 합니다.
사실 랜덤성만 가지고는 다중 계좌를 이용한 시빌공격을 방어를 할 수 없기 때문에 해쉬능력 또는 코인 지분율에 비례해서 블럭생성기회를 줍니다.
랜덤성이 중요한 이유는 이체완료를 위한 필요 컨펌이 있는데요..
비트코인은 6컨펌이죠.. pos코인은 최소 100컨펌 이상을 요구합니다.
이 이체완료 컨펌이 넘으면, 블럭체인을 바꿀 수가 없기 때문입니다.
따라서, 해커가 연속으로 블럭을 이체 완료 컨펌 이상을 연속으로 작성하면 해킹에 성공하게 됩니다.
따라서, 랜덤성이 중요하고요..
그런데, pos의 경우 51%의 코인을 가지고 있으면, 원리상으로 랜덤성이 없더라도 위에서 말한 해킹이 불가능하게 됩니다.
따라서, 제가 제안 했던 코인은 이체 가능코인(49%) + 이체 불가능하지만 블럭을 생성하고 이자는 받을 수 없는 이체 불가능코인(51%)로 된 pos코인을 만들자는 제안을 했던 것입니다.
물론 이 두 코인은 하나의 코인인데, 코딩을 이체가능코인과 이체 불가능한 코인으로 분리를 한 것입니다. 그예로 지갑 주소의 첫자를 이체가능은 TR로 시작하고, 이체 불가능코인은 NO로 시작하는 방법으로 구분할 수도 있습니다.
https://drive.google.com/file/d/0B5hmGlVuh8KZUzJGdDJ2bVNwSE0/view
https://steemit.com/kr/@loum/5gc6kw
http://www.ddengle.com/bitcoindeveloper/893822
생각나는대로 적은 글이라 조금 정신이 없습니다.
(마지막에 남긴 글이 적당하지 않은 것 같아서, 삭제했습니다.)
아래의 몇가지를 살펴볼 수 있을 듯 합니다.
1)
전체 네트워크에서 존재하는 컨펌 전용 코인이 51%고, 49%는 전송용 코인이라면, 이 둘은 그냥 다른 코인입니다.
2)
컨펌 전용 코인 51% 중에서 과반수가 찬성해야 컨펌이 승인나도록 합의 알고리즘을 설계한 경우라면,
즉 25.5%(51%의 과반수)가 넘는 코인이 승인해야 컨펌이 이루어지는 경우라면 여전히 기존의 문제가 반복됩니다.
3)
51%라는 모든 컨펌 코인이 컨펌을 해야 승인이 나는 경우라면, 컨펌 코인을 소유한 모든 노드가 활성화되어 있어야 합니다.
4)
컨펌코인은 거래가 불가능하기 때문에, 초기에 컨펌 노드들을 설정하면 다시는 바꿀 수 없습니다.