Role in the System
The Kingdom serves as the trusted central authority that:- Coordinates Multi-Party Computations (MPC): Orchestrates secure computation protocols across multiple duchies to compute aggregate measurements while preserving privacy
- Manages Measurement Lifecycle: Tracks measurements from creation through completion, including state transitions and participant coordination
- Provides Public APIs: Exposes APIs for Measurement Consumers (publishers/advertisers) and Event Data Providers (EDPs) to create and manage measurements
- Maintains System Metadata: Stores information about participants, certificates, data providers, and measurement consumers
The Kingdom does not have access to raw user-level data. All computations happen at the Duchy level using secure multi-party computation protocols.
Architecture
The Kingdom architecture consists of three main layers:Data Layer
Google Cloud Spanner for distributed, consistent storage of system state
Internal API
Kingdom Data Server providing internal services to system components
External APIs
Public and System API servers exposing functionality to external clients
Key Architectural Components
Database (Spanner)
The Kingdom uses Google Cloud Spanner as its primary data store, configured via the_spannerConfig in the Kubernetes deployment:
- Global Distribution: Spanner provides globally distributed, horizontally scalable storage
- Strong Consistency: ACID transactions ensure data consistency across all operations
- Schema Management: Automatic schema updates via init containers in deployments
- Measurements and their state transitions
- Requisitions (data requests to EDPs)
- Participants (Measurement Consumers, Data Providers, Duchies)
- Certificates and authentication credentials
- Event Groups and metadata descriptors
- Model providers, lines, and releases
- Panel exchange workflows
Storage Infrastructure
Beyond Spanner, the Kingdom relies on:- Certificate Storage: TLS certificates and keys for secure communication
- Configuration Storage: Protocol configurations, duchy information, and metadata type definitions
- Secret Management: Kubernetes secrets for sensitive credentials
Responsibilities
Measurement Orchestration
- Measurement Creation: Accept measurement requests from Measurement Consumers
- Requisition Generation: Create data requisitions for Event Data Providers
- Duchy Coordination: Assign computation participants and track their readiness
- State Management: Transition measurements through states (PENDING → COMPUTING → SUCCEEDED/FAILED)
- Result Aggregation: Collect and return final measurement results
Participant Management
Measurement Consumers
Measurement Consumers
Organizations (advertisers, publishers) that request cross-media measurements. The Kingdom manages their accounts, API keys, certificates, and measurement requests.
Event Data Providers (EDPs)
Event Data Providers (EDPs)
Organizations that provide event-level data for measurements. The Kingdom tracks their event groups, data availability, and requisition fulfillment.
Duchies
Duchies
Computational nodes that perform secure multi-party computation. The Kingdom coordinates their participation and tracks computation progress.
API Services
The Kingdom exposes multiple API surfaces: Public API (v2alpha): For external clients (Measurement Consumers, EDPs)- Create and manage measurements
- Register data providers and event groups
- Manage certificates and API keys
- Track measurement status
- Report computation progress
- Coordinate multi-party protocols
- Access system-level resources
- Direct database operations
- Background job processing
- Internal state management
Service Architecture
The Kingdom is deployed as multiple cooperating services:Communication Security
All Kingdom services communicate using:- Mutual TLS (mTLS): Certificate-based authentication for all gRPC connections
- Certificate Validation: Authority Key Identifier (AKID) to principal mapping
- Encrypted Channels: TLS 1.3 for all network communication
Deployment Configuration
The Kingdom deployment is defined insrc/main/k8s/kingdom.cue with three main services:
- gcp-kingdom-data-server: Internal API server (port 8443)
- system-api-server: System API for duchies and internal components (port 8443)
- v2alpha-public-api-server: Public API for external clients (port 8443)
- Health checks on port 8080
- Automatic schema migrations via init containers
- ConfigMap and Secret volume mounts for configuration
- Network policies restricting access
Background Jobs
The Kingdom runs scheduled maintenance tasks:- Completed Measurements Deletion: Removes old completed measurements (hourly at :15)
- Pending Measurements Cancellation: Cancels stale pending measurements (hourly at :45)
- Exchanges Deletion: Cleans up old panel exchange data (daily at 6:40 AM)
Supported Protocols
The Kingdom supports multiple secure computation protocols:Liquid Legions V2
Primary MPC protocol for reach and frequency measurements
Reach-Only Liquid Legions V2
Optimized protocol for reach-only measurements
Honest Majority Share Shuffle
Alternative protocol with different security assumptions
TrusTee
Trusted execution environment-based protocol
Next Steps
Kingdom Services
Learn about individual Kingdom services and their APIs
Kingdom Daemons
Understand background jobs and scheduled tasks