mirror of
https://github.com/pezkuwichain/testnet.git
synced 2026-04-22 02:08:01 +00:00
6fc40b89c3
- Chainspec file (5.2MB) with genesis hash 0xa017...54b1 - Validator startup scripts for Computer 2 (validators 5-8) - Complete setup instructions in README - Configuration for 8-validator beta testnet
194 lines
6.5 KiB
Python
Executable File
194 lines
6.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Generate insert-all-beta-keys.sh from JSON validator file
|
|
This prevents manual copy-paste errors
|
|
"""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def main():
|
|
# Check if JSON file path provided
|
|
if len(sys.argv) < 2:
|
|
print("❌ Error: Please provide the path to validator JSON file")
|
|
print("")
|
|
print("Usage:")
|
|
print(" python3 generate-key-insertion-script.py /path/to/beta_testnet_validators_WITH_SEEDS_BACKUP.json")
|
|
print("")
|
|
print("Example:")
|
|
print(" python3 generate-key-insertion-script.py /media/mamostehp/D/res/beta_testnet_validators_WITH_SEEDS_BACKUP.json")
|
|
sys.exit(1)
|
|
|
|
json_file = Path(sys.argv[1])
|
|
|
|
if not json_file.exists():
|
|
print(f"❌ Error: File not found: {json_file}")
|
|
sys.exit(1)
|
|
|
|
print(f"📖 Reading validators from: {json_file}")
|
|
|
|
try:
|
|
with open(json_file, 'r') as f:
|
|
data = json.load(f)
|
|
except Exception as e:
|
|
print(f"❌ Error reading JSON: {e}")
|
|
sys.exit(1)
|
|
|
|
# Get validators from "beta" key
|
|
validators = data.get('beta', [])
|
|
|
|
if not validators:
|
|
print("❌ Error: No validators found in 'beta' key")
|
|
sys.exit(1)
|
|
|
|
print(f"✅ Found {len(validators)} validators")
|
|
|
|
# We need validators 5-8 (indices 4-7) validators for Computer 2
|
|
validators_to_use = validators[4:8]
|
|
|
|
# Generate the script
|
|
output_file = Path("/home/mamostehp/Pezkuwi-SDK/scripts/insert-all-beta-keys.sh")
|
|
|
|
print(f"🔧 Generating script: {output_file}")
|
|
|
|
script_content = """#!/usr/bin/env bash
|
|
# Insert all validator keys for Beta Testnet (Validators 5-8 (Computer 2))
|
|
# AUTO-GENERATED from validator JSON file
|
|
# DO NOT EDIT MANUALLY - Regenerate using generate-key-insertion-script.py
|
|
|
|
set -e
|
|
|
|
GREEN='\\033[0;32m'
|
|
BLUE='\\033[0;34m'
|
|
YELLOW='\\033[1;33m'
|
|
RED='\\033[0;31m'
|
|
NC='\\033[0m'
|
|
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}"
|
|
echo -e "${BLUE} Beta Testnet - Bulk Key Insertion${NC}"
|
|
echo -e "${BLUE} Auto-generated from JSON validator file${NC}"
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}⚠️ SECURITY CHECK${NC}"
|
|
echo "This script will insert validator keys for 4 local validators."
|
|
echo "Make sure all validators are running before proceeding."
|
|
echo ""
|
|
read -p "Press Ctrl+C to cancel, or Enter to continue..."
|
|
echo ""
|
|
|
|
# Function to insert key
|
|
insert_key() {
|
|
local validator_num=$1
|
|
local rpc_port=$2
|
|
local key_type=$3
|
|
local seed=$4
|
|
local public_key=$5
|
|
|
|
local rpc_url="http://127.0.0.1:${rpc_port}"
|
|
|
|
echo -e "${GREEN}Validator ${validator_num}: Inserting ${key_type} key...${NC}"
|
|
|
|
result=$(curl -s -H "Content-Type: application/json" \\
|
|
-d "{\\"id\\":1,\\"jsonrpc\\":\\"2.0\\",\\"method\\":\\"author_insertKey\\",\\"params\\":[\\"${key_type}\\",\\"${seed}\\",\\"${public_key}\\"]}" \\
|
|
"$rpc_url")
|
|
|
|
if echo "$result" | grep -q '"result":null'; then
|
|
echo -e "${GREEN} ✅ Success${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${RED} ❌ Failed${NC}"
|
|
echo " Response: $result"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
echo -e "${BLUE}🔑 Starting key insertion for 4 validators...${NC}"
|
|
echo ""
|
|
|
|
"""
|
|
|
|
# Add validator keys
|
|
for idx, validator in enumerate(validators_to_use, 5):
|
|
rpc_port = 9943 + idx # 9944, 9945, 9946, 9947
|
|
|
|
script_content += f"""
|
|
# =============================================================================
|
|
# VALIDATOR {idx} - {validator.get('name', f'Validator-{idx}')} (Port {rpc_port})
|
|
# =============================================================================
|
|
echo -e "${{BLUE}}🔑 Validator {idx} - {validator.get('name', f'Validator-{idx}')}${{NC}}"
|
|
|
|
"""
|
|
|
|
# BABE key
|
|
script_content += f"""insert_key {idx} {rpc_port} "babe" "{validator['babe_seed']}" "{validator['babe']}"
|
|
"""
|
|
|
|
# GRANDPA key
|
|
script_content += f"""insert_key {idx} {rpc_port} "gran" "{validator['grandpa_seed']}" "{validator['grandpa']}"
|
|
"""
|
|
|
|
# Para Validator key
|
|
script_content += f"""insert_key {idx} {rpc_port} "para" "{validator['para_validator_seed']}" "{validator['para_validator']}"
|
|
"""
|
|
|
|
# Para Assignment key
|
|
script_content += f"""insert_key {idx} {rpc_port} "asgn" "{validator['para_assignment_seed']}" "{validator['para_assignment']}"
|
|
"""
|
|
|
|
# Authority Discovery key
|
|
script_content += f"""insert_key {idx} {rpc_port} "audi" "{validator['authority_discovery_seed']}" "{validator['authority_discovery']}"
|
|
"""
|
|
|
|
# BEEFY key
|
|
script_content += f"""insert_key {idx} {rpc_port} "beef" "{validator['beefy_seed']}" "{validator['beefy']}"
|
|
"""
|
|
|
|
script_content += f"""
|
|
echo ""
|
|
|
|
"""
|
|
|
|
# Add footer
|
|
script_content += """
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN}✅ Key insertion complete!${NC}"
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════════${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}📝 Next steps:${NC}"
|
|
echo "1. Restart all validators to apply keys"
|
|
echo "2. Wait for network to start producing blocks"
|
|
echo "3. Check logs for 'Prepared block for proposing'"
|
|
echo ""
|
|
echo "Validator logs:"
|
|
echo " Validator 1: tail -f /tmp/beta-validator-1.log"
|
|
echo " Validator 2: tail -f /tmp/beta-validator-2.log"
|
|
echo " Validator 3: tail -f /tmp/beta-validator-3.log"
|
|
echo " Validator 4: tail -f /tmp/beta-validator-4.log"
|
|
"""
|
|
|
|
# Write the script
|
|
try:
|
|
with open(output_file, 'w') as f:
|
|
f.write(script_content)
|
|
|
|
# Make executable
|
|
output_file.chmod(0o755)
|
|
|
|
print(f"✅ Script generated successfully!")
|
|
print(f"")
|
|
print(f"📁 Output: {output_file}")
|
|
print(f"")
|
|
print(f"🚀 Next steps:")
|
|
print(f" 1. Start validators: ./scripts/start-all-beta-validators.sh")
|
|
print(f" 2. Insert keys: ./scripts/insert-all-beta-keys.sh")
|
|
print(f"")
|
|
print(f"✅ Done! No manual copy-paste needed!")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error writing script: {e}")
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|