BAL, 거래 검증을 병렬로 바꾸는 접근 목록

Strawmap Glamsterdam (2027년 초) · BALs

블록이 접근한 모든 계정과 저장 공간, 실행 후 값을 담은 목록을 블록마다 의무로 붙이고 그 해시를 블록 헤더에 넣습니다. 노드는 이 목록을 보고 데이터 읽기와 거래 검증을 동시에 처리할 수 있습니다.

왜 필요한가

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

어떻게 동작하나

  1. 목록 작성 블록을 만드는 쪽이 거래를 실행하면서 접근한 모든 계정과 저장 위치, 실행 후 값을 모아 목록으로 만듭니다. 목록의 해시만 블록 헤더에 넣고 목록 자체는 블록 본문 밖에서 따로 전달합니다.
  2. 데이터 미리 읽기 블록을 받은 노드는 거래를 실행하기 전에 목록을 보고 필요한 계정과 저장 데이터를 디스크에서 한꺼번에 미리 읽어 둡니다.
  3. 동시 실행과 검증 같은 계정이나 저장 위치를 건드리지 않는 거래는 동시에 실행합니다. 실행 결과를 목록과 맞춰 봅니다. 목록의 해시가 헤더 값과 다르면 블록을 무효로 봅니다.

관련 EIP

← 로드맵