비활성 누출 공개

이 기사는 기계로 번역되었습니다
원문 표시

여기에는 치명적인 네트워크 오류가 발생하는 동안 최종화를 복원하도록 설계된 비활성 누수에 대한 첫 번째 이론적 분석을 제공하는 기사가 요약되어 있습니다. 이 작업은 DSN2024에서 승인되었습니다.

TL;DR

  • 비활성 누출은 프로토콜의 안전에 본질적으로 문제가 됩니다. 이는 마무리된 블록이 충돌하는 것( 안전성 )을 희생하는 대신 블록의 지속적인 마무리( 활성화 )를 선호합니다.
  • 비잔틴 검증인(프로토콜에서 벗어난 검증인)의 존재는 안전성 상실을 가속화할 수 있습니다.

이더리움 PoS 블록체인은 최종 체인의 지속적인 성장을 위해 노력합니다. 결과적으로 프로토콜은 검증인이 블록을 적극적으로 마무리하도록 장려합니다. 비활성 누출은 최종성을 회복하는 데 사용되는 메커니즘입니다. 특히, 체인이 4회 연속 에포크 동안 마무리되지 않은 경우 비활성 누출이 시작됩니다. 비활성 유출은 2023년 5월 메인넷에서 처음으로 발생했습니다.

비활성 누출에 대한 좋은 소개는 Ben Eddington의 훌륭한 작업 덕분에 가능합니다(이 작업에 동기 부여함). 비활성 점수로 시작하여 비활성 누출을 공식화합니다.

비활성 점수

비활성 누출 동안 epoch t t 에서 검증인 i i 의 비활성 점수 I_i(t) I i ( t ) 는 다음과 같습니다.

