본문 바로가기

TIL

TIL) 캐스퍼 알고리즘 컨셉 이해하기

본 콘텐츠는 Loun lee님의 medium과 이도현님의 medium, 해시넷 캐스퍼 알고리즘을 참고하여 작성하였습니다.

 

캐스퍼 알고리즘 

이더리움이 합의방식을 PoW에서 PoS로 변경하기 위하여 고안한, 수학과 게임이론에 기반을 둔 합의 알고리즘. 

 

PoS를 구현하는 방법

(1) Chain-based PoS

지분증명은 크게 체인-기반 지분증명과 BFT-기반 지분증명으로 나뉜다. 체인-기반 지분증명이란 지분에 따라 작업증명의 난이도를 다르게 주는 방법이다. 지분이 많은 사람은 그 만큼 작업증명의 난이도가 쉬워져서 채굴할 확률이 증가하고 지분이 작은 사람은 난이도가 상대적으로 어려워서 채굴할 확률이 감소한다.

(2) BFT-based PoS

BFT 기반 작업증명은 이미 30년 넘게 가까이 연구된 BFT 알고리즘을 활용하는 방법이다. BFT는 투표에 의해 한가지 값을 전체 노드가 합의하는 방안에 관한 연구인데 이 중 PBFT는 비동기 네트워크에서 전체 노드의 2⁄3 이상이 정직하면 합의에 이를 수 있다는 것을 수학적으로 증명한 것으로 유명하며 이는 이 후 하이퍼렛저, 텐더민트 등 여러 블록체인에서 활용하게 된다. 캐스퍼 또한 BFT를 기반으로 지분증명을 도입한다.

 

 

