
// Detect the threat
Verify it with a quorum, on-chain
Trigger the defense you chose in advance
Detect the Threat. Trigger the Defense. //
The threat level changes on-chain only when a threshold of independent attesters agree. It is never inferred or randomly generated.
Standard Ethereum EOA transactions are not made post-quantum secure by this protocol.
QEYRO FI never asks for a seed phrase or private key. Post-quantum keys are generated in your browser. Readiness is not the same as on-chain protection.
No Threat Oracle is deployed yet, so no level is shown. QEYRO FI never displays an invented threat level or a made-up security event.
QEYRO FI separates evidence, attestation and enforcement. Nothing on-chain infers a threat by itself.
Cryptographic challenge monitoring and public research produce evidence. It is referenced by hash and source, never invented.
Independent attesters propose a level with an evidence hash. The oracle applies it only when the threshold agrees, and rate-limits downgrades.
Security Hooks on your smart account read the oracle on every protected call, with their own freshness rule.
At the level you chose, the hook applies the policy you chose: block, restrict value, require approval or pause.
Guardians can rotate a compromised controller after a timelock. Recovery never moves assets.
One number, six levels, read from the Threat Oracle. If the oracle is not deployed, the app says so instead of showing data.
| Level | Name | Meaning |
|---|---|---|
| 0 | Nominal | No verified elevated risk. |
| 1 | Early Warning | Verified early indicator; heightened monitoring. |
| 2 | Elevated | Verified indicator that warrants preparation. |
| 3 | High | Verified high risk; protective policies may activate. |
| 4 | Critical | Verified critical risk; restrictive policies activate. |
| 5 | Emergency | Verified emergency; maximum protection. |
Each hook is an ERC-7579 module. You choose the trigger and the action; the contract enforces it. Hooks react to verified signals. They do not detect anything on their own.
At or above your trigger level: block all calls, block value and token moves, or require a single-use approval.
Read the docs →HookPer-transaction and daily native-value limits, allow and block destination lists, approval above a size.
Read the docs →HookGuardians or a verified oracle level pause protected operations. Time-locked unpause, safe recovery path.
Read the docs →HookAuthorised reporters flag protocols with evidence. Your account blocks or asks for approval on flagged targets.
Read the docs →RecoveryGuardian threshold, timelock, cancel window. Rotates the controller only. No automatic transfers to arbitrary wallets.
Read the docs →BuildInherit it in a vault or protocol to pause chosen functions when the verified level reaches your limit.
Read the docs →Source and deploy script live in the project repository. None are deployed yet.
| Contract | Purpose |
|---|---|
| ThreatOracle | Publishes the attested threat level (0–5). Threshold attestation, expiring proposals, rate-limited downgrades, freshness check. |
| HookManager | Catalogue of approved hook modules and what an account has installed. |
| QuantumThreatHook | Restricts operations at a threat threshold. |
| TransactionLimitHook | Value limits and destination lists. |
| EmergencyPause | Guardian or oracle-triggered pause with time-locked unpause. |
| DeFiRiskHook | Per-account policies for flagged protocols. |
| RecoveryModule | Guardian, timelocked controller recovery. |
Each group gets a concrete protection policy.
Cap what a compromised key can move and pause everything on a verified emergency.
Inherit ThreatGuard to pause vault functions at a verified level.
Combine limits, guardian pause and time-locked recovery.
Require a second approver above a size and keep a recovery path.
Review the open contracts and threat model.
Every primitive is a published standard or an open-source library.
| Component | Used for | Reference |
|---|---|---|
| ERC-7579 | Hooks (type 4) and recovery executor (type 2) for modular smart accounts | EIP-7579 |
| ML-DSA-44 | Post-quantum keys and signatures, off-chain, in your browser | NIST FIPS 204 |
| Threshold attestation | Levels change only when M of N attesters agree | ThreatOracle |
| noble-post-quantum | Minimal JS implementation of ML-DSA | GitHub |
| Solidity 0.8.28 · Hardhat | Seven contracts and a deploy script that refuses mainnet | Repository |
| Ethereum quantum resistance | Why account-level signature agility matters | ethereum.org |
No. A normal EOA signs with ECDSA, which this protocol does not change. Hooks protect ERC-7579 smart accounts by restricting what they can do when a verified threat level is reached.
Attesters configured on the Threat Oracle. A level changes only when the configured threshold of them sign the same proposal. The admin role should be a multisig or timelock.
The oracle reports staleness. Each hook lets you choose whether stale data counts as a threat (fail-closed) or is ignored.
No. Hooks only allow or reject calls your account makes. The recovery module only rotates the controller.
No and no. The contracts are unaudited and not deployed. Do not use them with real funds.
Short form. Full reference is in the repository documentation.
| Topic | Summary |
|---|---|
| Protocol overview | A Threat Oracle publishes a level 0–5. Security Hooks read it and apply the policy the account owner chose. |
| Quantum threat model | A capable quantum computer could derive ECDSA keys from exposed public keys. Nobody can say when. QEYRO FI publishes verified changes and lets you pre-commit a response. |
| Canary Network | Planned: public challenges whose solution is evidence of advancing attack capability. Not in this release. |
| Threat Oracle | propose, attest, execute. Proposals expire in 3 days. Downgrades wait a cooldown. levelIfFresh() reports staleness. |
| Security Hooks | ERC-7579 modules. preCheck runs before execution and reverts to block. Approvals are single-use, call-bound and expire. |
| Account compatibility | Needs ERC-7579 with hook support. EOAs cannot host hooks. Many accounts allow one hook; a multiplexer is planned. |
| Recovery | Guardians (up to 10), threshold, timelock of at least 24 h, 7-day execution window, controller can cancel. No asset transfers. |
| Developer integration | Inherit ThreatGuard and use whenThreatBelow(limit, failClosed), or read levelIfFresh() directly. |
| Supported networks | Sepolia first. Mainnet only after an independent audit. |
| Security model | No seed phrases or private keys are ever requested. Transactions are checked in advance, shown, and reported done only after a confirmed receipt. |
| Risk disclosures | Unaudited contracts. A blocking hook can also block you in a false alarm or when the oracle is stale. Policies are only as good as their signals. No guarantee of protection. |
Connect a wallet, check your account, and review exactly what each hook would do before you approve anything.