# Key Rotation Complete

**Date**: 2025-12-20  
**Status**: ✅ COMPLETE

## Summary

Successfully rotated all validator and node identities for the QBFT network using Quorum-Genesis-Tool. All keys have been regenerated, genesis.json has been updated with new extraData, and all configuration files have been regenerated with new enode URLs.

## 1. Detected Consensus: QBFT

**Evidence**: `genesis.json` contains:
```json
"config": {
  "qbft": {
    "blockperiodseconds": 2,
    "epochlength": 30000,
    "requesttimeoutseconds": 10
  }
}
```

## 2. Node Count: 5 Validators, 4 Sentries, 3 RPC Nodes

- **Validators**: 5 (VMIDs 1000-1004)
- **Sentries**: 4 (VMIDs 1500-1503)
- **RPC Nodes**: 3 (VMIDs 2500-2502) - *Using member4-member6 from output/2025-12-20-19-54-21*

## 3. Commands Executed

```bash
npx --yes quorum-genesis-tool \
  --consensus qbft \
  --chainID 138 \
  --validators 5 \
  --members 4 \
  --bootnodes 0 \
  --blockperiod 2 \
  --epochLength 30000 \
  --requestTimeout 10 \
  --difficulty 1 \
  --gasLimit 0x1c9c380
```

**Output Location**: `output/2025-12-20-19-54-02/`

## 4. Files Changed/Created

### Updated Files
- ✅ `smom-dbis-138-proxmox/config/genesis.json` - Updated `extraData` with new QBFT validator addresses

### Created Files
- ✅ `smom-dbis-138-proxmox/config/static-nodes.json` - New validator enode URLs
- ✅ `smom-dbis-138-proxmox/config/permissioned-nodes.json` - All node enode URLs (JSON format)
- ✅ `smom-dbis-138-proxmox/config/permissions-nodes.toml` - All node enode URLs (TOML format)

### Copied Keys
- ✅ `smom-dbis-138-proxmox/keys/validators/validator-*/key.priv` - Validator private keys
- ✅ `smom-dbis-138-proxmox/keys/validators/validator-*/address.txt` - Validator addresses
- ✅ `smom-dbis-138-proxmox/config/nodes/validator-*/nodekey` - Validator nodekeys (P2P identity)
- ✅ `smom-dbis-138-proxmox/config/nodes/sentry-*/nodekey` - Sentry nodekeys (P2P identity)
- ✅ `smom-dbis-138-proxmox/config/nodes/rpc-*/nodekey` - RPC nodekeys (P2P identity)

## 5. New Validator Addresses (Ordered)

```
validator0: 0x1c25c54bf177ecf9365445706d8b9209e8f1c39b
validator1: 0xc4c1aeeb5ab86c6179fc98220b51844b74935446
validator2: 0x22f37f6faaa353e652a0840f485e71a7e5a89373
validator3: 0x573ff6d00d2bdc0d9c0c08615dc052db75f82574
validator4: 0x11563e26a70ed3605b80a03081be52aca9e0f141
```

## 6. New Enode List (Ordered)

### Validators
```
enode://2221dd9fc65c9082d4a937832cba9f6759981888df6798407c390bd153f4332c152ea5d03dd9d9cda74d7990fb3479a5c4ba7166269322be9790eed9ebdcfe24@192.168.11.100:30303
enode://4e358db339804914d53bec6de23a269aef7be54c2812001025e6a545398ac64b2513a418cd3e2ca06dc57daf5c0aa2fb97c9948b6d7893e2bd51bf67dae97923@192.168.11.101:30303
enode://0daef7e3041ab3a5d73646ec882410302d63ece279b781be5cfed94c1970aacb438aeafc46d63a630b4ea5f7a0572a3a7edff028b16abc4c76ee84358af8c31f@192.168.11.102:30303
enode://107e59cb6c5ddf000082ddfd925aa670cba0c6f600c8e3dc5cdd6eb4ca818e0c22e4b33ef605eb4efd76ef29177ca00fd84a79935eccdddd2addbbb26d37a4a4@192.168.11.103:30303
enode://59844ade9912cee3a609fae1719694c607b30ac60a08532e6b15592524cb5f563f32c30d63e45075e7b9c76170a604f01fc6de02e3102f0f8d1648bf23425c16@192.168.11.104:30303
```

