BAL, 거래 검증을 병렬로 바꾸는 접근 목록
Strawmap Glamsterdam (2027년 초) · BALs
블록이 접근한 모든 계정과 저장 공간, 실행 후 값을 담은 목록을 블록마다 의무로 붙이고 그 해시를 블록 헤더에 넣습니다. 노드는 이 목록을 보고 데이터 읽기와 거래 검증을 동시에 처리할 수 있습니다.
왜 필요한가
지금 이더리움 노드는 새 블록을 받으면 안에 든 거래를 하나씩 차례로 실행합니다. 어떤 거래가 어떤 계정과 저장 공간을 건드릴지 실행해 보기 전에는 알 수 없기 때문입니다. 거래마다 접근할 주소를 미리 적는 접근 목록(EIP-2930)이 있지만 선택 사항이라 모든 거래가 쓰지는 않습니다. BAL은 이 목록을 블록 단위로 의무화합니다. 블록이 건드린 모든 주소와 저장 위치, 실행 후 값이 목록으로 함께 오면 노드는 필요한 데이터를 미리 한꺼번에 읽고 서로 겹치지 않는 거래를 동시에 실행할 수 있습니다. 실행 뒤 전체 상태를 하나로 요약하는 상태 루트(state root) 계산도 나눠서 할 수 있습니다. 거래를 직접 실행하지 않고 목록만으로 상태를 갱신하는 길도 열립니다. 제안 원문은 블록 실행 시간이 병렬 읽기와 병렬 실행 수준으로 줄어든다고 설명합니다. Strawmap은 이 항목을 Glamsterdam의 헤드라이너로 두고 있지만 예상일 뿐 확정은 아닙니다. 2026년 7월 개발자 콜에서는 관련 변경을 데브넷7에 넣기로 했고 목록을 얼마나 오래 보관할지는 아직 논의 중입니다.
어떻게 동작하나
- 목록 작성 블록을 만드는 쪽이 거래를 실행하면서 접근한 모든 계정과 저장 위치, 실행 후 값을 모아 목록으로 만듭니다. 목록의 해시만 블록 헤더에 넣고 목록 자체는 블록 본문 밖에서 따로 전달합니다.
- 데이터 미리 읽기 블록을 받은 노드는 거래를 실행하기 전에 목록을 보고 필요한 계정과 저장 데이터를 디스크에서 한꺼번에 미리 읽어 둡니다.
- 동시 실행과 검증 같은 계정이나 저장 위치를 건드리지 않는 거래는 동시에 실행합니다. 실행 결과를 목록과 맞춰 봅니다. 목록의 해시가 헤더 값과 다르면 블록을 무효로 봅니다.
관련 EIP
- EIP-7928 블록 수준 접근 목록