캐스퍼 알고리즘 설계 철학

  1. 참여자의 행위를 유도하기 위한 경제학. 명시적인 경제적 매커니즘의 설계를 통해 다른 사회적 계약들(PoW와 같은 합의 알고리즘 등)에서 발견할 수 있는 암시적인 경제적 인센티브를 부여하는 구조를 만들 수 있다. 
  2. 공격 비용의 최대화. 예를 들어, 공격자가 프로토콜의 효용에 일정 크기의 피해를 가한다면 공격자 역시 일정 수준의 피해를 받아야 한다(griefing factor). 100달러의 피해를 주는 공격에 드는 비용이 0.01달러여서는 안되며, 적어도 100달러 정도는 비용이 들어야 한다. 다시 말해, 프로토콜을 공격할 때 소모되는 1달러 당 공격 가능 횟수를 최소화시켜야 한다.
  3. 개인이 아닌 공공의 비용 대비 이익. 우리는 퍼블릭 블록체인의 확장을 진행하므로 프로토콜 경제학 역시 사회(공공)의 비용과 이익(부정적인 외부비용과 긍정적인 외부비용)을 고려해야 한다. 에너지 소모량, 환경에의 영향, 부의 분배가 대표적인 예.
  4. 규모의 경제를 방지. 중앙화는 퍼블릭 블록체인의 가치 제안(value proposition)을 약화시킨다. 규모의 경제를 막음으로써 중앙화 요인을 막을 수 있고, 보다 안전한 블록체인을 만들 수 있다.
  5. 네트워크의 안전성은 네트워크에 투입되어있는 비용에서 나온다. 단순한 말이지만 다시 언급할만한 부분. 당신이 네트워크에 많은 돈을 걸어두어 네트워크가 피해를 입을 경우 당신이 입는 피해가 클수록, 우리는 당신을 검증인으로서 더 신뢰할 수 있다. PoW체인은 에너지 소모를 통해 보안을 얻지만, PoS체인에서는 경제적 가치의 손실 가능성을 높임으로써 보안을 얻는다.
  6. 소수독점 구조를 고려한 설계. 협력 게임 이론은 네트워크의 권력이 중앙화되는 것(예: 규모의 경제)을 완벽히 막을 수 없는 상황을 부르는 말이다. 다르게 말하면, 개인의 이익을 최대화하기 위해 참가자들이 집단을 만드는 모든 행동을 분석하는 과정이다. 특히, 프로토콜은 집단에 속해있지 않은 검증인들에 대해 다른 검증인 집단이 짓궂게 굴지 않도록(친절하게 행동하도록) 설계되어야 한다.
  7. 책임 부여를 통한 안전성. 악한 행위를 하는 참여자에게 책임을 물을 수 있는 구조가 되어야 한다. 캐스퍼는 비잔티움 행위를 하는 참여자에게 처벌을 가하는 기능에 의존한다.
  8. 합리적인 생존성. 공격자가 체인을 막음으로써 체크포인트나 블록에 대한 제안 또는 투표가 진행되지 못하게 하는 것을 구조적으로 금지한다. 이 부분이 캐스퍼가 텐더민트같은 다른 방식과 다른 점으로, 텐더민트에서는 안전성이 확보되지 않으면 “잠금”상태로 변환한다.
  9. 동기성 가정의 최소화. 생존성을 유지하는 동시에 체인의 성장을 막는 것을 피하기 위해, 캐스퍼는 최소한의 동기성을 가정한다. 실제로, 우리는 각 노드들이 몇달에 한 번 정도 접속하는 것을 가정하고 있다.
  10. 탈중앙화되었다면 복구할 수 있어야 한다. 프로토콜은 모든 다른 노드가 사라지고 노드가 딱 하나만 남았더라도 모든것을 복구 할 수 있는 경우에만 “탈중앙화”되었다고 말할 수 있다. (텐더민트는 체인 생성의 정지에 예민하며 다시 복구될 수 없다. Matthew Wampler-Doty와 Vlad의 관찰에 따르면, 텐더민트의 검증인 그룹은 매 번 나뉠때마다 점점 작아지게 된다.
  11. 검열에의 의욕 저하. 이러한 시스템의 경우, 검증인들이 점차 접속을 끊는 식으로 공격을 가할 수 있다는 문제가 있다. 그러나 집단 검열이 더욱 큰 문제이다. 검열을 통해 얻을 수 있는 이익과 검열에 드는 비용 및 처벌(예치금의 몇 퍼센트라거나)의 비율을 적절하게 정하는 것이 이 문제를 해결하기 위해 매우 중요할 것이다.

 

핵심
- 제대로 투표한 사람에게 보상
- 반대로 투표한 사람에게 패널티

 

 

컨셉

검증이란 어떤 포크가 정당한지 투표하는 것을 의미한다. 전체 지분의 2/3 이상이 투표한 포크에 투표를 하게 되면 보상을 받게 되고, 반대로 네트워크를 교란시키는 투표 행위를 하면 검증자는 자격을 박탈당하며 예치금을 몰수당한다. 이때 위법 행위를 발견한 검증자들은 일정 포상금을 받게 된다. 언제든지 검증자들이 예치금을 인출하면 검증자 자격이 상실된다. 캐스퍼 FFG의 코드는 간단하게 예치금, 탈퇴, 출금, 투표, 몰수, 체크포인트 간격 등으로 나눠볼 수 있다.

  • 예치금(deposit) : 검증인이 검증 작업을 하기 위해서는 자신의 지분으로서 예치금을 걸어 두어야 한다.
  • 탈퇴(logout) : 검증인이 검증 작업을 멈추고 탈퇴하고자 할 때를 지칭한다.
  • 출금(withdraw) : 검증인들이 본인이 예치해 두었던 예치금을 인출하고자 할 때를 지칭한다.
  • 투표(vote) : 검증인들이 특정 체크포인트에서 투표 메시지를 보낼 때를 지칭한다.
  • 몰수(slash) : 검증인들이 네트워크를 교란시키는 행위를 하면 예치금이 몰수당할 때를 지칭한다.
  • 체크포인트 간격(epoch) : 검증인들이 검증 작업을 하는 체크포인트의 블록 간격을 지칭한다.