Summary
Current deployment setup uses a plain private key in .env (TESTNET_DEPLOYER_PRIVATE_KEY). This is acceptable for testnets but insufficient for mainnet deployments.
Current state
.env file with TESTNET_DEPLOYER_PRIVATE_KEY — testnets only
- Same key used across Sepolia, Chiado, Base Sepolia
- Key stored as plaintext in local file (gitignored)
Requirements for mainnet
Evaluate and implement one or more of:
- Hardware wallet (Ledger/Trezor) via
@nomicfoundation/hardhat-ledger — key never leaves device
- Multisig (Gnosis Safe) — deployer proposes, multiple signers approve
- Cloud KMS (AWS KMS / GCP KMS) — key material stays in HSM
- Separate env vars — at minimum, distinct
MAINNET_DEPLOYER_PRIVATE_KEY to prevent accidental cross-environment use
Acceptance criteria
Summary
Current deployment setup uses a plain private key in
.env(TESTNET_DEPLOYER_PRIVATE_KEY). This is acceptable for testnets but insufficient for mainnet deployments.Current state
.envfile withTESTNET_DEPLOYER_PRIVATE_KEY— testnets onlyRequirements for mainnet
Evaluate and implement one or more of:
@nomicfoundation/hardhat-ledger— key never leaves deviceMAINNET_DEPLOYER_PRIVATE_KEYto prevent accidental cross-environment useAcceptance criteria