### Sentries (Members)
```
enode://2d4eeff2d5710427cf5f11319b48a883d5eb39e18e3a42052ccc6ea613d1f0ac72a17fc560b84e270ce0320b518bee7632071f20f64a69b6634496a66adafb71@192.168.11.150:30303
enode://88e407e879af2e5a6a9cfd16385390a7e6fce91fae462418fc858047d61f932f1e0114e99a8ff84c8f261c733cbb5bd7a76a7fbb5e5eac9920a41b11f6e5a07b@192.168.11.151:30303
enode://7a98f86ced272d3f61046b08bb617d157516fd21e3cf6edb0f8090ca87ea5f920bc05dac489c82cf7b8d32bd64c51f904d868ed0ce8f9c83bf1e9c2022b33baa@192.168.11.152:30303
enode://0cbd315d8f80f8ba46f0229297a493a71d37287cbfb0fc991dd3680fa4db21e2891d4dd2f1577c5020d93224a2f0f690b331551490796ddee3bbb56ecfa6b6f5@192.168.11.153:30303
```

### RPC Nodes (from member4-member6 in output/2025-12-20-19-54-21)
```
enode://6cdc892fa09afa2b05c21cc9a1193a86cf0d195ce81b02a270d8bb987f78ca98ad90d907670796c90fc6e4eaf3b4cae6c0c15871e2564de063beceb4bbfc6532@192.168.11.250:30303
enode://07daf3d64079faa3982bc8be7aa86c24ef21eca4565aae4a7fd963c55c728de0639d80663834634edf113b9f047d690232ae23423c64979961db4b6449aa6dfd@192.168.11.251:30303
enode://83eb8c172034afd72846740921f748c77780c3cc0cea45604348ba859bc3a47187e24e5fad7f74e5fe353e86fd35ab7c37f02cfbb8299a850a190b40968bd8e2@192.168.11.252:30303
```

## 7. Verification Checklist

✅ All validator keys generated using quorum-genesis-tool  
✅ genesis.json updated with new extraData (QBFT format, RLP-encoded)  
✅ static-nodes.json created with new validator enodes  
✅ permissioned-nodes.json created with all node enodes  
✅ permissions-nodes.toml created with all node enodes  
✅ Keys copied to repository structure  
✅ Validator addresses in extraData match new validator keys  

✅ **RPC nodes (VMIDs 2500-2502) included**

**Note**: RPC nodekeys were sourced from `member4-member6` in `output/2025-12-20-19-54-21` directory, which were generated in a separate quorum-genesis-tool run.

## 8. Updated extraData

The `extraData` field in `genesis.json` has been updated with the new QBFT validator addresses:

```
0xf88fa00000000000000000000000000000000000000000000000000000000000000000f869941c25c54bf177ecf9365445706d8b9209e8f1c39b94c4c1aeeb5ab86c6179fc98220b51844b749354469422f37f6faaa353e652a0840f485e71a7e5a8937394573ff6d00d2bdc0d9c0c08615dc052db75f825749411563e26a70ed3605b80a03081be52aca9e0f141c080c0
```

This contains:
- 32-byte vanity (zeros)
- RLP-encoded list of 5 validator addresses (20 bytes each)
- Empty seals section for genesis

## Next Steps

1. **Deploy new keys to nodes**: Copy the new keys from the repository to the deployed nodes
2. **Update node configurations**: Ensure all nodes reference the new keys
3. **Restart nodes**: Restart all nodes to apply the new keys
4. **Verify block production**: Confirm the network starts producing blocks with the new validators

## Important Notes

- **All old keys have been replaced** - Old validator addresses are no longer in use
- **genesis.json updated in-place** - All other settings (chainId, gasLimit, alloc, etc.) preserved
- **Deterministic generation** - All keys generated using quorum-genesis-tool for consistency
- **No manual edits required** - All configuration files auto-generated from the tool output

