▐ homomorph ▌

rules / HM003

HM003 missing-allow-user MEDIUM

Per-user encrypted value stored without FHE.allow for that user

Why it matters

A handle written into `mapping(address => euintX)` belongs to a user, but the user can only decrypt it (via the relayer's user-decrypt flow) if the contract granted them access with `FHE.allow(handle, user)`. Without it the balance or position is invisible to its owner: it exists on-chain but nobody outside the contract can ever read it.

Fix

Grant the owner access whenever their entry changes: `FHE.allow(balances[to], to);` alongside `FHE.allowThis(balances[to]);`.

Check locally

homomorph scan . --rules HM003