CLE-Net Validator Roles
Version: 1.0
Last Updated: 2026-02-10
Status: Design Document
Overview
CLE-Net validators have specialized roles that reflect the cognitive nature of the network. Unlike traditional blockchain validators who only validate transactions, CLE-Net validators participate in cognitive processes including law discovery, validation, conflict resolution, and network health monitoring.
Validator Roles
1. Cognitive Miner
Purpose: Discovers new cognitive laws from interaction data.
Responsibilities:
Analyze human interaction data (text, voice, documents, video)
Extract symbolic patterns and decision rules
Propose new cognitive laws for validation
Earn CCS for successful discoveries
Requirements:
Minimum stake: 1000 tokens
Access to interaction data sources
Symbol extraction capabilities
LLM inference capabilities
Rewards:
Base reward: 100 CCS per discovered law
Bonus for high-confidence laws: +50 CCS
Bonus for novel discoveries: +100 CCS
Example Workflow:
# 1. Analyze interaction data
interaction_data = analyze_interaction(conversation)
# 2. Extract symbolic pattern
pattern = extract_symbolic_pattern(interaction_data)
# 3. Propose new law
propose_msg = ProposeLawMessage(
proposer_id="miner1",
law_type=LawType.SYMBOLIC_RULE,
symbolic_expression=pattern,
context="customer_service",
evidence=["ticket_123", "ticket_456"],
confidence=0.8
)
law = cognitive_module.handle_propose_law(propose_msg)
2. State Validator
Purpose: Validates proposed laws and ensures law integrity.
Responsibilities:
Review proposed cognitive laws
Vote on law activation (approve/reject)
Verify law integrity and correctness
Ensure laws follow CLE-Net protocols
Requirements:
Minimum stake: 1000 tokens
Understanding of CLE-Net protocols
Ability to evaluate law quality
High uptime (>95%)
Rewards:
Base reward: 10 CCS per vote
Bonus for correct votes: +20 CCS
Penalty for incorrect votes: -10 CCS
Validation Criteria:
Well-formedness: Law has all required fields
Integrity: Law hash matches computed hash
Evidence: Law has sufficient supporting evidence
Context: Law is appropriate for its context
Novelty: Law is not a duplicate of existing laws
Example Workflow:
# 1. Review proposed law
law = cognitive_module.keeper.get_law("law_abc123")
# 2. Evaluate law quality
is_valid = evaluate_law(law)
# 3. Cast vote
validate_msg = ValidateLawMessage(
validator_id="validator1",
law_id=law.law_id,
vote=is_valid,
reason="Law is well-formed and supported by evidence"
)
cognitive_module.handle_validate_law(validate_msg)
3. Conflict Resolver
Purpose: Detects and resolves conflicts between laws.
Responsibilities:
Monitor for conflicting laws
Report conflicts to the network
Propose conflict resolutions
Manage context boundaries
Requirements:
Minimum stake: 1500 tokens (higher due to complexity)
Deep understanding of CLE-Net semantics
Conflict resolution expertise
High uptime (>95%)
Rewards:
Base reward: 50 CCS per conflict reported
Bonus for successful resolution: +200 CCS
Bonus for context boundary creation: +100 CCS
Conflict Types:
Direct Contradiction: Laws with opposite expressions
Example: “Users must always authenticate” vs “Users never authenticate”
Context Overlap: Laws that conflict in overlapping contexts
Example: Same rule applies to different but overlapping contexts
Semantic Conflict: Laws that are semantically incompatible
Example: “Enable feature X” vs “Disable feature X” (same feature)
Resolution Strategies:
Merge: Combine conflicting laws into a single, more nuanced law
Prioritize: Select one law as primary based on evidence
Deprecate: Mark conflicting laws as deprecated
Context Split: Create separate context boundaries for each law
Example Workflow:
# 1. Detect conflict
conflicting_laws = detect_conflicts(law1, law2)
if conflicting_laws:
# 2. Report conflict
report_msg = ReportConflictMessage(
reporter_id="resolver1",
conflicting_law_ids=[law1.law_id, law2.law_id],
conflict_description="Direct contradiction in customer service context"
)
resolution_id = cognitive_module.handle_report_conflict(report_msg)
# 3. Propose resolution
resolve_msg = ResolveConflictMessage(
resolver_id="resolver1",
resolution_id=resolution_id,
conflicting_law_ids=[law1.law_id, law2.law_id],
resolution_type="context_split",
context_boundaries=["customer_service_premium", "customer_service_standard"]
)
cognitive_module.handle_resolve_conflict(resolve_msg)
4. Watchdog
Purpose: Monitors network health and detects anomalies.
Responsibilities:
Monitor block production
Detect stalled blocks
Monitor validator participation
Detect CCS decay anomalies
Report network health issues
Requirements:
Minimum stake: 500 tokens (lower due to passive role)
Network monitoring capabilities
Alert system
High uptime (>99%)
Rewards:
Base reward: 5 CCS per block monitored
Bonus for anomaly detection: +50 CCS
Bonus for early warning: +100 CCS
Anomaly Types:
Stalled Blocks: No blocks produced for extended period
Low Participation: Few validators participating in consensus
CCS Decay Anomalies: Unusual CCS decay patterns
Validator Misbehavior: Validators acting maliciously
Network Partition: Network split into disconnected segments
Alert Levels:
INFO: Normal operation, informational only
WARNING: Potential issue, requires attention
ERROR: Confirmed issue, requires action
CRITICAL: Severe issue, immediate action required
Example Workflow:
# 1. Monitor block production
time_since_last_block = time.time() - last_block_time
if time_since_last_block > block_timeout:
# 2. Create alert
alert = Alert(
severity=AlertSeverity.ERROR,
alert_type=AlertType.STALLED_BLOCK,
message=f"No blocks produced for {time_since_last_block} seconds",
metadata={"last_block_height": last_block_height}
)
# 3. Report to network
watchdog_module.report_alert(alert)
Validator Registration
Registration Process
Stake Deposit: Deposit minimum stake (varies by role)
Role Selection: Choose validator role
Key Generation: Generate validator keys
Registration Message: Submit registration to consensus module
Activation: Wait for activation by existing validators
Registration Example
# Register as Cognitive Miner
register_msg = RegisterValidatorMessage(
validator_address="miner1",
role=ValidatorRole.COGNITIVE_MINER,
stake=1000.0
)
success = consensus_module.handle_register_validator(register_msg)
Role Changes
Validators can change roles by:
Submitting a role change request
Meeting new role’s stake requirements
Waiting for approval from existing validators
Updating validator information
# Change from Cognitive Miner to Conflict Resolver
update_msg = UpdateValidatorMessage(
validator_address="miner1",
stake_delta=500.0 # Increase stake to 1500
)
consensus_module.handle_update_validator(update_msg)
# Then submit role change request
role_change_msg = RoleChangeMessage(
validator_address="miner1",
new_role=ValidatorRole.CONFLICT_RESOLVER
)
consensus_module.handle_role_change(role_change_msg)
Validator Rewards
CCS Distribution
CCS is distributed based on:
Role: Different roles have different reward structures
Contribution: Quality and impact of contributions
Participation: Active participation in network activities
Uptime: High uptime earns bonus rewards
Reward Calculation
def calculate_reward(validator: ValidatorInfo, contribution: Contribution) -> float:
base_reward = get_base_reward(validator.role)
quality_bonus = contribution.quality * 50
participation_bonus = contribution.participation * 20
uptime_bonus = validator.uptime * 10
total_reward = base_reward + quality_bonus + participation_bonus + uptime_bonus
return total_reward
Reward Distribution
Rewards are distributed:
Per Block: For block proposal and validation
Per Law: For law discovery and validation
Per Conflict: For conflict detection and resolution
Per Epoch: For overall participation and uptime
Validator Slashing
Slashing Conditions
Validators are slashed for:
Low Uptime: Uptime below 50%
Double Signing: Signing conflicting blocks
Invalid Votes: Voting on invalid laws
Misbehavior: Malicious behavior detected by watchdogs
Slashing Penalties
First Offense: 10% stake slashed
Second Offense: 25% stake slashed
Third Offense: 50% stake slashed and deactivation
Slashing Example
# Validator with low uptime
if validator.uptime < 50:
# Slash 50% of stake
validator.stake *= 0.5
# Remove from active validators
consensus_module.keeper.remove_active_validator(validator.validator_address)
# Remove from proposer queue
consensus_module.keeper.proposer_queue.remove(validator.validator_address)
Validator Governance
Voting Rights
All validators have voting rights on:
Protocol Upgrades: Changes to CLE-Net protocols
Parameter Changes: Changes to network parameters
Role Changes: Changes to validator roles
Emergency Actions: Emergency network actions
Voting Process
Proposal: Submit a governance proposal
Discussion: Discuss proposal in governance forum
Voting: Validators vote on proposal
Execution: Proposal is executed if approved
Voting Example
# Submit governance proposal
proposal = GovernanceProposal(
proposal_id="prop_001",
proposer_id="validator1",
proposal_type=ProposalType.PARAMETER_CHANGE,
description="Increase minimum stake to 1500 tokens",
changes={"min_stake": 1500}
)
# Validators vote
vote = GovernanceVote(
proposal_id="prop_001",
validator_id="validator1",
vote=True # Approve
)
Validator Requirements Summary
Role |
Min Stake |
Uptime |
Skills |
Rewards |
|---|---|---|---|---|
Cognitive Miner |
1000 |
>90% |
Symbol extraction, LLM |
100-250 CCS/law |
State Validator |
1000 |
>95% |
Law evaluation |
10-30 CCS/vote |
Conflict Resolver |
1500 |
>95% |
Conflict resolution |
50-350 CCS/conflict |
Watchdog |
500 |
>99% |
Network monitoring |
5-155 CCS/block |
Next Steps
Implement validator registration system
Implement role-based reward distribution
Implement slashing mechanism
Implement governance voting
Test validator roles on testnet
Deploy to mainnet