Polkadot 합의 파트 4: 보안

Ian J. Um
Decipher Media |디사이퍼 미디어
9 min readSep 14, 2021

Polkadot Blog의 Polkadot Consensus Part 4: Security 번역입니다. 2019년 12월 18일 Joe Petrowski에 의해 작성된 글이며, Polkadot 팀에 번역 허가를 받았습니다.

https://polkadot.network/content/images/2019/12/unnamed.png

폴카닷 합의 시리즈 파트 4입니다. 도입은 파트 1, GRANDAPA에 대한 논의는 파트 2, BABE에 대한 논의는 파트 3을 참조하세요.

지금까지 BABE가 블록체인 후보군을 생성하고 GRANDPA가 완결하는 방법에 대해 논의했습니다. 프로토콜에 따르려면 2/3 이상의 검증인이 필요하다는 것을 알 수 있습니다. 하지만 전체 검증인은 몇 명일까요? 그들은 어떻게 선택될까요? 그들은 왜 규칙을 따를까요?

선거와 Era

블록이 2/3 이상 동의를 얻었다는 사실을 검증인이 알기 위해서는 GRANDPA가 전체 검증인이 몇 명인지 알고 있어야 한다는 것을 의미합니다. 체인의 거버넌스 프로세스에서 정한 (변경될 수 있는) 목표는 BABE와 GRANDPA를 운영하는 최소 1,000명의 검증인을 확보하는 것입니다.

검증인이 몇 명 필요한지 결정되면, 누가 검증인을 할 것인지 결정하는 선거가 진행됩니다. BABE가 시간을 epoch으로 나누었듯이, GRANDPA는 시간을 era로 나눕니다. 각 era가 종료되는 시점에 지난 era에 대한 보상이 지급되고 다음 era를 위한 선거가 시작됩니다. era는 약 24시간으로 계획되어 있습니다.

폴카닷은 검증인을 선출하는데 NPoS (nominated proof of stake)를 사용하며 Phragmen’s method를 사용하여 선거를 수행합니다. 도입에서 지분 증명 네트워크의 보안은 위험 가치와 관련이 있다고 설명하였습니다. 사용자는 스테이킹이라고 불리는 자금을 잠그는 방식으로 네트워크 보안에 참여할 의사를 나타냅니다.

검증인 수는 제한되어 있지만, 스테이킹을 통해 보안에 참여하는 이들의 숫자는 제한되어 있지 않습니다. 검증인이 아니라고 하더라도, 지명 (nominating)을 통해 보안에 참여할 수 있는 것입니다. 지명자 (nominators)는 자신의 자금을 스테이킹하고 자신을 대신하여 검증이 가능한 16명의 신뢰 검증인을 선택합니다. 지명자는 자신이 지지한 검증인의 보상뿐만 아니라 처벌도 공유하게 됩니다.

폴카닷은 균등하게 스테이킹 된 검증인 셋 (validator set)을 지향하며, 보상은 지분이 아닌 성과에 기반하여 지급되기 때문에 지명자는 더 작은 검증인에 스테이킹하여 더 높은 수익률을 얻을 수 있습니다.

폴카닷은 Phragmen’s method를 사용하여 지분 분배를 최적화합니다. 선거에 앞서 검증인 계정 목록이 존재하며, 각 검증인은 잠재적 후보 목록을 갖고 있습니다. Phragment’s method는 가장 큰 지분 가치를 갖고 있는 조합을 파악하여 먼저 승자를 선택합니다. 일단 검증인 세트를 알게 되면 가장 고르게 스테이킹된 세트를 후보로 선택하는 방식을 적용합니다. 이 방식은 최고의 네트워크 보안과 더 많은 지명자 보상을 이끌어 냅니다.

보상

보상은 사람들이 네트워크에서 검증인 역할을 수행하게 하는 주요 인센티브입니다. 파트 2와 3에서 논의한 바와 같이 검증인은 폴카닷 블록체인을 생성하고 완결하기 위하여 BABE와 GRANDPA 프로토콜을 수행합니다.

다른 지분 증명 프로토콜과 달리 폴카닷은 각 검증인이 얼마나 지분을 갖고 있는가에 기반하지 않고 검증인의 행위에 기반하여 보상을 결정합니다. 검증인은 행위에 따라 포인트를 축적합니다. 포인트는 주로 유효한 상태에 서명하는 것과 생성한 블록이 캐노니컬 체인 (canonical chain)에 포함되는 것에 할당됩니다. 캐노니컬 체인에 포함되지 않은 블록 생성에 대해서도 추가적인 포인트가 발행됩니다.

