ACDT #102 · 누가 무슨 말을 했나
sose · 2026.10.27 · Short
ACDT #102 · 누가 무슨 말을 했나 보안 감사가 끝날 때까지 테스트넷 포크를 최소 2주 미룬다 EIP-8037/8038 보안 이슈와 후디 연기 · 일정 결정 00:24:42 가스 리프라이싱 EIP 두 개가 배포된 컨트랙트와 예상 못 한 방식으로 상호작용한다는 보안사 보고가 나와 후디 포크를 미룰지와 스펙을 고칠지가 논의됐다. · Toni Wahrs
ACDT 102 · 누가 무슨 말을 했나 보안 감사가 끝날 때까지 테스트넷 포크를 최소 2주 미룬다 EIP-8037/8038 보안 이슈와 후디 연기 · 일정 결정 00:24:42 가스 리프라이싱 EIP 두 개가 배포된 컨트랙트와 예상 못 한 방식으로 상호작용한다는 보안사 보고가 나와 후디 포크를 미룰지와 스펙을 고칠지가 논의됐다. · Toni Wahrstätter (EF, 리서처): 하드코딩된 가스, 갑자기 늘어나는 gasLeft, 리펀드가 막혀 있던 실행 경로를 여는 문제 등 네 가지 이슈를 정리했다. 피해 범위는 꽤 파악됐지만 후디 일정은 최소 1주 미루고 논의를 이어가자고 했다. · Fredrik: ChainSecurity와 Dedaub에 종합 감사를 의뢰했고 보고서까지 약 2주가 걸린다며 확신이 설 때까지 기다리자고 권고했다. · Maria Silva (EIP-8037 제1저자): 영향받는 컨트랙트를 찾아 팀에 연락해 자체 수정을 기본 경로로 삼되, 고칠 수 없고 피해 범위가 클 때만 최소한의 표적화된 스펙 변경을 고려하자고 했다. 스펙 변경은 비용이 크고 다른 컨트랙트를 또 깨뜨릴 수 있다는 이유다. · Łukasz Rozmej (Nethermind, EIP-8037 공동 저자): 어느 길이 맞을지 모르니 스펙 변경과 비변경 두 경로를 병행 탐색해 두자고 했다. 자신의 스펙 변경 PR은 여러 AI 모델이 서로의 허점을 찾게 하며 12시간 이상 다듬은 결과라고 설명했고 Maria Silva가 이를 불변식별 표적 수정으로 쪼개는 데 동의했다. · Francesco D'Amato (EF, 리서처): Sourcify에 검증된 모든 컨트랙트를 스캔하는 등 종합 분석을 했는데 알려진 이슈를 빠르게 찾은 뒤 이틀간 의미 있는 발견이 없었다며 스펙 변경 가능성은 매우 낮다고 봤다. (채팅) "다시 강조하면, 지금으로서는 스펙 변경이 필요해 보이지 않는다." (Toni Wahrstätter, 00:23:49) getPayload 타임아웃 제거 · 확정 00:36:39 데브넷에서 일부 EL 클라이언트가 더 비싼 블록을 만들려고 getPayload 응답을 미루다 타임아웃이 반복되자, 타임아웃 정의 자체를 없애고 즉시 응답을 요구하는 변경을 두고 논의했다. · Daniel Lehrner: 더 가치 있는 블록을 만들려고 일부러 기다린 것은 맞지만 이번 논의로 그게 의도된 동작이 아님이 분명해졌다며 이제 스펙이 명확해졌다고 했다. · Fabio: FOCIL이 들어오면 빈 블록은 인클루전 리스트를 만족하지 못해 무가치하므로, 첫 응답에 최소한 인클루전 리스트 트랜잭션은 담아야 해 약간의 지연이 생길 수 있다고 지적했다. · Nico Flaig (ChainSafe, Lodestar): 빌더가 설정돼 있으면 CL이 getHeader 응답 이후에 getPayload를 불러 EL에 최대한의 빌드 시간을 줄 수도 있다며 EL의 기대 동작이 스펙에서 충분히 명확한지 물었다. · Dustin Brody (Nimbus): 데브넷에서 Reth의 일관된 getPayload 타임아웃을 봤는데 버그인지 스펙이 허용하는 동작인지 구분할 수 없었다며 어느 쪽이든 의도를 명확히 하는 이 변경이 유용하다고 했다. · Potuz (Offchain Labs, Prysm): 이 변경이 Prysm의 FCU 타이밍을 깨뜨릴 수 있다고 우려했고 FOCIL과 쇼터 슬롯이 이 상호작용과 함께 더 깊이 검토되길 바란다고 했다. (채팅) "우리는 더 가치 있는 블록을 만들려고 일부러 기다렸지만, 논의를 거치고 보니 그게 우리가 해야 할 일이 아니었던 것 같다." (Daniel Lehrner, 00:33:15) 페이로드 가스 한도 고시프 체크 ePBS에서는 무효 페이로드를 퍼뜨리기 쉬워지기 때문에, 합의 계층(CL)이 고시프 단계에서 트랜잭션 수를 가스 한도 기준으로 미리 걸러내자는 제안이 나왔다. · Nico Flaig (ChainSafe, Lodestar): 비드의 가스 한도를 최소 트랜잭션 가스로 나눠 페이로드의 최대 트랜잭션 수를 제한하고 고시프와 역직렬화 단계에서 일찍 거부하자고 제안했다. P2P 계층을 단단하게 만드는 방법이라고 했다. · Justin Traglia (EF, 보안): 체크 자체는 아주 기본적인 것이라 지지하지만 CL에 최소 트랜잭션 가스를 정의해야 하는 점이 유일한 불만이라고 했다. 스펙에 넣어야 거부(reject)와 피어 다운스코어링이 가능하다고도 덧붙였다. · Toni Wahrstätter (EF, 리서처): 최소 트랜잭션 가스는 포크마다 바뀌고(글램스테르담 이전 21,000, 이후 12,000) 프레임 트랜잭션으로 또 바뀔 텐데, CL이 EL 상수를 알아야 하는 결합은 근본적으로 잘못됐다며 반대했다. · Potuz (Offchain Labs, Prysm): Toni의 우려에 대한 절충으로, EL과 일치할 필요 없는 아주 낮은 보수적 하한(예: 1,000 미만)을 쓰면 자주 고칠 필요 없이 최악의 DoS는 막을 수 있다고 제안했다. "CL이 갑자기 최소 트랜잭션 가스 값을 알아야 하는 식으로 EL과 CL을 결합하는 것은 내게는 근본적으로 잘못됐다고 느껴진다." (Toni Wahrstätter, 00:52:12) 쇼터 슬롯 스펙 병합 전략 · 확정 01:04:15 쇼터 슬롯 구현이 PR 3개에 흩어져 어떤 커밋을 테스트 타깃으로 삼을지 혼란스러워지자, 헤제 본 스펙에 병합할지를 두고 공방이 벌어졌다. · Barnabas Busa (EF DevOps): 퀵 슬롯 구현 PR이 3개나 열려 있어 테스트 타깃이 혼란스럽다며 다음 데브넷이 겨냥할 스펙을 병합해 두는 쪽을 선호했다. 안정된 스펙 버전 없이 SFI가 먼저 나오는 것은 비현실적이라고 봤고 나중에는 슬롯 시간을 6/12초 그대로 두고 병합하면 아무것도 깨지지 않는다고 제안했다. · Potuz (Offchain Labs, Prysm): 포함이 확정되지 않은 피처는 메인 스펙 밖에 둬야 하고 테스트에 병합이 필요한 것도 아니라며 Barnabas에 반대했다. 피처 작성자가 데브넷용 태그를 제공하면 되고 그 태그가 메인 브랜치에서 나올 필요는 없다고 했다. 미니멀 스펙 시간을 바꾸면 Prysm 테스트가 깨진다고도 지적했다. · Matthew Keil (ChainSafe, Lodestar): 쟁점은 기계장치 자체가 아니라 슬롯 시간을 바꾼 채 병합하는 것이라며 메인넷 12초와 미니멀 6초를 그대로 두면 반대가 크게 줄어든다고 했다. 미니멀 시간 변경이 테스트를 깨뜨린다는 Potuz의 지적에는 동의했다. · Justin Traglia (EF, 보안): 과반 클라이언트가 헤제 스펙 병합에 동의할 때까지 피처로 남겨야 하며 SFI가 병합의 전제는 아니지만 폭넓은 클라이언트 지지가 필요하다고 정리했다. 결정은 디스코드와 ACDC로 넘겼다. "포함이 예정되지 않은 것들은 메인 스펙 밖에 두고 싶고, 테스트하기 위해 병합이 필요하다고 생각하지 않는다." (Potuz, 00:59:04) 남은 것 · Sam: 백필 중에는 엔벌로프 서명을 검증할 수 없다는 점을 명시하는 consensus-specs PR을 연다. · Nico Flaig: MIN TRANSACTION GAS 상수를 사용한 GetPayload 트랜잭션 수 고시프 체크 consensus-specs PR을 연다. · 전체 팀: 향후 비슷한 보안 돌발을 줄이기 위한 프로세스 개선안인 PM PR 2284를 검토한다. 콜 페이지에서 전체 보기 → https://ethcollective.xyz/calls/acdt-102