# Generate governance wallets
solana-keygen new -o config/gov1.ggai.json --no-bip39-passphrase --force
solana-keygen new -o config/gov2.ggai.json --no-bip39-passphrase --force
solana-keygen new -o config/gov3.ggai.json --no-bip39-passphrase --force
# ... Generate remaining wallets ...
# Set strict permissions
chmod 600 config/*.ggai.json
// Verify before deployment
const requiredSigners = await Multisig.getSigners(
programId,
connection
);
assert(requiredSigners.length === 10);
# Rotate genesis keys
npx ts-node scripts/rotate-keys.ts \
--old-config config/multisig.json \
--new-config config/multisig.v2.json
The emergency override requires:
- 10/10 multisig approval
- TEE attestation
- Hardware security module validation
- Test with mock wallets in CI:
MOCK_WALLETS=1 npm run test:deployment
- Dry-run upgrade flow:
await simulateUpgrade({
programId: GOV_PROGRAM_ID,
multisigConfig,
testMode: true
});
- All wallet files must have 600 permissions
- Hardware security module must be configured
- TEE attestation must be verified
- All 10 multisig members must be properly initialized
- Emergency override key must be stored in HSM
If deployment fails:
- Check wallet permissions
- Verify HSM connection
- Confirm all multisig members are available
- Review TEE attestation logs
Store emergency contact information in secure location, accessible to authorized team members only.