\begin{cases}I_i(t) = I_i(t-1)+4, \text{만약 $i$가 epoch $t$에서 비활성인 경우} \\I_i(t) = \max(I_i(t-1) -1, 0), 그렇지 않으면 \text{.}\end{cases}
{ I i ( t ) = I i ( t 1 ) + 4 , i가 에포크 t 에서 비활성 인 경우 I i ( t ) = max ( I i ( t 1 ) 1 , 0 ) 그렇지 않으면.

따라서 검증인의 비활성 점수는 비활성 상태인 경우 4 4 증가하고 활성 상태인 경우 1 1 감소합니다. 비활성 점수는 항상 양수이며 비활성 유출 중에 검증인을 처벌하는 데 사용됩니다.

비활성 처벌

s_i(t) si ( t ) epoch t t 에서 검증 인 i i 의 지분을 나타내고 I_i(t) I i ( t ) 는 비활성 점수를 나타냅니다. 각 에포크 t t 에서의 페널티는 I_i(t-1)\cdot s_i(t-1)/2^{26} I i ( t 1 ) s i ( t 1 ) / 2 26 입니다. 따라서 지분의 진화는 다음과 같이 표현됩니다.

s_i(t)=s_i(t-1)-\frac{I_i(t-1)\cdot s_i(t-1)}{2^{26}}.
si ( t ) = si ( t 1 ) I i ( t 1 ) s i ( t 1 ) 2 26 .

비활성 누출 중 지분

이 작업에서 우리는 스테이크 함수 s 연속적이고 미분 가능한 함수로 모델링하여 다음과 같은 미분 방정식을 생성합니다.

s'(t)=-I(t)\cdot s(t)/2^{26}.
s ( t ) = I ( t ) s ( t ) / 2 26 .

이 방정식을 사용하면 비활성 점수의 변화를 수정하여 시간에 따른 검증인의 지분을 결정할 수 있습니다. 그리고 그것이 바로 우리가 하는 일입니다. 우리는 두 가지 유형의 동작, 즉 활성 및 비활성을 정의합니다.

  • 활성 유효성 검사기: 항상 활성 상태입니다.
  • 비활성 유효성 검사기: 항상 비활성 상태입니다.

이러한 행동을 하는 검증인은 비활성 점수에서 다양한 진화를 경험합니다. (a) 활성 검증인은 일정한 비활성 점수 I(t)=0 I ( t ) = 0 을 갖습니다. (b) 비활성 검증자의 비활성 점수는 매 epoch마다 4씩 증가합니다. I(t)=4t I ( t ) = 4 t 입니다 . 비활성 유출 동안 각 검증인 유형의 스테이크:

  • 활성 검증자의 지분: s(t) = s_0 = 32. s ( t ) = s 0 = 32.
  • 비활성 검증인의 지분: s(t) = s_0e^{-t^2/2^{25}}. s ( t ) = s 0e t 2/2 25 .
영상
이미지 1472×1074 65.3KB

그래프는 비활성 유출 동안 활동에 따른 검증인 지분의 변화를 보여줍니다. 추방 한도는 너무 많은 페널티를 누적한 검증자를 퇴출시키기 위해 프로토콜에 의해 설정됩니다.

활성 검증인이란 무엇입니까?

이것은 중요한 세부 사항입니다. 활동은 실제로 체인에 따라 다릅니다. 이는 동일한 검증인에 대해 서로 다른 체인이 서로 다른 비활성 점수를 갖게 됨을 의미합니다. 따라서 검증인은 체인에서 퇴출될 수 있으며 다른 체인에서는 wei를 잃지 않습니다.


이것이 프로토콜의 공식화였습니다. 이제 우리는 프로토콜의 안전성 속성을 분석합니다. 이를 위해 우리는 다음 모델을 사용합니다.

모델

  • 네트워크 : 우리는 선험적으로 알려지지 않은 GST(Global Stabilization Time) 후에 비동기 상태에서 동기 상태로 전환하는 부분 동기 시스템을 가정합니다.
  • 결함 : 검증인은 정직 하거나 비잔틴 (프로토콜에서 벗어남)입니다. 비잔틴 유효성 검사기는 프로토콜에서 임의로 벗어날 수 있습니다.
  • 스테이크 : 각 검증인은 32 ETH로 시작합니다.

비동기 상태에서는 메시지 전송 지연에 대한 제한이 없습니다.

안전을 위한 경계

정직한 검증자들과 함께

구조적으로 파티션이 충분히 오랫동안 발생하면 비활성 누출로 인해 안전이 침해됩니다. 문제는 얼마나 빨리냐는 것입니다.

4686 epoch(약 3주) 이상 지속되는 네트워크 파티션은 종료 충돌로 인해 안전성이 상실됩니다. 이는 정직한 검증자만 사용하여 비활성 유출 기간에 대한 안전의 상한입니다.

상세한 분석

(모두 정직한) 검증인이 둘로 분할되는 시나리오를 분석해 보겠습니다. (우리 모델에 따르면 비동기 상태입니다.)
파티션은 필연적으로 포크를 생성하며, 각 파티션은 보이는 유일한 체인에 구축됩니다. 활성 검증인의 비율이 2/3로 돌아오면 체인이 마무리됩니다.

이 경우 파티션 전반에 걸친 검증인의 분포를 이해함으로써 활성 검증인의 지분 비율이 각 분기 지분의 2/3로 돌아가서 안전성이 확정되고 파괴되는 데 걸리는 시간을 계산할 수 있습니다.

분석을 위해 다음과 같은 표기법을 사용합니다. 비활성 누출이 시작될 때:

  • n n은 총 검증인 수입니다.
  • n_B n B는 비잔틴 검증인의 총 수입니다.
  • n_H n H는 정직한 검증인의 총 수입니다.
  • n_{H_1} n H 1은 분기 1의 정직한 유효성 검사기 수입니다.
  • n_{H_2} n H 2는 분기 2의 정직한 유효성 검사기 수입니다.

분석의 첫 번째 부분에는 비잔틴 유효성 검사기가 없습니다. 이는 n=n_H n = n H 를 의미합니다. 정직한 검증인은 두 개로만 분할되므로 n_H=n_{H_1}+n_{H_2} n H = n H 1 + n H 2 입니다 .

우리의 목표는 지점 1의 정직한 검증인 비율이 전체 지분의 2/3보다 높은 시점을 결정하는 것입니다. 즉, 비율이 다음과 같은 경우를 살펴봅니다.

\frac{\text{분기 1 검증인의 지분}}{\text{분기 1 검증인의 지분 + 분기 2 검증인의 지분}},
지점 1의 검증 인 지분 + 지점 2의 검증인 지분 ,

2/3보다 우수합니다. 표기법을 사용하면 비율을 다음과 같이 다시 작성할 수 있습니다.

\frac{n_{\text H_1}s_{\text H_1}(t)}{n_{\text H_1}s_{\text H_1}(t)+n_{\text H_2}s_{\text H_2}(t )} ,
n H 1 H 1 ( t ) n H 1 H 1 ( t ) + n H 2 H 2 ( t ) ,

s_{\text H_1} s H 1s_{\text H_2} s H 2 는 각각 정직한 활성 검증인과 비활성 검증인의 지분입니다. n_{\text H_1} n H 1 검증인은 분기 1에서 항상 활성 상태이고, n_{\text H_2} n H 2 검증인은 분기 1에서 항상 비활성 상태입니다(분기 2에서 활성 상태임). 우리는 s_{\text H_1}(t)=s_0 s H 1 ( t ) = s 0s_{\text H_2}(t)=s_0e^{-t^2/2^{25}} s H 라는 것을 알고 있습니다. 2 ( t ) = s 0 e t 2/2 25 .
p_0=n_{\text H_1}/n_H p 0 = n H 1 / n H 표기법을 사용하면 시간에 따른 활성 유효성 검사기의 비율은 다음과 같습니다.

\frac{p_0}{p_0+(1-p_0)e^{-t^2/2^{25}}}.
p 0 p 0 + ( 1 p 0 ) e t 2 / 2 25 .
영상
이미지 1972×1474 227KB

이 그래프는 시간 경과에 따른 분기 1의 활성 유효성 검사기 비율을 보여줍니다. epoch t=4685 t = 4685 에포크 까지 완료가 발생하지 않은 경우 비활성 유효성 검사기가 제거되어 100% 활성 유효성 검사기로 점프됩니다.

비잔틴 유효성 검사기

이제 비잔틴 유효성 검사기를 추가합니다.

이러한 비잔틴 유효성 검사기는 제한 없이 각 파티션에 메시지를 보낼 수 있습니다.

이는 과도한 전력처럼 보일 수 있지만 이는 비잔틴에 더 많은 전력을 제공하기 위한 분산 시스템의 전통적인 가정입니다. ETH2 프로토콜을 제시하는 Gasper 논문은 해당 모델에서 PBFT 논문을 광범위하게 언급합니다. 다음은 PBFT 논문의 문장입니다. “복제된 서비스에 가장 큰 피해를 주기 위해 결함이 있는 노드를 조정하고, 통신을 지연하거나, 올바른 노드를 지연시킬 수 있는 매우 강력한 공격자를 허용합니다.”
우리의 가정은 덜 강력합니다. 유럽과 미국 사이의 통신이 단절되었지만 각 지역 내부의 통신은 여전히 작동하는 파티션의 경우를 상상해 보십시오. 우리 모델에 따르면, 비잔틴 검증인은 마치 지역 간에 통신하는 자신만의 방식이 있는 것처럼 제한 없이 두 지역과 통신할 수 있다고 가정합니다.

현재 우리가 분석하는 상황은 다음과 같습니다.

  • 지분의 1/3 미만이 비잔틴 검증인( \beta_0=n_{\rm B}/n<1/3 β 0 = n B / n < 1 / 3 )이 보유하고 있습니다.
  • 정직한 검증인은 분기 1 12 2 로 나뉩니다. 가지 1 1의 비율 p_0=n_{\rm H_1}/n_{\rm H} p 0 = n H 1 / n H 1 -p_0=n_{\rm H_2}/n_{\rm H} 1 p 0 = n H 2 / n H 지점 2 2 .
  • 비잔틴 유효성 검사기는 두 가지 모두와 통신할 수 있습니다.

비잔틴 검증자는 두 가지 모두에서 동시에 활성화되어 안전을 더 빠르게 위반할 수 있습니다. 분기 1의 활성 유효성 검사기 비율은 다음과 같습니다.

\frac{p_0(1-\beta_0)+\beta_0}{p_0(1-\beta_0)+\beta_0+(1-p_0)(1-\beta_0)e^{-t^2/2^{25}} }.
p 0 ( 1 β 0 ) + β 0 p 0 ( 1 β 0 ) + β 0 + ( 1 p 0 ) ( 1 β 0 ) e t 2 / 2 25 .

이 표는 비잔틴 검증인의 초기 비율( \beta_0 β 0 )에 따라 안전을 깨는 데 걸리는 시간을 보여줍니다.
영상

비잔틴 검증인은 안전 손실을 가속화할 수 있습니다. 초기 비율이 0.33이면 정직한 참여자만 참여하는 시나리오보다 충돌하는 마무리가 약 10배 빠르게 발생하도록 할 수 있습니다.


원본 문서는 가정, 시나리오, 프로토콜 및 기타 측면에 대한 자세한 내용을 제공합니다.

  • 비잔틴 검증자가 슬래시 가능한 행동을 저지르지 않고 안전을 위반하는 방법.
  • 비잔틴 검증인이 포크의 두 가지 모두에서 1/3 임계값을 초과하는 방법입니다.
  • 비활성 유출을 고려한 확률적 바운싱 공격 분석. 스포일러 경고: 이로 인해 공격이 약간 악화되지만, 공격이 시작되고 제 시간에 지속되는 조건으로 인해 실제 위협이 될 가능성은 거의 없습니다.

논문의 결과를 더 빠르게 살펴보기 위해 비잔틴 유효성 검사기가 초기 비율과 해당 동작이 삭감 가능한지 여부에 따라 얼마나 빨리 안전을 깨뜨릴 수 있는지 보여주는 그래픽이 있습니다. 보시다시피 슬래시 가능한 동작이 없어도 강력한 영향을 미칠 수 있습니다.

영상
이미지 1456×1090 72.4KB

결론

우리의 연구 결과는 BFT(Byzantine Fault Tolerance) 분석에서 페널티 메커니즘의 중요성을 강조합니다. 프로토콜 설계의 잠재적인 문제를 식별함으로써 향후 개선에 대한 통찰력과 추가 조사를 위한 도구를 제공하는 것을 목표로 합니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
1
즐겨찾기에 추가
코멘트