2026-05-27 작성. Glamsterdam의 BAL(Block-level Access Lists, EIP-7928 후보) 도입을 가정했을 때 Verex 백본을 어떤 구조로 둘지의 비교 분석. 결정은 Glamsterdam EIP scope 확정 + Phase 2 백본 fork/replace 검토 시점으로 보류 — 분석은 미리 박아둠.
contract VerexSettlement {
// 모든 마켓이 같은 매핑에 들어감
mapping(bytes32 marketId => Market) public markets;
mapping(bytes32 marketId => mapping(address => uint256)) public bets;
function placeBet(bytes32 marketId, ...) external { /*...*/ }
function resolve(bytes32 marketId, ...) external { /*...*/ }
}
문제: BAL이 storage slot 단위로 충돌 판단할 때, 같은 매핑의 다른 key도 internally는 hash로 slot이 흩어지지만 — EVM 표준은 “같은 슬롯의 충돌 여부”만 본다. 매핑은 그 자체로 base slot 1개 + 동적 슬롯들. 결과적으로:
contract VerexMarketFactory {
function createMarket(bytes32 spec) external returns (address market) {
market = address(new VerexMarket(spec)); // 마켓당 독립 컨트랙트
emit MarketCreated(market, spec);
}
}
contract VerexMarket {
address public immutable asset; // 결제 자산
mapping(address => uint256) public bets; // 이 마켓 베팅만
uint256 public totalYes;
uint256 public totalNo;
function placeBet(bool side, uint256 amount) external { /*...*/ }
}
장점:
위 두 패턴 비교는 BAL 친화도만 본다. 실제 결정 시점에는 다음을 같이 평가해야 한다.
docs/history/<date>-bal-pattern-choice.md에 결정 + 이유 기록