잠깐 생각해보고, 아래의 해결책을 찾았습니다.
제가 pos에 대해서 약 1년 반동안 찾아보지 않았으므로,
아래와 비슷한 해결 방법이 이미 사용되고 있을 가능성도 있습니다.
pos(proof of stake)와 pow(proof of work)는 현재 합의 알고리즘으로 가장 많이 사용되고 있습니다.
pos의 원리는 코인에이지(coinage) 또는 코인데이(coinday)를 기초로 하여 코인에이지가 가장 많은 지갑이 블럭을 생성하고 이에 대한 이자를 지급하는 시스템입니다.
즉, pos의 경우 코인에이지는 시간이 지나가면 증가하기 때문에 언제가는 네트워크에서 코인에이지가 제일 많아지면 블럭을 생성하고 이자를 받습니다.
물론 지갑에 코인이 많이 있으면 기본 코인에이지가 늘어나는 형태입니다. 즉, 코인양이 많으면, 자주 이자를 받게 됩니다
이런 pos 지갑의 특성은 해킹에도 사용될 수 있는데요.
만일 한 유저 또는 다수의 유저가 연합을 하여 다수의 지갑을 꺼놓고 있다고 며칠 후 다시 지갑을 작동시키면
이들 지갑이 연속하여 블럭을 생성하고, 필요 컨펌을 모두 충족한다면, 해킹이 발생해도 이를 다시 되돌릴 수 없습니다. 해킹에 성공할 수 있는 것이죠..
pos 지갑의 이런 특성을 없애기 위해서, 기존의 해법은 pos의 필요 컨펌을 상당히 많게 정해놓고 있습니다.
또한 이는 블럭생성시간이 짧아져서 필요 컨펌을 많이 하는 것이 거래에 불편을 초래하지 않기 때문이기도 합니다.
하지만, 위와 같은 방법으로 해킹을 완전히 없앨 수는 없습니다.
따라서, 이에 대한 본인의 해법을 여기에 제시하고자 합니다.
1) pos 지갑은 특정 시간마다 지갑이 살아 있다는 것을 확인하기 위해서 네트워크에 코인을 주고받습니다. 기존에 있는 기능입니다.
2) 만일 pos 지갑이 특정 시간 (예로 1일) 동안 살아 있지 않다면, 이 지갑에 패널티를 주기 위해서 이 지갑의 코인에이지를 마이너스 값을 가지도록 합니다.
3) 지갑이 꺼져 있는 시간이 많다면, 더 많은 패널티를 줄 수도 있습니다.
이와 같이 하면, 1)더 많은 지갑이 네트워크에 참여하게 되므로, 네트워크 보안이 강화될 수 있고,
2) 코인에이지를 이용한 해킹을 효과적을 막을 수 있게 된다.