mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-06-08 07:13:53 +02:00
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
"""Gate ratification — cumulative oracle rep threshold.
|
|
|
|
Source of truth: ``infonet-economy/RULES_SKELETON.md`` §5.3 step 3.
|
|
|
|
A gate is "ratified" once the SUM of its members' oracle rep crosses
|
|
``CONFIG['gate_ratification_rep']`` (default 50). Ratification is a
|
|
recognition signal — it doesn't gate any functionality, but UI may
|
|
surface it as "this gate is established / legitimate".
|
|
|
|
Pure function over the chain. The threshold is governable via petition
|
|
(Sprint 7) by changing the CONFIG value.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Iterable
|
|
|
|
from services.infonet.config import CONFIG
|
|
from services.infonet.gates.sacrifice import compute_member_set
|
|
from services.infonet.reputation import compute_oracle_rep
|
|
|
|
|
|
def _ratification_threshold() -> int:
|
|
return int(CONFIG["gate_ratification_rep"])
|
|
|
|
|
|
# Public alias for consumers who don't want to import CONFIG.
|
|
RATIFICATION_THRESHOLD = _ratification_threshold()
|
|
|
|
|
|
def cumulative_member_oracle_rep(
|
|
gate_id: str,
|
|
chain: Iterable[dict[str, Any]],
|
|
) -> float:
|
|
"""Sum of current members' oracle rep balances."""
|
|
chain_list = list(chain)
|
|
members = compute_member_set(gate_id, chain_list)
|
|
return sum(compute_oracle_rep(m, chain_list) for m in members)
|
|
|
|
|
|
def is_ratified(
|
|
gate_id: str,
|
|
chain: Iterable[dict[str, Any]],
|
|
) -> bool:
|
|
"""``True`` once cumulative member oracle rep meets the threshold."""
|
|
return cumulative_member_oracle_rep(gate_id, chain) >= float(_ratification_threshold())
|
|
|
|
|
|
__all__ = [
|
|
"RATIFICATION_THRESHOLD",
|
|
"cumulative_member_oracle_rep",
|
|
"is_ratified",
|
|
]
|