verex

Singleton settlement vs Factory pattern — BAL 친화 비교

2026-05-27 작성. Glamsterdam의 BAL(Block-level Access Lists, EIP-7928 후보) 도입을 가정했을 때 Verex 백본을 어떤 구조로 둘지의 비교 분석. 결정은 Glamsterdam EIP scope 확정 + Phase 2 백본 fork/replace 검토 시점으로 보류 — 분석은 미리 박아둠.

1. 싱글톤(monolithic) settlement — Polymarket 류

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개 + 동적 슬롯들. 결과적으로:

2. Factory 패턴 — 마켓별 독립 컨트랙트 (Verex가 검토 중인 방향)

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 { /*...*/ }
}

장점:

3. 결정 시 추가로 고려할 축

위 두 패턴 비교는 BAL 친화도만 본다. 실제 결정 시점에는 다음을 같이 평가해야 한다.

4. 트리거와 후속 작업