After ~3.5 years in web3 security, I finally achieved 300 crit/h/m count!😂Here is my updated portfolio: https://t.co/uCdYiyz00E
Any firm looking for contract-based auditor with move/solana/cosmwasm/daml experience? Happy to chat😁
If you’re wrong, own it. If you mishandle a responsible disclosure, take your lumps. @codephobic
I followed USD8’s own security.md, privately submitted a Loss of Funds bug with a working PoC, then watched it get quietly patched with no credit and mocked as spam.
This is exactly how you teach researchers that responsible disclosure is a sucker's game.
I documented the case here:
https://t.co/wePfeHpi6J
cc @openzeppelin@demibrener@holajotola
@kixnlu1 Cool paper. What I did is compiling a demo circuit locally and I found the helper function (like sqrt) in a .wat file, so webassembly did the calculation outside the circuit
When learning circom, many people learn this rule: `<--` does not add constraints. `<==` adds constraints. True. But there is another question: if `<--` is not in the circuit, where does its computation actually happen?
(Yes I am reviewing circom)
A friendly reminder: when designing circom circuit it is important to work through such edge cases carefully. If not properly handled, in an usual programming language it leads to redundant computation only, but in a zk dsl it can lead to an actual logic bug.
https://t.co/xsraa8gqSS See "The bug in the code" section by @RareSkills_io
In an usual programming language we would do `if (s == t) return;` to handle this special case, but can't do that in circom since both `s` and `t` are signals which are unknown during compilation.
Main lesson: `<--` tells the witness calculator how to compute. Constraints tell the proof system what must be true. If something only appears in `<--`, it is computed but not automatically proven.
Useful mental model: `<--` computes a witness value. `===` adds a constraint. `<==` do both. So `y <== x * x;` is roughly `y <-- x * x; y === x * x;`.