포인트는 era에서의 총 발행 포인트 값을 알게 되는 시점인 era의 마지막 시점까지 그에 대응되는 dot의 가치가 얼마인지 알 수 없습니다. 한 era의 총 보상은 각 검증인이 총 포인트에서 상대적으로 얼마나 많은 포인트를 적립했는가에 따라 나눠지게 됩니다. 그런 다음, 검증인의 지명자 별로 나누어 집니다.

보상 시스템을 따르는 것은 간단합니다. 표준 클라이언트를 실행하고 고가용성 네트워크 아키텍처를 운영함으로써 검증인은 적절하게 프로토콜을 따를 수 있고 이에 따라 포인트를 획득할 수 있습니다.

징계와 처벌

보상을 위하여 스테이킹을 하게 되지만, 네트워크는 스테이커 (staker)가 규칙을 준수하도록 해야 합니다. 만일 프로토콜을 따르지 않는 경우, 그에 대한 처벌로 슬래싱이 존재합니다. 공격을 방지하여 네트워크 보안을 지키기 위해 공격 시도에 대한 처벌이 필요하게 됩니다.

규칙 위반의 범위는 태만에서 악의적 행동에 이르기까지 다양합니다. 검증인에 대한 가장 기본적인 요구 사항은 온라인 상태이어야하며 사용 가능해야 한다는 것입니다. 검증인은 블록을 작성하거나 하트비트 (heartbeat) 메시지를 네트워크에 보냄으로써 사용가능 상태임을 증명해야 합니다. 모든 시스템은 간헐적인 다운타임을 경험하기 때문에 오프라인에 대한 슬래싱 가능성은 매우 낮으며 슬래싱을 당하더라도 복구 가능한 수준의 작은 규모입니다. 하지만 검증인이 인프라 구성을 적절하게 하였다면 다운타임은 드물게 나타나야 합니다.

더 심각한 위반 사항은 모호한 행동 (equivocation)입니다. 모호한 행동은 BABE와 GRANDPA 모두 발생할 수 있습니다. BABE에서 모호한 행동은 같은 슬롯에 두 개의 블록을 생성합니다. GRANDPA에서의 모호한 행동은 동일 라운드에 상충되는 두 체인에 대한 pre-vote나 pre-commit 메시지를 보내는 것입니다. 모호한 행동은 강한 슬래싱을 가져옵니다. 너무 많은 검증인이 모호한 행동을 취할 경우, 하나의 캐노니컬 체인을 선택할 수 없게 됩니다.

특정한 행동의 결과로 지분 전량을 슬래싱 당할 수 있습니다. 이는 이미 완결된 체인과 상충되는 체인에 pre-vote나 pre-commit을 캐스팅하는 것 같은 극단적인 경우에 해당됩니다. 이는 완결된 블록을 뒤집으려고 시도하는 것이기 때문에 네트워크는 이 행동을 공격으로 간주합니다.

초선형 슬래싱 (Super-linear Slashing)

지분과 보상은 직접적으로 관련이 없기 때문에 두 개의 검증인을 실행할 수 있는 충분한 자금만 확보된다면 복수의 검증인을 운영하여 보상도 두배로 받을 수 있습니다.

우리는 한 개체가 — 대규모 홀더나 스테이킹 서비스 제공자 (staking-as-a-service providers) — 여러 검증인을 실행할 것으로 예측하고 있습니다. 특정 개체가 많은 지분을 획득하고 검증인을 운영하는 것은 폴카닷에서 문제가 되지 않습니다. 다만 단일 개체가 너무 많은 파워를 갖는 것은 막기 위해, 악의적 행동 시도에 대한 가치 위험을 증가시킵니다.

폴카닷은 초선형 슬래싱을 사용합니다. 잘못을 저지르는 검증인 수가 많아질 수록 슬래싱 비율이 증가합니다. 예를 들어 한 검증인이 모호한 행동을 한 경우, 이는 열악한 인프라 문제일 수 있습니다. 하지만 한 라운드에서 검증인의 30%가 모호한 행동을 한 경우, 이는 공모하여 악의적 행동을 취하였을 가능성이 높기 때문에 더 강한 슬래싱이 적용되게 됩니다.

