feedtrust-blockchain-backed.../feedtrust/core.py

26 lines
836 B
Python

from typing import Iterable, Dict, Any
from .policy import PolicyEngine
from .ledger_merkle import MerkleLedger
from .aggregation import Aggregator
class Core:
def __init__(self):
self.policy = PolicyEngine()
self.ledger = MerkleLedger()
self.aggregator = Aggregator()
def load_policies(self, dsl: str) -> None:
self.policy.load_policies(dsl)
def ingest_adapter_signal(self, venue: str, signal: str, value: float) -> None:
# Log to ledger and aggregator
self.ledger.add_entry({"venue": venue, "signal": signal, "value": value})
self.aggregator.add_signal(venue, signal, value)
def current_aggregate(self) -> float:
return self.aggregator.aggregate_price()
def root_proof(self) -> Dict[str, Any]:
return {"root": self.ledger.root().hex()}