async _loadOrGeneratePeerId() {
		try {
			const { generateKeyPair, privateKeyFromProtobuf, privateKeyToProtobuf } = await import('@libp2p/crypto/keys');
			
			// Check if key file exists
			if (fs.existsSync(this.persistentPeerIdPath)) {
				try {
					// Load existing key
					const keyData = JSON.parse(fs.readFileSync(this.persistentPeerIdPath, 'utf8'));
					if (keyData && keyData.privateKey) {
						// Convert base64 string back to Uint8Array
						const privateKeyBytes = Buffer.from(keyData.privateKey, 'base64');
						// Deserialize the private key from protobuf format
						const privateKey = privateKeyFromProtobuf(privateKeyBytes);
						logT('p2p', 'Loaded persistent private key');
						return privateKey;
					}
					throw new Error('Invalid key data in file');
				} catch (err) {
					logTE('p2p', 'Error loading private key, will generate new one:', err);
				}
			}
			
			// Generate new Ed25519 key pair
			logT('p2p', 'Generating new Ed25519 key pair...');
			const keyPair = await generateKeyPair('Ed25519');
			
			// Serialize the private key to protobuf format
			const privateKeyProtobuf = privateKeyToProtobuf(keyPair);
			
			// Save private key to file
			const keyData = {
				privateKey: Buffer.from(privateKeyProtobuf).toString('base64'),
				type: 'Ed25519'
			};
			
			fs.writeFileSync(
				this.persistentPeerIdPath, 
				JSON.stringify(keyData, null, 2)
			);
			
			logT('p2p', 'Generated and saved new private key');
			return keyPair;
		} catch (err) {
			logTE('p2p', 'Failed to load or generate private key:', err);
			throw err;
		}
	}
Load or generate a persistent peer ID
@returns {Promise<Object>} Private key for libp2p