In the Tornado Cash constructor, it takes an argument:
Ihasher _hasher;
where the Ihasher is:
interface IHasher {
function MiMCSponge(uint256 in_xL, uint256 in_xR) external pure returns (uint256 xL, uint256 xR);
}
In the mainnet contract, they use the address: https://etherscan.io/address/0x83584f83f26af4edda9cbe8c730bc87c364b28fe
it's not verified, but apparently refers to a precompiled circom contract (my guess?).
Just want to know if anyone has information on:
- what is it exactly?
- what address to use if I want to deploy it to another EVM chain (say Polygon)?
- can I just deploy the bytecode on my own (will this work)?