비탈릭 부테린(@vitalik.eth) 글, 송 쉬에(Song Xue) 편집, Golden Finance
프로토콜의 탈중앙화를 장려하는 한 가지 전략은 페널티 상관관계입니다. 즉, 한 참여자가 (실수를 포함하여) 잘못 행동할 경우, 그와 동시에 잘못 행동한 다른 참여자(총 이더리움으로 측정)가 많을수록 더 큰 처벌을 받게 되는 것입니다. 이론에 따르면, 대규모 참여자라면 명목상 여러 계정에 토큰을 분산하더라도 실수를 저지르면 자신이 관리하는 모든 '신원'에 복제될 가능성이 더 높습니다.
이 기술은 이미 이더리움 감소(그리고 비활동성 유출) 메커니즘에서 사용되었습니다. 그러나 매우 특정한 공격 시나리오에서만 발생하는 에지 케이스 인센티브는 실제로는 발생하지 않을 수 있으며, 탈중앙화를 장려하기에 충분하지 않을 수 있습니다.
이 글에서는 거의 모든 검증자가 적어도 가끔씩 저지르는 증명 누락과 같은 보다 "일상적인" 실패에 대해서도 유사한 상관관계 방지 인센티브를 확대할 것을 제안합니다. 이 이론에 따르면 부유한 개인과 담보 풀을 포함한 대규모 담보 제공자는 동일한 인터넷 연결 또는 동일한 물리적 컴퓨터에서 많은 검증자를 실행할 것이며, 이는 불균형적인 상관관계의 실패로 이어질 수 있습니다. 물론 각 노드마다 별도의 물리적 설정을 할 수도 있지만, 그렇게 되면 규모의 경제가 완전히 사라지게 됩니다.
건전성 검사: 동일한 '클러스터'에 있는 다른 검증자의 오류는 실제로 상관관계가 있을 가능성이 더 높나요?
(i) 최근 기간의 증명 데이터, 각 시간대에 어떤 검증자가 증명되었어야 하는지, 어떤 검증자가 실제로 증명했는지 보여주는 데이터와 (ii) 많은 검증자가 포함된 클러스터(예: "Lido", "Cisco", "Cisco", "Cisco", "Cisco", "Cisco", "Cisco")에 대한 공개 데이터에 검증자 ID를 매핑하는 두 데이터 세트를 결합하여 이를 확인할 수 있습니다. ", "코인베이스", "비탈릭 부테린"). 여기에서 찾을 수 있습니다, 여기 및 여기에서 전자의 덤프를 찾고, 여기에서 후자의 덤프를 찾습니다.
그런 다음 스크립트를 실행하여 총 공통 실패 횟수를 계산합니다. 동일한 클러스터에 있는 두 개의 유효성 검사기 인스턴스가 동일한 증명 시간 슬롯에 할당되어 해당 시간 슬롯에서 실패합니다.
또한 예상되는 공통 실패도 계산합니다. 실패가 무작위적인 우연의 결과인 경우 "발생했어야 하는" 일반적인 실패의 수입니다.
예를 들어, 클러스터 크기가 4이고 나머지는 독립적인 10개의 검증자가 있고 클러스터 내부에서 2개, 외부에서 1개 등 3개의 검증자가 실패했다고 가정합니다.
이미지 src="https://img.jinse.cn/7199606_watermarknone.png" title="7199606" alt="wYEhNQUOftJ6rMOjNRfqhciP2QzyBvnOWmqk81FE.jpeg">
여기에서 흔히 발생하는 오류가 첫 번째 클러스터의 두 번째와 네 번째 유효성 검사기입니다. 해당 클러스터의 유효성 검사기 네 개가 모두 실패하면 가능한 6개의 쌍마다 하나씩 총 6개의 공통 실패가 발생합니다.
그렇다면 얼마나 많은 공통 실패가 "있어야" 할까요? 이것은 까다로운 철학적 질문입니다.
각 실패에 대해 공통 실패의 수는 해당 시간 슬롯에 있는 다른 검증자의 실패율에 클러스터의 검증자 수를 곱한 값과 같다고 가정하고 이중 계산을 보정하기 위해 절반으로 줄입니다. 위의 예에서는 2/3이 주어집니다.
전체 실패율의 제곱을 계산하고 각 클러스터에 대해 [n*(n-1)]/2를 곱합니다. 이는 [(3/10)^2]*6=0.54
각 유효성 검사기의 실패를 전체 기록에 걸쳐 무작위로 재분배합니다.
각 방법이 완벽하지는 않습니다. 처음 두 방법은 서로 다른 품질 설정을 가진 서로 다른 클러스터를 고려하지 못합니다. 반면 마지막 접근 방식은 서로 다른 고유 난이도를 가진 서로 다른 타임슬롯에서 발생하는 상관관계를 고려하지 못합니다. 예를 들어 타임슬롯 8103681은 블록이 비정상적으로 늦게 게시되어 단일 타임슬롯에 포함되지 않은 많은 수의 증명을 가지고 있습니다.
< /p>
이 파이썬 출력에서 "10216 ssfumbles"를 참조하세요.
저는 결국 위의 처음 두 가지 접근 방식과 '실제 공통 실패'와 '의사 공통 실패'를 비교하는 더 복잡한 접근 방식, 즉 각 클러스터 구성원을 실패가 유사한 (의사) 무작위 검증기로 대체하는 세 가지 접근 방식을 구현하게 되었습니다. 무작위 검증자 실패는 실패율이 비슷합니다.
또한 미스와 미스를 명시적으로 구분합니다. . 이 용어는 다음과 같이 정의합니다.
미스: 검증자가 현재 기간에 증명을 놓쳤지만 이전 기간에 올바르게 증명한 경우.
미스: 검증자가 현재 기간에 증명을 놓쳤고 이전 기간에도 증명을 놓쳤을 때.
: 검증자가 현재 기간에 증명을 놓쳤지만 이전 기간에도 올바르게 증명한 경우.
목표는 (i) 정상 작동 중 네트워크 장애와 (ii) 오프라인 상태이거나 장기 장애를 경험하는 두 가지 현상을 구분하는 것입니다.
최대 차단과 단일 슬롯 차단이라는 두 가지 데이터 세트에 대해서도 이 분석을 동시에 수행했습니다. 첫 번째 데이터 세트는 증명이 전혀 포함되지 않은 경우에만 유효성 검사기가 일정 기간 내에 실패한 것으로 처리합니다. 두 번째 데이터 세트는 단일 슬롯에 증명이 포함되지 않은 경우 유효성 검사기가 실패한 것으로 처리합니다.
예상되는 일반적인 실패를 계산하는 처음 두 가지 방법에 대한 결과는 다음과 같습니다. 여기서는 단일 시간 슬롯 데이터 집합을 사용한 SSfumbles와 SSmisses입니다.
이미지 src="https://img.jinse.cn/7199619_watermarknone.png" title="7199619" alt="6zpOOViYdN8pt0TR6ATQQJFc6QGimW30YKe3AlZGQ.jpeg">
첫 번째 방법의 경우 효율성을 위해 보다 제한된 데이터 집합이 사용되므로 실제 행이 다릅니다.
이미지 src="https://img.jinse.cn/7199620_watermarknone.png" title="7199620" alt=" KB2U2JQwbvefz0p6TR7E6N03UfSVunEaVKrFX3ko.jpeg">
"예상" 및 "잘못된 클러스터" 열은 클러스터가 상관 관계가 없는 경우 위의 기술을 기반으로 함을 보여줍니다. "예상" 및 "잘못된 클러스터" 열은 클러스터가 서로 관련이 없는 경우 위에서 설명한 기법에 따라 클러스터 내에 얼마나 많은 공통 장애가 "있어야" 하는지를 보여줍니다. "실제" 열은 실제로 얼마나 많은 일반적인 장애가 있는지를 보여줍니다. 일관되게, 클러스터 내에서 "너무 많은 상호 연관된 실패"의 강력한 증거를 볼 수 있습니다. 동일한 클러스터에 있는 두 검증자가 다른 클러스터에 있는 두 검증자보다 증명을 놓칠 가능성이 훨씬 더 높습니다.
이를 페널티 규칙에 어떻게 적용하나요?
각 슬롯에서 현재 누락된 슬롯의 수를 최근 32개 슬롯의 평균으로 나눈 값을 p라고 하면 됩니다.
이 시간 슬롯 증명에 대한 페널티는 p에 비례해야 합니다. 즉, 다른 최근 슬롯과 비교하여 슬롯 증명 실패에 대한 페널티는 해당 슬롯의 실패한 검증자 수에 비례해야 합니다.
이 메커니즘의 한 가지 좋은 특성은 쉽게 공격당하지 않는다는 것입니다. 어떤 경우에도 실패하면 페널티가 줄어들고, 효과를 발휘할 만큼 평균을 조작하려면 직접 많은 실패를 만들어야 합니다.
자, 이제 실제로 실행해 보겠습니다. 다음은 네 가지 페널티 시나리오에 대한 대규모 클러스터, 중간 클러스터, 소규모 클러스터 및 모든 유효성 검사기(클러스터되지 않은 포함)의 총 페널티입니다.
basic: 실패당 1점(즉, 현재와 유사)
basic_ss: 동일하지만 실패로 계산하려면 단일 슬롯이 포함되어야 합니다.
excess: 위에서 계산된 p로 p점에 불이익
extra_ss: 위에서 계산된 p로 p점에 불이익, 미스로 계산되지 않으려면 단일 슬롯이 포함되어야 함
사용하는 "기본 "시나리오를 사용하면 큰 시나리오가 작은 시나리오에 비해 약 1.4배의 이점이 있습니다(단일 슬롯 데이터 세트에서는 약 1.2배). "추가" 시나리오를 사용하면 약 1.3배(단일 슬롯 데이터 세트에서는 약 1.1배)로 떨어집니다. 약간 다른 데이터 세트를 사용하여 여러 번 반복하면 과잉 처벌 체계는 '큰 놈'이 '작은 놈'에 비해 갖는 이점을 균일하게 좁혀줍니다.
무슨 일이 일어나고 있는 걸까요?
슬롯당 장애 건수는 일반적으로 수십 건에 불과합니다. 이는 거의 모든 "큰 점유율"보다 훨씬 적습니다. 실제로 이는 대규모 지분 보유자의 경우 단일 슬롯에서 활성화된 검증자 수(즉, 전체 인벤토리의 1/32)보다도 적습니다. 대규모 지분 보유자가 동일한 물리적 컴퓨터나 인터넷 연결에서 많은 노드를 실행하는 경우, 장애가 발생하면 모든 검증자에게 영향을 미칠 수 있습니다. 즉, 대형 검증자는 증명 포함 실패가 발생하면 현재 슬롯의 실패율을 단독으로 변경하여 페널티를 증가시킵니다. 소규모 검증자는 이렇게 하지 않습니다.
원칙적으로 대규모 이해관계자는 각 검증자를 별도의 인터넷 연결에 배치하여 이 페널티 체계를 우회할 수 있습니다. 그러나 이는 대규모 이해관계자가 동일한 물리적 인프라를 재사용할 수 있다는 규모의 경제의 이점을 희생합니다.
추가 분석
동일한 클러스터에 있는 검증자가 동시에 증명에 실패할 가능성이 있는 경우 이러한 영향의 규모를 확인하기 위한 대체 전략을 찾아보십시오.
소규모 검증자에 비해 대규모 검증자의 평균 이점을 최소화하는 이상적인(그러나 여전히 단순하여 과적합과 사용 불가능을 피하는) 보상/페널티 체계를 찾으려고 노력합니다.
이상적으로 이상한 공격(예: 평균을 조작하기 위해 특정 시간에 전략적으로 오프라인 상태가 되는 것)의 위험이 너무 커서 가치가 없는 '설계 공간 영역'을 식별하여 이러한 인센티브 체계의 보안 특성을 입증하려고 노력합니다.
지리적 위치별 클러스터링. 이 메커니즘이 지리적 분산을 장려하는지 여부를 결정할 수 있습니다.
(실행 및 비콘) 클라이언트 소프트웨어별 클러스터링. 이는 메커니즘이 소수의 클라이언트 사용에도 인센티브를 제공할 수 있는지 여부를 결정할 수 있습니다.