MultiversX Constant Time Analysis
This skill helps you verify that cryptographic secrets are handled in constant time to prevent timing attacks.
1. When to Use
- •Custom Crypto: If the contract implements Elliptic Curve math, ZK verification, or signatures manually (not using the API).
- •Comparison: Checking secrets (e.g., comparing user-provided HASH against stored HASH).
2. Patterns to Avoid (Variable Time)
- •Early Exit:
if byte[i] != other[i] { return false }. This leaks the index of the first difference. - •Short-circuiting:
&&or||on secrets.
3. MultiversX Solution
- •Managed Types: Use
ManagedBuffercomparison provided by the API (often constant time implementation in the VM). - •Subtle crate: Use
subtle::ConstantTimeEqfor manualu8slice comparisons.
4. Verification
- •Measurement: Difficult on-chain due to Gas Metering. Gas usually leaks the execution trace roughly.
- •Rule: Rely on the VM's crypto functions (
self.crypto().verify_signature(...)) instead of implementing it in WASM.