Modular extension contracts for metagame platforms on Starknet. Compatible with Budokan and any platform implementing the same interfaces. Extensions define entry requirements, entry fees, prize distribution, and qualification criteria.
| Package | Path | Description |
|---|---|---|
metagame_extensions_interfaces |
packages/interfaces/ |
Pure traits and types for all extensions |
metagame_extensions_entry_requirement |
packages/entry_requirement/ |
EntryRequirementExtensionComponent for building entry validators |
metagame_extensions_entry_fee |
packages/entry_fee/ |
EntryFeeExtensionComponent for entry fee logic |
metagame_extensions_prize |
packages/prize/ |
PrizeExtensionComponent for prize distribution |
metagame_extensions_presets |
packages/presets/ |
Pre-built validator contracts |
metagame_extensions_test_common |
packages/test_common/ |
Shared test mocks and constants |
| Validator | Description |
|---|---|
| ERC20 Balance | Entries based on ERC20 token balance with min/max thresholds |
| Governance | Entries based on governance voting power and participation |
| Merkle | Entries based on merkle allowlist with off-chain proof API |
| Snapshot | Entries based on historical point-in-time snapshot data |
| Opus Troves | Entries based on Opus Protocol debt positions |
| Tournament | Entries based on prior tournament qualification |
| ZK Passport | Privacy-preserving entry via ZK proofs (Garaga Honk verifier) |
Toolchain versions are pinned in .tool-versions:
- Scarb 2.15.1
- Starknet Foundry 0.56.0
scarb build # Build all packagessnforge test --workspace # Run all tests
snforge test -p metagame_extensions_presets # Run validator tests only
snforge test -p metagame_extensions_presets <name> # Run a specific test by filter
snforge test --workspace --coverage # Run with code coveragescarb fmt --workspace # Format Cairo files
scarb fmt --check --workspace # Check formatting (used in CI)Deployment scripts are in scripts/. Each validator has its own deploy script.
# 1. Configure environment
cp .env.example .env
# Edit .env with STARKNET_NETWORK, OWNER_ADDRESS, etc.
# 2. Deploy a validator
./scripts/deploy_erc20_balance_validator.sh
./scripts/deploy_governance_validator.sh
./scripts/deploy_opus_troves_validator.sh
./scripts/deploy_snapshot_validator.sh
./scripts/deploy_tournament_validator.sh
./scripts/deploy_zkpassport_validator.sh
./scripts/deploy_open_entry_validator.shRequires starkli and scarb. See scripts/README.md for detailed deployment instructions.