'Grinding Attack'을 막을 수 있는 합의알고리즘은 무엇인가요?
PoS(Proof of Stake) 합의알고리즘은 많은 투표권, 즉 큰 컴퓨팅파워를 가진 노드가 합의의 진실성을 결정한다는 '비민주적'인 성격을 가지고 있다고 생각합니다. 많은 투표권을 가진 노드나 노드들이 악의적인 개인이나 집단인 경우에 분산원장들의 진실성은 깨질 것입니다.
PoS의 약점을 공격하는 여러가지 공격들 가운데 하나인 'Grinding Attack'을 막아내기 위한 합의알고리즘이 무엇인지 알고 싶습니다.
안녕하세요. Grinding Attack을 방지하는 합의 알고리즘에 대하여 답변드리겠습니다.
▣ 블록체인을 공격하는 방법 - 그라인딩 어택
블록체인도 하나의 프로그래밍된 시스템으로 100% 완전하지 않습니다. 블록체인 시스템내 취약요소나 허점을 이용하여 악의적인 공격으로 피해를 주거나 부당이득을 취할 수 있습니다.
그라인딩 어택(Grinding Attack)
PoS방식은 특정 기준에 부합할 경우 블록을 생성할 권한을 얻게 되는데 특히 지분이 많을 수록 블록을 생성할 권한 얻을 수 있는 확률이 높아지게 됩니다.
블록을 생성할 확률을 높이기 위해 변수를 미리 계산하여 블록을 생성할 확률을 얻을 때까지 전송내역을 누락시킵니다.
그런 후 예측한 근거를 통해 지분(코인)을 사전에 확보여 블록을 생성할 권한을 높이는 방법을 말합니다.
PoS검증방식에서 블록을 생성할 권한을 얻기 위해 사용되는 공격입니다.
그라인딩 어택을 방지하는 기술 - 코인토싱(Coin Tossing)
코인토싱은 PoS검증방싱에서 변수를 미리 계산하여 블록생성 확률을 높이는 그라인딩 어택을 방지하기 위해 고안된 기술입니다.
코인토싱은 PoS 블록생성을 위해 참여하는 노드간 "랜덤변수"를 이용하여 해당 블록의 정보를 노드 참여 수 만큼 조각낸 후 암호화하여 나누어 같게 됩니다.
이 때 상호 블록 조각을 나누어 같는 과정에서 해독할 수 있는 키와 함께 공유하게 되는데, 만약 공유되는 과정에서 특정 구성원이 배신을 한다해도 다른 노드를 통해 조각에 대한 정보를 얻을 수 있습니다.
그러나 이는 구성원의 51%가 선한 노드라 가정했을 경우에만 가능하기 때문에 모든 조건에서 100% 배신자 노드의 참여를 해결할 수 있는 수단은 되지 못합니다.
블록정보를 모두 모으기 위해서는 주변 노드의 도움이 필요하기 때문입니다.
코인토싱 기술을 도입한 합의 알고리즘으로는 우로보로스 지분증명(OPoS)이 있습니다.
감사합니다.