https://lh6.googleusercontent.com/OyrrlOe5_zGiJdR5ZKVPP0zG4eyX6gaZBTuVOYoUrsbqpw94eCuO142kL4GFdIbWLQS6848j7vsaEVRZGwCUKYIgFKhLiguMTL0QNRmLfV0pS_UJeNNIwjWLJ3gackMeZq_hWHFq

더 많은 검증인이 모호한 행동을 함에 따라 슬래싱 심각도가 증가합니다. 검증인의 33% 이상이 모호한 행동을 하여 네트워크를 중단시키는 이벤트가 발생하면 공격자는 100% 슬래싱됩니다.

단일 개체가 네트워크에 더 많은 검증인을 추가 운영하더라도 검증인이 서로 혹은 중앙 집중적인 서비스로 종속되지 않아야 합니다.

공유 보안

지분 증명 네트워크의 보안은 경제성에 의존적입니다. 경제적 가치는 정의에 따라 제한되기 때문에 마찬가지로 제한된 규모의 보안만이 가능합니다. 단일 체인의 확장 문제를 해결하기 위해 블록체인의 수가 증가함에 따라 경제적 가치가— 그에 따른 보안이 — 여러 체인에 분산되어 각 체인의 보안이 이전보다 약해지고 있습니다.

Ethereum Virtual Machine과 같은 공유 실행 환경에서 실행되는 스마트 컨트랙트는 신뢰 범위 없이 상호 작용할 수 있습니다. 폴카닷에서는 로직 인터페이스가 블록체인의 단일 실행 환경에서 블록체인 로직 자체로 이동했습니다.

신뢰 범위를 벗어나 체인을 상호 작용시키는 방법을 고려해볼 수 있습니다. 이 경우, 신뢰가 동일 환경에서 실행되는 것에 기반한다고 생각할 수 있지만, 실제로 신뢰는 동일한 경제와 상태 전환 보장에서 기반하게 됩니다.

폴카닷은 공유 보안 모델을 도입하였습니다. 이에 따라 체인은 다른 체인과 상호 작용할 수 있으며 상대방이 자신과 동일한 보안을 보장한다는 것을 알고 있습니다. 브리지 기반 솔루션 — 각 체인이 자체 보안을 처리하는 — 에서는 수신자가 발신자를 신뢰하도록 되어 있습니다. 폴카닷의 보안 모델은 발신자의 보안을 신뢰하지 않고도 크로스 체인 메시지를 받아들일 수 있도록 신뢰를 제공합니다.

릴레이 체인 블록은 대부분 패러체인 (parachain)의 유효성 증명으로 구성됩니다. 즉, 릴레이 체인이 패러체인의 상태 전환을 검증하고 완결된 릴레이 체인에 해당 증명이 포함되면 패러체인의 블록도 완결되게 됩니다. 패러체인의 블록을 되돌리려면 공격자는 모든 패러체인을 포함하여 전체 폴카닷 시스템을 되돌려야 합니다.

릴레이 체인에서 상태를 공유하여 보안을 공유하는 이 시스템은 패러체인이 자체 보안 및 검증 커뮤니티를 제공할 필요조차 없게 만듭니다. 폴카닷의 릴레이 체인은 경제적 보장을 제공하여 폴카닷 생태계의 체인들이 애플리케이션 로직에 집중할 수 있도록 돕고 있습니다.

Polkadot 합의와 경제에 대해 더 자세히 알아보려면 Polkadot Wiki를 방문하세요.

디사이퍼(DECIPHER)는 “건강한 블록체인 생태계 조성에 기여한다” 라는 미션 아래 블록체인에 대해 연구하고 이를 실용적으로 응용하는 서울대 블록체인 연구 학회입니다. 2018년 3월에 처음 조직 되어 현재까지 블록체인 기술을 다방면에서 연구하고 산업계에 응용하고 있는 100명 이상의 회원들을 배출해왔습니다. 다양한 팀별 연구활동과 프로젝트, 컨퍼런스 개최, 서울대학교 블록체인 강의 개설, 유수 기업들과의 산학협력과 파트너십 체결을 해오며 국내 최고의 블록체인 학회로 자리 잡았습니다.

--

--