- Introduce production setup script: scripts/setup_production.py
- Generates aitbc1genesis (treasury) and aitbc1treasury (spending) wallets
- Encrypts keys via AES-GCM, stores password in keystore/.password (600)
- Creates allocations.json and genesis.json with fixed total supply
- Sets mint_per_unit=0 (no inflation)
- Update make_genesis.py:
- Accept allocations file instead of single faucet
- Use 'allocations' key in genesis (renamed from 'accounts')
- Enforce mint_per_unit=0 in default params
- Remove admin mint endpoint:
- Deleting MintFaucetRequest and /rpc/admin/mintFaucet from router.py
- Removes faucet CLI command from cli/aitbc_cli/commands/blockchain.py
- RPC supply endpoint now computes total supply from genesis file (fixed)
- Validators endpoint derives list from trusted_proposers config
- Config enhancements (config.py):
- Add keystore_path and keystore_password_file
- Change mint_per_unit default to 0
- main.py: Auto-load proposer private key from keystore into settings.proposer_key (hex) for future use
- Launcher scripts:
- scripts/mainnet_up.sh: Loads .env.production, derives proposer_id from keystore if needed, starts node + RPC
- scripts/devnet_up.sh: Updated to use new allocations-based genesis and proper proposer address
- Documentation:
- Rewrite blockchain-node/README.md for production model (no faucet, keystore management, multi-chain)
- Update MEMORY.md with production blockchain section
- Database: Multi-chain support already present via chain_id foreign keys.
This change makes the blockchain production‑ready: immutable supply, secure key storage, and removal of dev‑only admin functions.
Co-authored-by: Andreas Michael Fleckl <andreas@example.com>
- Change file mode from 644 to 755 for all project files
- Add chain_id parameter to get_balance RPC endpoint with default "ait-devnet"
- Rename Miner.extra_meta_data to extra_metadata for consistency