Validator Network
The Noderr Validator Network is a decentralized network of nodes that secure the protocol by fulfilling ERC-7540 vault operations and validating governance decisions.
Network Architecture
┌─────────────────────────────────────────────────────────────────┐
│ NODERR NODE NETWORK │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Oracle Nodes │ │Guardian Nodes│ │Validator Nodes│ │
│ │ (15-50) │ │ (25-100) │ │ (100-1000) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ │ Strategy │ Risk │ Vault │
│ │ Execution │ Validation │ Fulfillment │
│ │ │ │ │
│ └────────────┬────┴────────┬────────┘ │
│ │ │ │
│ ┌───────▼─────────────▼───────┐ │
│ │ Smart Contracts (Base) │ │
│ └─────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Node Types
Oracle Nodes
Purpose: Execute trading strategies and generate yield
Requirements:
- GPU (NVIDIA RTX 3080 or better)
- 32GB RAM
- 1TB SSD
- 100 Mbps internet
Responsibilities:
- ML-based strategy generation
- Strategy execution via Floor Engine
- Price oracle updates
- Governance proposal creation
Rewards: 40% of protocol fees
Guardian Nodes
Purpose: Validate strategies and monitor risk
Requirements:
- GPU (NVIDIA RTX 3070 or better)
- 16GB RAM
- 500GB SSD
- 50 Mbps internet
Responsibilities:
- Strategy backtesting (1000+ Monte Carlo simulations)
- Risk assessment and scoring
- Live strategy monitoring
- Emergency pause capability
Rewards: 30% of protocol fees
Validator Nodes
Purpose: Fulfill ERC-7540 vault operations
Requirements:
- 8GB RAM
- 100GB SSD
- 25 Mbps internet
Responsibilities:
- Monitor pending deposit/redeem requests
- Execute fulfillments when selected by lottery
- Governance vote execution
- Data availability
Rewards: 20% of protocol fees
MicroNodes
Purpose: Lightweight network participation
Requirements:
- 2GB RAM
- 20GB storage
- Internet connection
Responsibilities:
- Heartbeat reporting
- Network health monitoring
- Data replication
Rewards: 10% of protocol fees
Validator Selection
Chainlink VRF Lottery
Validators are selected using Chainlink VRF for provably fair randomness:
function selectValidator(uint256 requestId) internal returns (address) {
// Request random number from Chainlink VRF
uint256 randomWord = vrfCoordinator.requestRandomWords(...);
// Weight by reputation and stake
uint256 totalWeight = getTotalValidatorWeight();
uint256 selection = randomWord % totalWeight;
// Find selected validator
return getValidatorByWeight(selection);
}
Reputation Weighting
Note: The weighting below determines validator selection probability for task assignment. It is distinct from the TrustFingerprint™ score formula (Uptime 50%, Task Success Rate 40%, Stake 10%), which governs rewards and governance voting power.
Validator selection probability for task assignment is weighted by:
| Factor | Weight |
|---|---|
| Stake Amount | 40% |
| Uptime | 25% |
| Successful Fulfillments | 20% |
| Time as Validator | 15% |
Slashing Conditions
Validators can be slashed for:
| Violation | Slash Amount |
|---|---|
| Failed fulfillment | 1% of stake |
| Downtime (>1 hour) | 0.5% of stake |
| Double fulfillment attempt | 5% of stake |
| Malicious behavior | 100% of stake |
Running a Validator Node
Installation
# Clone the repository
git clone https://github.com/Noderrxyz/noderr-protocol.git
cd noderr-protocol/contracts/node-clients/validator
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your settingsConfiguration
# Network
RPC_URL=https://sepolia.base.org
CHAIN_ID=84532
# Validator
VALIDATOR_PRIVATE_KEY=0x...
VALIDATOR_ADDRESS=0x...
# Contracts
FULFILLMENT_MANAGER=0x8b6f112178bAC1a8968B12C292B0B2A123eE42D2
# Monitoring
PROMETHEUS_PORT=9090
LOG_LEVEL=info
Start Node
npm run start:validator
Monitoring
Access metrics at http://localhost:9090/metrics
Key metrics:
validator_fulfillments_total- Total fulfillments executedvalidator_uptime_seconds- Node uptimevalidator_pending_requests- Pending requests in queuevalidator_gas_used- Gas consumed
Staking
Minimum Stake
| Node Type | Minimum Stake |
|---|---|
| Oracle | 25,000 NODR |
| Guardian | 25,000 NODR |
| Validator | 10,000 NODR |
| MicroNode | 1,000 NODR |
Staking Contract
// Stake tokens
function stake(uint256 amount) external {
require(amount >= minStake, "Below minimum");
nodrToken.transferFrom(msg.sender, address(this), amount);
stakes[msg.sender] += amount;
emit Staked(msg.sender, amount);
}
// Unstake (with delay)
function unstake(uint256 amount) external {
require(stakes[msg.sender] >= amount, "Insufficient stake");
unstakeRequests[msg.sender] = UnstakeRequest({
amount: amount,
unlockTime: block.timestamp + UNSTAKE_DELAY
});
emit UnstakeRequested(msg.sender, amount);
}
Unstaking Delay
- Validators: 7 days
- Guardians: 14 days
- Oracles: 30 days
Network Stats (Testnet)
| Metric | Value |
|---|---|
| Total Validators | 0 (launching) |
| Total Staked | 0 NODR |
| Avg Fulfillment Time | N/A |
| Network Uptime | N/A |
Last Updated: December 2025