비트코인에서 POW를 이용합니다.
그런데, POW라는 것이 기본적으로 도스(DOS) 공격을 막기 위해서 사용되던 고전적인 방법인데요..
그 특성은 기본적으로 하나인데, 즉, 계산량의 비대칭성에 있습니다.
즉, 기본 원리는 메세지를 생성하는 측에서는 특정 기준을 만족하는 해쉬값을 얻기 위해서 난수를 이용하여 많은 계산을 수행해야 하지만, 검증하는 측에서는 한번에 메세지 및 난수를 해쉬함수로 입력하여 검증할 수 있게 되는 계산량의 비대칭성을 이용하는데요..
다시 말하면, 보내는 측에서는 기준을 만족하는 해쉬값을 찾기 때문에 계산량이 많고, 받는 측에서는 아주 쉽게 검증이 가능하므로 계산량이 아주 적게 됩니다.
이런 것은 기본적으로 서버를 가지고 있는 경우 도스공격을 하는 입장에서 일정량의 일을 해야 하기 때문에 도스공격을 일정 부분 방어할 수 있는 특징이 있습니다.
하지만, 비트코인의 POW가 하는 기능은 1) 비대칭성 2) 랜덤성의 성질을 이용하는 것으로 보이는데요.. (더 있나요?)
즉, 비트코인의 POW는 DOS 공격을 방어하기 위한 기존 POW의 기능에 더하여, 다수의 피어(노드) 환경에 의한 랜덤성이 더 포함되어 운용되는 것으로 보입니다.
일단 제 생각에는 이것 중에서 코인의 합의 알고리즘에서 필요한 부분은 2) 랜덤성인 것처럼 보이는데요..
이유는 POS의 경우, 이런 비대칭성을 이용하지 않는 것으로 보이며, 단지 coinday에 의한 랜덤성을 이용하는 것으로 보이기 때문입니다. (확실하지는 않습니다.)
따라서, 비트코인에서 POW의 이런 비대칭성이 반드시 필요한 것으로 보이지는 않습니다.
어떻게 생각하시나요..?
왜냐면 제가 올린 글(합의 알고리즘)에서 랜덤성만을 이용하여 알고리즘을 만들었기 때문입니다.
참조: http://www.ddengle.com/bitcoindeveloper/889821
블럭을 만드는 쪽은 힘들지만.. 검증하는 쪽은 아주 아주 쉽죠.
차이점이 있다면.. 오로지 POW는 해시파워에게 보상한다는 점, POS는 보유 지분에 보상한다는 점입니다.