7.6 KiB
Source Project Structure
This document describes the expected structure of the source project (smom-dbis-138) that contains Besu configuration files generated by Quorum-Dev-Quickstart or Quorum-Genesis-Tool.
Directory Structure
Standard Structure (Flat Config Files)
smom-dbis-138/
├── config/
│ ├── genesis.json # REQUIRED: Network genesis block
│ ├── permissions-nodes.toml # REQUIRED: Node allowlist
│ ├── permissions-accounts.toml # REQUIRED: Account allowlist
│ ├── static-nodes.json # List of static peer nodes
│ ├── config-validator.toml # Validator node configuration (template)
│ ├── config-sentry.toml # Sentry node configuration (optional)
│ ├── config-rpc-public.toml # RPC node configuration
│ └── config-rpc-core.toml # Alternative RPC configuration
└── keys/
└── validators/
├── validator-1/ # Validator 1 keys
│ ├── key.pem
│ ├── pubkey.pem
│ ├── address.txt
│ └── key.priv
├── validator-2/ # Validator 2 keys
├── validator-3/ # Validator 3 keys
└── validator-4/ # Validator 4 keys
Enhanced Structure (Node-Specific Directories)
When using Quorum-Genesis-Tool or Quorum-Dev-Quickstart, you may have:
smom-dbis-138/
├── config/
│ ├── genesis.json # REQUIRED: Network genesis block
│ ├── permissions-nodes.toml # REQUIRED: Node allowlist
│ ├── permissions-accounts.toml # REQUIRED: Account allowlist
│ ├── static-nodes.json # List of static peer nodes
│ └── nodes/ # Node-specific directories
│ ├── validator-1/ # Validator 1 specific files
│ │ ├── config.toml # Node-specific config
│ │ ├── nodekey # Node P2P private key
│ │ ├── nodekey.pub # Node P2P public key
│ │ └── ... # Other node-specific files
│ ├── validator-2/
│ ├── sentry-1/
│ ├── rpc-1/
│ └── ...
└── keys/
└── validators/
├── validator-1/ # Validator signing keys (QBFT)
├── validator-2/
└── ...
File Descriptions
Required Files
config/genesis.json
- Network genesis block configuration
- Contains QBFT/IBFT2 consensus settings
- Generated by: Quorum-Genesis-Tool or Quorum-Dev-Quickstart
- Location: Copied to
/etc/besu/genesis.jsonon all nodes
config/permissions-nodes.toml
- Node allowlist (permissioned network)
- Defines which nodes can join the network
- Generated by: Quorum-Genesis-Tool
- Location: Copied to
/etc/besu/permissions-nodes.tomlon all nodes
config/permissions-accounts.toml
- Account allowlist (if using account permissioning)
- Defines which accounts can transact
- Generated by: Quorum-Genesis-Tool
- Location: Copied to
/etc/besu/permissions-accounts.tomlon all nodes
Optional Files
config/static-nodes.json
- List of static peer nodes
- Used for initial peer discovery
- Note: Can be generated/updated by deployment scripts
- Location: Copied to
/etc/besu/static-nodes.jsonon all nodes
config/config-validator.toml
- Validator node configuration template
- Applied to all validator nodes (106-110)
- Location: Copied to
/etc/besu/config-validator.tomlon validators
config/config-sentry.toml
- Sentry node configuration template
- Applied to all sentry nodes (111-114)
- Location: Copied to
/etc/besu/config-sentry.tomlon sentries
config/config-rpc-public.toml or config/config-rpc-core.toml
- RPC node configuration template
- Applied to all RPC nodes (115-117)
- Location: Copied to
/etc/besu/config-rpc-public.tomlon RPC nodes
Node-Specific Directories (config/nodes/)
If using Quorum-Genesis-Tool, each node may have its own directory:
Structure
config/nodes/
├── validator-1/
│ ├── config.toml # Node-specific configuration
│ ├── nodekey # Node P2P private key
│ ├── nodekey.pub # Node P2P public key
│ └── ... # Other node-specific files
├── validator-2/
├── sentry-1/
├── rpc-1/
└── ...
Benefits
- Node-specific configurations
- Per-node keys and certificates
- Easier node management
- Matches Quorum-Genesis-Tool output
Script Support
The deployment scripts automatically detect and use config/nodes/ structure if present, otherwise fall back to flat structure.
Validator Keys (keys/validators/)
Structure
keys/validators/
├── validator-1/ # Validator 1 signing keys (QBFT)
│ ├── key.pem # Private key (PEM format)
│ ├── pubkey.pem # Public key (PEM format)
│ ├── address.txt # Validator address (hex)
│ └── key.priv # Private key (raw format)
├── validator-2/
├── validator-3/
└── validator-4/
Purpose
- Validator signing keys for QBFT/IBFT2 consensus
- Used to sign blocks
- Location: Copied to
/keys/validators/on validator nodes only
Node Name Mapping
The deployment scripts map VMIDs to node names:
| VMID | Node Name | Type |
|---|---|---|
| 106 | validator-1 | Validator |
| 107 | validator-2 | Validator |
| 108 | validator-3 | Validator |
| 109 | validator-4 | Validator |
| 110 | validator-5 | Validator |
| 111 | sentry-2 | Sentry |
| 112 | sentry-3 | Sentry |
| 113 | sentry-4 | Sentry |
| 114 | sentry-5 | Sentry |
| 115 | rpc-1 | RPC |
| 116 | rpc-2 | RPC |
| 117 | rpc-3 | RPC |
When using config/nodes/ structure, the scripts look for directories matching these node names.
File Copy Logic
The deployment scripts use the following priority when copying config files:
- If
config/nodes/<node-name>/config.tomlexists: Use node-specific config - If
config/config-<type>.tomlexists: Use type-specific template - Fallback: Use container template (created during installation)
Example for validator-1 (VMID 106):
- Try
config/nodes/validator-1/config.toml - Try
config/config-validator.toml - Fallback to template in container
Prerequisites Check
Before deployment, run the prerequisites check:
./scripts/validation/check-prerequisites.sh /path/to/smom-dbis-138
This verifies:
- Required directories exist
- Required files exist
- Node-specific directories (if present)
- Validator keys structure
- Provides warnings for optional files
Generated Files
The following files are typically generated by Quorum-Genesis-Tool or Quorum-Dev-Quickstart:
- genesis.json - Network genesis configuration
- permissions-nodes.toml - Node allowlist
- permissions-accounts.toml - Account allowlist (if used)
- static-nodes.json - Static peer list (can be regenerated)
- config.toml (in node directories) - Node-specific configs
- nodekey/nodekey.pub (in node directories) - Node P2P keys
- keys/validators/ - Validator signing keys
Files Modified/Generated by Deployment
The deployment scripts may modify or generate:
- static-nodes.json - Updated with actual enode URLs during bootstrap
- Node-specific configs - May be customized per container if using templates