All checks were successful
Documentation Validation / validate-docs (push) Successful in 9s
- Create modular scripts for multi-node blockchain setup - Extract 6 core setup scripts from workflow documentation - Add master orchestrator script for complete setup - Replace inline code with script references in workflow - Create comprehensive README for script documentation - Copy scripts to aitbc for cross-node execution - Improve maintainability and reusability of setup process Scripts created: - 01_preflight_setup.sh - System preparation - 02_genesis_authority_setup.sh - Genesis node setup - 03_follower_node_setup.sh - Follower node setup - 04_create_wallet.sh - Wallet creation - 05_send_transaction.sh - Transaction sending - 06_final_verification.sh - System verification - setup_multinode_blockchain.sh - Master orchestrator This makes the workflow cleaner and scripts reusable while maintaining all functionality.
192 lines
4.7 KiB
Markdown
192 lines
4.7 KiB
Markdown
# AITBC Multi-Node Blockchain Setup Scripts
|
|
|
|
This directory contains modular scripts for setting up and managing a multi-node AITBC blockchain network.
|
|
|
|
## Scripts Overview
|
|
|
|
### Core Setup Scripts
|
|
|
|
1. **01_preflight_setup.sh** - Pre-flight system preparation
|
|
- Stops existing services
|
|
- Updates systemd configurations
|
|
- Sets up environment files
|
|
- Installs CLI tool
|
|
- Creates keystore and directories
|
|
|
|
2. **02_genesis_authority_setup.sh** - Genesis authority node setup (aitbc1)
|
|
- Pulls latest code
|
|
- Configures genesis authority
|
|
- Creates genesis block
|
|
- Starts blockchain services
|
|
|
|
3. **03_follower_node_setup.sh** - Follower node setup (aitbc)
|
|
- Configures follower node
|
|
- Sets up cross-node communication
|
|
- Starts follower services
|
|
|
|
4. **04_create_wallet.sh** - Wallet creation on follower node
|
|
- Creates new wallet using CLI tool
|
|
- Verifies wallet creation
|
|
- Returns wallet address
|
|
|
|
5. **05_send_transaction.sh** - Transaction sending
|
|
- Sends AIT from genesis to wallet
|
|
- Monitors transaction confirmation
|
|
- Verifies balance update
|
|
|
|
6. **06_final_verification.sh** - Complete system verification
|
|
- Checks blockchain synchronization
|
|
- Verifies transaction success
|
|
- Tests network health
|
|
- Validates service status
|
|
|
|
### Master Script
|
|
|
|
- **setup_multinode_blockchain.sh** - Master orchestrator script
|
|
- Runs all scripts in sequence
|
|
- Provides interactive execution
|
|
- Includes comprehensive summary
|
|
- Handles error checking
|
|
|
|
## Usage
|
|
|
|
### Individual Script Execution
|
|
|
|
```bash
|
|
# Run individual scripts
|
|
./01_preflight_setup.sh
|
|
./02_genesis_authority_setup.sh
|
|
./03_follower_node_setup.sh
|
|
./04_create_wallet.sh
|
|
./05_send_transaction.sh
|
|
./06_final_verification.sh
|
|
```
|
|
|
|
### Master Script Execution
|
|
|
|
```bash
|
|
# Run complete setup (interactive)
|
|
./setup_multinode_blockchain.sh
|
|
|
|
# Run complete setup (non-interactive)
|
|
echo "y" | ./setup_multinode_blockchain.sh
|
|
```
|
|
|
|
## Script Dependencies
|
|
|
|
### System Requirements
|
|
- aitbc1 node (genesis authority)
|
|
- aitbc node (follower)
|
|
- SSH access between nodes
|
|
- Redis service running
|
|
- Python virtual environment
|
|
|
|
### Environment Variables
|
|
- `WALLET_ADDR` - Set by wallet creation script
|
|
- `GENESIS_ADDR` - Set by genesis setup script
|
|
|
|
### File Structure
|
|
```
|
|
/opt/aitbc/scripts/workflow/
|
|
├── 01_preflight_setup.sh
|
|
├── 02_genesis_authority_setup.sh
|
|
├── 03_follower_node_setup.sh
|
|
├── 04_create_wallet.sh
|
|
├── 05_send_transaction.sh
|
|
├── 06_final_verification.sh
|
|
├── setup_multinode_blockchain.sh
|
|
└── README.md
|
|
```
|
|
|
|
## Script Features
|
|
|
|
### Error Handling
|
|
- All scripts use `set -e` for error detection
|
|
- Comprehensive error messages
|
|
- Graceful failure handling
|
|
|
|
### Logging
|
|
- Clear step-by-step output
|
|
- Progress indicators
|
|
- Success/failure confirmation
|
|
|
|
### Modularity
|
|
- Each script is self-contained
|
|
- Can be run independently
|
|
- State management between scripts
|
|
|
|
### Cross-Node Operations
|
|
- Automatic SSH handling
|
|
- Remote command execution
|
|
- File synchronization
|
|
|
|
## Customization
|
|
|
|
### Environment Modifications
|
|
- Edit `.env` files for different configurations
|
|
- Modify service names as needed
|
|
- Adjust network settings
|
|
|
|
### Script Parameters
|
|
- Wallet names can be changed
|
|
- Transaction amounts are configurable
|
|
- Network settings are customizable
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
1. **SSH Connection**: Verify SSH keys between nodes
|
|
2. **Service Failures**: Check systemd logs
|
|
3. **Network Issues**: Verify Redis and RPC connectivity
|
|
4. **Permission Errors**: Ensure proper file permissions
|
|
|
|
### Debug Mode
|
|
Add `set -x` to scripts for detailed execution tracing.
|
|
|
|
### Log Locations
|
|
- Systemd logs: `journalctl -u aitbc-blockchain-*`
|
|
- Application logs: `/var/log/aitbc/`
|
|
- Script logs: Console output
|
|
|
|
## Security Considerations
|
|
|
|
### Password Management
|
|
- Keystore passwords stored in `/var/lib/aitbc/keystore/.password`
|
|
- Change default password in production
|
|
- Use proper key management
|
|
|
|
### Network Security
|
|
- SSH key authentication recommended
|
|
- Firewall rules for RPC ports
|
|
- Redis security configuration
|
|
|
|
### File Permissions
|
|
- Keystore files: `600` (owner only)
|
|
- Scripts: `755` (executable)
|
|
- Configuration: `644` (readable)
|
|
|
|
## Maintenance
|
|
|
|
### Regular Tasks
|
|
- Monitor blockchain synchronization
|
|
- Check service health
|
|
- Update scripts as needed
|
|
- Backup configurations
|
|
|
|
### Updates
|
|
- Pull latest code changes
|
|
- Update script dependencies
|
|
- Test script modifications
|
|
- Document changes
|
|
|
|
## Integration with Workflow
|
|
|
|
These scripts are referenced in the main workflow documentation:
|
|
- `/opt/aitbc/.windsurf/workflows/multi-node-blockchain-setup.md`
|
|
|
|
The workflow now uses script references instead of inline code, making it:
|
|
- More maintainable
|
|
- Easier to test
|
|
- Reusable components
|
|
- Better organized
|