UNPKG

@cursedfaction3333/cursed-faction-vault-ecosystem

Version:

AI-powered NFT vault ecosystem with Magic Eden & Zora integration, cross-chain bridging, and advanced security features

153 lines (123 loc) • 4.34 kB
#!/usr/bin/env node /** * šŸ” SECURE ENVIRONMENT SETUP * * Safely set up environment variables for deployment * NEVER stores private keys in plain text */ const fs = require('fs'); const readline = require('readline'); const crypto = require('crypto'); class SecureEnvSetup { constructor() { this.envPath = '.env'; } /** * Securely prompt for private key */ async getPrivateKeySecurely() { const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); return new Promise((resolve) => { rl.question('šŸ” Enter your private key (will be hidden): ', (answer) => { rl.close(); resolve(answer.trim()); }); }); } /** * Create secure .env file */ async setupEnvironment() { console.log("šŸ” SECURE ENVIRONMENT SETUP"); console.log("============================"); console.log("āš ļø This will create a .env file with your private key"); console.log("āš ļø Make sure you're using a TESTNET wallet only!"); console.log("āš ļø Never commit .env files to version control!"); console.log(""); // Get private key securely const privateKey = await this.getPrivateKeySecurely(); if (!privateKey || privateKey.length < 40) { throw new Error("āŒ Invalid private key provided"); } // Create .env content const envContent = `# Base Sepolia Testnet Deployment Configuration # āš ļø NEVER commit this file to version control! # āš ļø This contains sensitive private key information! PRIVATE_KEY=${privateKey} ETHERSCAN_API_KEY=your_basescan_api_key_here # Network Configuration NETWORK=baseSepolia CHAIN_ID=84532 RPC_URL=https://sepolia.base.org EXPLORER_URL=https://sepolia.basescan.org # Gas Configuration GAS_PRICE=0.001 GAS_LIMIT=8000000 # Security Notes: # - This file contains your private key # - Keep it secure and never share it # - Use only for testnet deployment # - Delete after deployment if needed `; // Write .env file fs.writeFileSync(this.envPath, envContent); console.log("āœ… .env file created successfully!"); console.log("šŸ” Private key stored securely"); console.log("āš ļø Remember: Never commit .env files to version control!"); return true; } /** * Verify .env file */ verifyEnvironment() { if (!fs.existsSync(this.envPath)) { console.log("āŒ .env file not found"); return false; } const envContent = fs.readFileSync(this.envPath, 'utf8'); if (!envContent.includes('PRIVATE_KEY=')) { console.log("āŒ PRIVATE_KEY not found in .env file"); return false; } console.log("āœ… .env file verified"); return true; } /** * Show security checklist */ showSecurityChecklist() { console.log("\nšŸ” SECURITY CHECKLIST"); console.log("====================="); console.log("āœ… Private key added to .env"); console.log("āœ… .env file created"); console.log("āš ļø Make sure .env is in .gitignore"); console.log("āš ļø Never share your private key"); console.log("āš ļø Use only testnet wallets"); console.log("āš ļø Delete .env after deployment if needed"); } } // Main function async function main() { const setup = new SecureEnvSetup(); try { // Setup environment await setup.setupEnvironment(); // Verify setup setup.verifyEnvironment(); // Show security checklist setup.showSecurityChecklist(); console.log("\nšŸŽ‰ Environment setup complete!"); console.log("You can now run: node secure-deploy.cjs"); } catch (error) { console.error("āŒ Setup failed:", error.message); process.exit(1); } } // Run setup if (require.main === module) { main().catch(console.error); } module.exports = SecureEnvSetup;