작성자: 토마스 제이 러쉬
이 기사는 EIP 4345의 영향을 예측하는 연습입니다. 이 EIP는 난이도 폭탄을 2021년 12월로 연기할 것을 제안합니다. 우리의 목표는 난이도 폭탄이 2022년 5월에 다시 폭발할 것으로 예상되도록 언제 얼마나 지연되어야 하는지 결정하는 데 도움을 줄 수 있는지 확인하는 것입니다.
예비 지식
이전에 이 주제에 대해 많은 기사를 작성했습니다.
난이도 산정 방법에 대해: 어렵지 않습니다(중국어 번역)
난이도 폭탄 지연 방법: 난이도 폭탄 확산 방법
여기 및 여기에서 이전 기사를 참조하십시오.
난이도 폭탄의 계산은 난이도를 조정하고 블록 생성 시간의 변동을 안정화하는 데 사용되는 A 파트와 난이도 폭탄 본체인 B 파트(자세한 설명은 위의 첫 번째 기사 참조)의 두 부분으로 구성됩니다. ).
파트 A의 조정은 블록별로 발생하여 블록 시간이 약 13.5초 변동하도록 합니다. 조정의 이 부분은 정말 잘 작동하며 난이도 폭탄이 없다면 블록 시간을 거의 일정하게 유지할 것입니다. 파트 B에 관심이 있습니다.
파트 B의 폭탄은 100,000 블록마다 값을 두 배로 늘리는 단계 함수입니다. "폭발"하기 전까지는 아무도 눈치채지 못하지만 일단 폭발하기 시작하면 값이 매우 빠르게 상승합니다(2^n과 동일).
알아채다
알아채다
나는 혼자 야. 공개적으로 사용 가능한 데이터를 사용하여 이 기사를 작성하는 것은 지쳐가는 마음입니다. 여기서 내가 말하는 모든 것은 논의의 여지가 있지만 더 이상 그것에 대해 책임을 질 준비가 되어 있지 않습니다. 의심과 주의를 가지고 이 기사의 모든 내용을 보고 사용하십시오.
실제 데이터 대 이론 데이터
저는 수학자가 아닌 엔지니어이기 때문에 수학적 예측보다 실제 데이터에 더 관심이 있습니다. 다음에서는 데이터가 어떻게 변할지 예측합니다. 내 예측은 위의 공식을 기반으로 하지만 모두 간단하고 직관적인 Excel 스프레드시트에 있습니다.
내 논의는 세 가지 간단한 관찰을 기반으로 합니다.
파트 A는 정말 잘 작동하여 블록 시간을 평균 13.3으로 일정하게 만들었습니다.
파트 B도 매우 잘 작동하며 파트 A와 독립적이며 블록 시간만 향상시킵니다.
폭탄 부분을 무시하면 우리의 예측은 보수적일 것입니다.
즉, 우리의 예측이 폭탄의 영향을 무시한다면 우리의 예측은 실제 시간보다 "빠르게" 될 것입니다. 이렇게 하면 예측이 잘못되더라도 추가 버퍼 시간이 생깁니다.
첫 번째 테이블은 현재 블록 번호(작성 당시 1339 1127)를 사용하고 블록당 13.3초에서 블록 높이 1400 0000까지 시간을 추정합니다.
자세히 살펴보면 평균 블록 시간이 블록 1200 0000 이후 증가하고 있음을 알 수 있습니다(8월과 9월에는 감소했지만). 물론 평균 블록 시간은 폭탄이 폭발함에 따라 점점 더 빨라질 것입니다.
다시 말하지만, 보수적으로 하기 위해 블록 생성 시간을 13.3초로 선택하여 향후 블록 파기의 특정 시간을 예측하고 당분간 난이도 폭탄의 영향을 무시합니다. 난이도 폭탄이 터지면 평균 블록 시간이 늘어나므로 난이도 폭탄을 무시한 결과 예상 시간이 실제 채굴 시간보다 빨라진다. (예를 들어 블록 1400 0000은 2022년 1월 10일 "이전"에 채굴됩니다.)
포크할 때
우리가 고려하는 첫 번째 질문은 "언제 포크해야 합니까?"입니다.
제 생각에는 대답은 전적으로 fake_period의 값에 달려 있습니다. 질문: "어떤 블록 번호를 포크해야 합니까? 1370 0050, 1380 0050 또는 13900 0050?" 독자 - 수식 계산에 보다 큼 기호를 사용해야 합니까, 아니면 크거나 등호를 사용해야 합니까?)
아래 표는 fake_block 계산을 보여줍니다.
여기서 우리는 각 블록이 채굴될 정확한 시간의 예측을 의사 블록 번호의 계산과 병치합니다(실제 블록 번호에서 오프셋을 빼고 의사 블록 번호를 얻고 의사 기간 번호를 도출합니다).
의사 기간 번호는 난이도 폭탄의 값이 의사 기간 번호의 값에 전적으로 의존하기 때문에 우리가 관심을 갖는 것입니다. 전작부터 난이도 폭탄의 효과는 사이비 주기가 41에서 42 사이가 되면 나타나기 시작하고 그 이전에는 확연히 드러나지 않을 것이라고 생각하고 있습니다. 즉 의사 주기가 41이 되면 파트 B의 효과가 파트 A의 효과보다 우선합니다.
의사 주기 숫자가 41에 도달할 때까지 난이도 폭탄의 효과가 나타나지 않는 이유를 여기서 설명하고 싶지 않습니다. 내가 말하려는 것은 폭탄이 차단 시간을 증가시킬 뿐이며 폭탄이 없으면 부품 A는 차단 시간을 약 13.3초로 유지한다는 것입니다. 즉, 블록 생성 사이의 평균 시간은 13.3초보다 높을 것이며, 너무 낮으면(블록 생성 속도가 너무 빠름) 파트 A에서 난이도를 조정하고 블록 생성 시간을 되돌립니다. 무뚝뚝하게 — — 이것은 파트 A가 작동하는 방식입니다.
위의 분석을 감안할 때 블록 1380 0000 이후에 언제든지 분기를 제안합니다. 12월 중순경. 블록 번호 1385 0000과 같이 특정 블록 번호(날짜가 아닌)를 타겟팅하는 것이 좋습니다. "고통점"(즉, 블록 시간이 크게 느려지는 경우)은 1월 중순 경에 나타날 것입니다. 따라서 이 목표에도 오류가 있을 수 있습니다.
얼마나 많은 의사 블록을 연기해야 합니까?
고려해야 할 또 다른 질문은 "얼마나 많은 의사 블록을 상쇄해야 합니까?"입니다.
위에서 언급한 것처럼 오프셋은 의사 블록 번호를 결정하고, 의사 블록 번호는 의사 주기 번호를 결정하며, 이는 차례로 폭탄의 값을 결정합니다. 따라서 다음에서는 오프셋에 초점을 맞추고 무엇을 배울 수 있는지 살펴보겠습니다.
EIP 4354에서 제안하는 가치
먼저 이 EIP가 제안하는 오프셋을 살펴보자. 여기서는 평균 블록 시간 13.3초를 기준으로 간단한 그래프를 생성합니다. 마찬가지로, 우리는 폭탄의 효과를 무시합니다. 폭탄이 블록 시간을 증가시킬 뿐이므로 해당 블록 번호의 실제 발생이 우리의 예측보다 늦어진다는 것을 알고 있기 때문입니다. 우리는 블록 1380 0050에서 발생하도록 "Arrow Glacier"(다음 포크의 코드명)를 예약하고 이 EIP 제안 오프셋 1050 0000을 사용할 것입니다.
이 그래프는 우리가 (이 EIP에서 제안한 대로) 오프셋을 1050 0000으로 설정하면 빠르면 4월 중순(의사 기간 수가 다시 41에 도달할 때)에 난이도 폭탄이 폭발하기 시작할 것임을 나타내는 것 같습니다. 5월 중순이 되면 블록이 상당히 느려지기 시작할 것입니다(의사 기간 수가 43에 도달함).
이전에 접한 가장 큰 의사 사이클 수는 "Byzantine" 포크 이전인 43입니다. 차단 시간의 증가는 몇 초 단위로 눈에 띄게 눈에 띄게 나타납니다.
초기 또는 늦은 포크 시간
재미로 포크를 더 일찍 또는 나중에 하면 어떻게 되는지 살펴보겠습니다.
아래 표는 예상 결과를 보여줍니다. 놀랍게도 포크 타이밍은 최종 결과에 영향을 미치지 않습니다. 그런데 조금 생각해보면 말이 되는 것 같아요. 의사 기간 번호를 결정하는 유일한 수량은 오프셋이기 때문입니다. 현재 포크 이전에 블록 생산을 느리게 만드는 것 외에도 포크 시간을 연기하는 것은 다음 난이도 폭탄 폭발 시간(즉, 4월에서 5월 사이)에 영향을 미치지 않습니다.
"Arrow Glacier" 하드포크를 조만간 구현하든 1050 0000의 오프셋을 사용하는 한 다음 난이도 폭탄 폭발 타이밍에 영향을 미치지 않는다는 것을 위의 그림에서 볼 수 있습니다.
그럼 얼마를 상쇄해야 할까요?
이 질문은 5월에 이더리움 핵심 개발자에게 얼마나 많은 압력을 가하고 싶은지에 달려 있습니다. 5월에 전 세계가 이더리움 블록이 느리다고 불평할 수 있도록 그들에게 많은 압력을 가하고 싶다면 오프셋을 더 낮게 설정하십시오. "지금 행동하는 것이 좋지만 서두르지 않는 것이 좋습니다"와 같이 약간의 넛지를 주고 싶다면 더 큰 오프셋을 선호하십시오.
1050 0000의 오프셋을 사용하는 경우 아마도 많은 스트레스를 받고 있을 것입니다. 4월 말까지 블록 생산이 크게 둔화(1초 정도)될 것으로 예상할 수 있습니다. 하지만 난이도 폭탄의 문제점은 일단 폭발하기 시작하면 쉴 틈이 없다는 것입니다.
"상당히(더 느림)"에서 "매우 눈에 띕니다", "불편함", "도대체 뭐야", "이더리움의 죽음"으로 가는 데 4-6주밖에 걸리지 않았습니다. 농담이 아닙니다. 100,000 블록 주기마다 점점 더 길어지고(왜냐하면 매 주기마다 폭탄 값이 두 배가 되고 블록 시간이 매우 빠르게 증가하기 때문입니다) 폭발하기 시작하면 더 빨리 폭발할 것이기 때문입니다. 그리고 더 빠르게. "Byzantium" 포크 이전의 폭발에 대한 위의 내 기사를 참조하십시오. 난이도 폭탄은 아주 천천히 왔지만 폭발 이후에는 다른 장면이었습니다.
마지막 표에서 오프셋 1070 0000을 사용하는 것이 좋습니다. 또한 블록 1380 0050 이후 포크를 제안합니다. 이것은 우리에게 지금 휴식을 취하고 예상되는 다음 폭발을 5월 중순으로 미룰 시간을 줄 것입니다. 이것은 보수적인 추정이지만 현실적인 고려이기도 합니다.
요약하다
요약하다
핵심 개발자에게 어느 정도의 압력을 가할지 결정하십시오. 강하게 밀고 싶다면 오프셋을 1050 0000으로 설정하고 여유를 갖고 싶다면 1070 0000으로 설정하세요. 변동하는 경우 이 둘 사이의 값을 취할 수 있습니다.
분기점을 활성화하기 위한 "언제" 결정은 다음 폭발 시점에 영향을 미치지 않습니다(즉, 폭탄은 5월에 터집니다). 이 결정이 영향을 미치는 유일한 것은 "Arrow Glacier" 하드 포크 이전의 블록 시간입니다. 오프셋만 의사 주기 번호에 영향을 미치고 의사 주기 번호만 난이도 폭탄의 값에 영향을 미치기 때문입니다.
우리의 작업을 지원
TrueBlocks는 Ethereum Foundation(2018), Consensys(2019), Moloch DAO(2021) 및 가장 최근에 Filecoin/IPFS(2021)의 소액 보너스와 함께 개인 자금으로 전적으로 지원되는 프로젝트입니다.
이 기사를 즐겼거나 우리 작업을 지원하고 싶다면 GitCoin 홈페이지(https://gitcoin.co/grants/184/trueblocks)를 참조하십시오. 다음 매칭 라운드에 기부해주세요. 우리는 더 큰 매치메이킹 보상이라는 추가 혜택을 얻습니다. 적은 양으로도 큰 효과를 볼 수 있습니다.
또는 저희에게 직접 기부하는 것을 선호하실 수도 있습니다.
원본 링크:
https://medium.com/coinmonks/adventures-in-difficulty-bombing-837890476630
