The ADIC Genesis System establishes the initial state of the ADIC-DAG network, including token allocations, genesis identities, and system parameters. Every ADIC node validates its genesis configuration against a canonical hash to ensure network consistency.
- Genesis Configuration
- Canonical Genesis Hash
- Token Allocations
- Bootstrap vs Non-Bootstrap Nodes
- Genesis Validation
- Configuration Examples
- Troubleshooting
The genesis configuration is defined in the [genesis] section of your node's configuration file (e.g., bootstrap-config.toml).
[genesis]
deposit_amount = 0.1 # Anti-spam deposit amount
timestamp = "2025-01-01T00:00:00Z" # Genesis timestamp
chain_id = "adic-dag-v1" # Network chain identifier
# Genesis identities (g0, g1, g2, g3 for d=3)
genesis_identities = ["g0", "g1", "g2", "g3"]
# Token allocations [address, amount_in_ADIC]
allocations = [
["0100000000000000000000000000000000000000000000000000000000000000", 60_000_000], # Treasury (20%)
["c1403f4763367340178077be2ab3144af2b9065901232335f960a9910bb9ab1b", 45_000_000], # Liquidity (15%)
["2f89601b32149388d38652ac432307bf183eb97de87b5599cb76d256fd7a7f89", 45_000_000], # Community (15%)
["98831caf9b0861ec6eba3072275efc0de1557062043d317ba5f218361e028441", 150_000_000], # Genesis pool (50%)
["52ba18a771da5f8ebfb7e0eb88a229b748637c8041e0ddf06271b0511e67a5d4", 100_000], # g0
["39abcb02b715f742149a698dcfd534884b8696d07d3d40afd83a0ebd5dcfa3e8", 100_000], # g1
["fd2401601d44dd03cfe585782b48bf2f5681ac3264975ab43a4fea2d0089a543", 100_000], # g2
["d5828a126c990608a0d385cb31dcc818fcef5bdf64a2315481f7f656d42e53af", 100_000], # g3
]
# System parameters (aligned with ADIC-DAG paper)
[genesis.parameters]
p = 3 # Prime p
d = 3 # Dimension
rho = [2, 2, 1] # Axis radii
q = 3 # Diversity threshold
k = 20 # k-core threshold
depth_star = 12 # Depth D*
homology_window = 5 # Δ (Delta)
alpha = 1.0 # Reputation exponent α
beta = 1.0 # Reputation exponent βThe canonical genesis hash for the ADIC mainnet is:
e03dffb732c202021e35225771c033b1217b0e6241be360ad88f6d7ac43675f8
This hash is deterministically computed from the genesis configuration and ensures that all nodes on the network agree on the initial state. Any node with a different genesis hash will be unable to join the ADIC network.
The genesis hash is computed using SHA-256 over the following components:
- Chain ID
- Timestamp
- All token allocations (address and amount pairs)
- Genesis identities (g0-g3)
- System parameters
This creates a cryptographic commitment to the entire genesis state.
The ADIC genesis mint creates a total supply of 300,400,000 ADIC tokens (300.4M), allocated as follows:
| Category | Amount (ADIC) | Percentage | Purpose |
|---|---|---|---|
| Treasury | 60,000,000 | 20% | Protocol development, governance |
| Liquidity | 45,000,000 | 15% | Market liquidity provision |
| Community R&D | 45,000,000 | 15% | Community development, research |
| Genesis Pool | 150,000,000 | 50% | Genesis validator rewards |
| g0 | 100,000 | 0.033% | Genesis identity 0 |
| g1 | 100,000 | 0.033% | Genesis identity 1 |
| g2 | 100,000 | 0.033% | Genesis identity 2 |
| g3 | 100,000 | 0.033% | Genesis identity 3 |
| TOTAL | 300,400,000 | 100% |
The four genesis identities (g0, g1, g2, g3) are special addresses that correspond to the d+1 = 4 required genesis validators for the ADIC-DAG protocol (where d=3 dimensions). These identities bootstrap the network's reputation system.
For testnet deployments, smaller allocations are used for testing purposes:
allocations = [
["0100000000000000000000000000000000000000000000000000000000000000", 10_000], # Treasury
["c1403f4763367340178077be2ab3144af2b9065901232335f960a9910bb9ab1b", 1_000], # node-1
["2f89601b32149388d38652ac432307bf183eb97de87b5599cb76d256fd7a7f89", 1_000], # node-2
["98831caf9b0861ec6eba3072275efc0de1557062043d317ba5f218361e028441", 1_000], # node-3
["52ba18a771da5f8ebfb7e0eb88a229b748637c8041e0ddf06271b0511e67a5d4", 10_000], # faucet
]Total testnet supply: 23,000 ADIC
Bootstrap nodes are special nodes that initialize the genesis state for the network. They:
- Create the
genesis.jsonmanifest file - Initialize token allocations in the economics engine
- Set the canonical genesis hash
- Do NOT validate against an existing genesis
Configuration:
[node]
bootstrap = trueThere should typically be only ONE bootstrap node per network to prevent genesis state conflicts.
Non-bootstrap nodes are regular validator or full nodes that:
- Require a
genesis.jsonfile to start - Validate their genesis configuration against the canonical hash
- Reject genesis mismatches to prevent network splits
- Join an existing network
Configuration:
[node]
bootstrap = false # or omit this field (defaults to false)Non-bootstrap nodes must obtain the genesis.json file from:
- The bootstrap node
- Other network peers
- A trusted source (e.g., official repository)
When a bootstrap node starts:
1. Load genesis config from node config file
2. Apply genesis allocations to economics engine
3. Compute genesis hash
4. Create genesis.json manifest
5. Save genesis.json to data directory
6. Continue normal node operation
When a non-bootstrap node starts:
1. Check for genesis.json in data directory
├─ If missing → ERROR: "Non-bootstrap node requires genesis.json"
└─ If present → Continue
2. Load genesis.json manifest
3. Verify genesis hash matches canonical hash
├─ If mismatch → ERROR: "Genesis hash mismatch!"
└─ If match → Continue
4. Load genesis config
5. Continue normal node operation
The genesis.json file contains:
{
"config": {
"deposit_amount": 0.1,
"timestamp": "2025-01-01T00:00:00Z",
"chain_id": "adic-dag-v1",
"genesis_identities": ["g0", "g1", "g2", "g3"],
"allocations": [[address, amount], ...],
"parameters": {
"p": 3,
"d": 3,
"rho": [2, 2, 1],
"q": 3,
"k": 20,
"depth_star": 12,
"homology_window": 5,
"alpha": 1.0,
"beta": 1.0
}
},
"hash": "e03dffb732c202021e35225771c033b1217b0e6241be360ad88f6d7ac43675f8",
"version": "1.0.0"
}[node]
data_dir = "./data"
validator = true
name = "bootstrap1.adicl1.com"
bootstrap = true # Bootstrap node
[network]
enabled = true
p2p_port = 19000
quic_port = 9000
max_peers = 50
[genesis]
deposit_amount = 0.1
timestamp = "2025-01-01T00:00:00Z"
chain_id = "adic-dag-v1"
genesis_identities = ["g0", "g1", "g2", "g3"]
allocations = [
["0100000000000000000000000000000000000000000000000000000000000000", 60_000_000],
["c1403f4763367340178077be2ab3144af2b9065901232335f960a9910bb9ab1b", 45_000_000],
# ... (full allocation list)
]
[genesis.parameters]
p = 3
d = 3
rho = [2, 2, 1]
q = 3
k = 20
depth_star = 12
homology_window = 5
alpha = 1.0
beta = 1.0[node]
data_dir = "./data"
validator = true
name = "validator1.adic.network"
# bootstrap = false # Default, can be omitted
[network]
enabled = true
p2p_port = 19001
quic_port = 9001
bootstrap_peers = ["bootstrap1.adicl1.com:9000"]
dns_seeds = ["_seeds.adicl1.com"]
max_peers = 50
# Genesis section can be omitted for non-bootstrap nodes
# They will validate against genesis.json file[node]
data_dir = "./test_data"
validator = true
name = "testnet-node-1"
bootstrap = false
[consensus]
# Relaxed parameters for testnet
q = 1
r_sum_min = 2.0
r_min = 0.5
k = 5
[network]
enabled = true
bootstrap_peers = ["testnet-bootstrap.adicl1.com:9000"]
[genesis]
chain_id = "adic-testnet"
allocations = [
["0100000000000000000000000000000000000000000000000000000000000000", 10_000],
# ... (testnet allocations)
]Cause: Your node is configured as a non-bootstrap node but cannot find the genesis.json file.
Solution:
- Obtain
genesis.jsonfrom the bootstrap node or trusted source - Place it in your data directory (e.g.,
./data/genesis.json) - Verify the file is valid JSON
- Restart your node
Alternatively, if you're starting a new network, set bootstrap = true in your config.
Cause: Your genesis configuration produces a different hash than the canonical network genesis.
Solution:
- Verify you're using the correct
genesis.jsonfile - Check the canonical hash:
e03dffb732c202021e35225771c033b1217b0e6241be360ad88f6d7ac43675f8 - Ensure allocations match exactly (order matters)
- Verify timestamps and chain ID are correct
- If joining an existing network, obtain a fresh
genesis.jsonfrom a trusted source
Cause: The genesis configuration failed validation checks.
Solution:
- Check that allocations are not empty
- Verify all addresses are valid hex strings (64 characters)
- Ensure amounts are positive integers
- Verify genesis identities array has exactly 4 entries
- Check that system parameters are valid (e.g.,
p = 3,d = 3)
Symptom: Node starts but genesis allocations are not visible in economics engine.
Solution:
- Check node logs for "Applying genesis allocations" message
- Verify the genesis flag wasn't already applied (stored in data directory)
- For a fresh start, delete the data directory and restart
- Ensure economics engine is properly initialized
Issue: Multiple nodes configured with bootstrap = true create conflicting genesis states.
Solution:
- Only one node should be a bootstrap node
- All other nodes should be non-bootstrap
- If you already have multiple bootstrap nodes:
- Choose ONE canonical bootstrap node
- Stop all other nodes
- Delete their data directories
- Copy
genesis.jsonfrom canonical bootstrap - Configure them as non-bootstrap (
bootstrap = false) - Restart nodes
- BOOTSTRAP.md - Guide for setting up bootstrap nodes
- TESTNET.md - Testnet validator guide
- API.md - Economics and genesis API endpoints
- ADIC-DAG Paper - Section 6.2: Economics & Genesis
For genesis-related issues:
- Check this troubleshooting guide
- Review node logs for error messages
- Verify genesis.json format and hash
- Open an issue: https://github.com/IguanAI/adic-core/issues
Version: 0.1.8 Last Updated: 2025-09-30