Como migrar seus contratos Solidity para criptografia pós-quântica
O QuantumScan detectou a vulnerabilidade. Aqui está o caminho concreto de migração para cada padrão — da auditoria de hoje à arquitetura quantum-safe no longo prazo.
← Voltar ao scanner SolidityEsses são os contratos que mais de 80% dos protocolos DeFi herdam. Todo token que usa ERC20Permit está afetado.
Linha do tempo de migração
Rode o QuantumScan. Documente cada ecrecover(), EIP-712 e permit(). Adicione os achados ao relatório de auditoria.
Faça deploy de wrappers Account Abstraction (ERC-4337) com suporte ML-DSA junto ao ECDSA existente. Assinatura dupla em operações críticas.
Deadline NIST/CNSA 2.0. Substitua signatários ECDSA por ML-DSA (FIPS 204). Ethereum deve ter precompile PQC nativo até lá.
Caminho de migração por padrão
Pare de adicionar novas chamadas ecrecover(). Documente todas as existentes.
Faça deploy de uma Smart Account (ERC-4337) com validador de assinatura personalizado suportando ML-DSA (CRYSTALS-Dilithium).
// ERC-4337 validador personalizado
function validateUserOp(UserOperation calldata op, bytes32 hash, uint256 missingFunds)
external returns (uint256) {
require(mlDsaVerify(hash, op.signature, ownerPubKey), "Assinatura PQC inválida");
return 0;
}Gere pares de chaves ML-DSA e assine off-chain. Verifique on-chain via precompile ou ZK proof.
import { ml_dsa65 } from '@noble/post-quantum/ml-dsa';
const keys = ml_dsa65.keygen();
const sig = ml_dsa65.sign(keys.secretKey, message);Documente cada EIP712Domain no código. São os alvos de migração.
Adicione um campo ML-DSA paralelo às suas structs. Verifique ambas as assinaturas durante a transição.
struct PermitComPQC {
address owner; address spender;
uint256 value; uint256 deadline;
bytes ecdsaSig; // legado
bytes mlDsaSig; // ML-DSA FIPS 204
}Nenhum padrão EIP-712 PQC existe ainda. Monitore ethereum/EIPs.
Primeiro refatore para ECDSA.recover() da OpenZeppelin para facilitar a migração futura.
// ANTES (assembly)
assembly { let success := staticcall(gas(), 0x1, ptr, 0x80, ptr, 0x20) }
// DEPOIS (biblioteca — fácil de substituir)
address signer = ECDSA.recover(hash, v, r, s);Aplique a migração ERC-4337 ML-DSA do padrão ecrecover() acima.
A migração do DON da Chainlink está fora do seu controle. Nenhuma interface PQC existe hoje.
Faça deploy de um circuit breaker que possa congelar atualizações de preço se o oráculo for comprometido.
modifier oracleNotFrozen() {
require(!oracleFrozen, "Oráculo congelado: risco quântico ativo");
_;
}Use mediana de múltiplos oráculos (Chainlink + Pyth + UMA) para limitar o impacto.
Adicione função guardian para desabilitar permit() se a ameaça quântica se tornar real.
bool public permitEnabled = true;
function setPermitEnabled(bool enabled) external onlyOwner {
permitEnabled = enabled;
}
function permit(...) public override {
require(permitEnabled, "permit() desabilitado: migração PQC em andamento");
super.permit(...);
}Substitua ERC-2612 por uma user operation ERC-4337 com assinatura ML-DSA.
Documente todos os signatários atuais. Planeje rotação para chaves PQC.
Faça deploy de um módulo Safe personalizado que verifique assinaturas ML-DSA como tipo de signatário adicional.
contract PQCSafeModule is Module {
mapping(address => bytes) public pqcPublicKeys;
function execPQCTransaction(..., bytes calldata mlDsaSig) external {
require(mlDsaVerify(keccak256(data), mlDsaSig, pqcPublicKeys[msg.sender]));
ISafe(safe).execTransactionFromModule(to, value, data, Enum.Operation.Call);
}
}O time do Safe conhece a necessidade de migração PQC. Monitore github.com/safe-global/safe-contracts.
Ferramentas PQC para desenvolvedores Solidity
Biblioteca JS/TS MIT implementando ML-KEM, ML-DSA, SLH-DSA. Sem dependências. Por Paul Miller (criador do noble-curves usado no ethers.js).
Permite qualquer esquema de assinatura — inclusive ML-DSA — como autenticação de wallet. A principal ponte de migração.
Permite que EOAs executem código, habilitando migração de chaves PQC em carteiras normais sem novo contrato.
Provas STARK baseadas em hash e quantum-resistant. Proofs de assinaturas ML-DSA verificáveis no EVM.
EIPs para monitorar
Account Abstraction — habilita validadores PQC personalizados. Live na mainnet.
Set EOA code — migração de chaves PQC em carteiras normais. Incluído no Pectra.
QuBit — P2QRH para Bitcoin. Referência para o paralelo no Ethereum.
Escaneia seus contratos agora
Obtenha o relatório completo antes de iniciar sua migração. Grátis, open-source, sem conta.