ZK-gossip for lightning channel announcements

I did work on a new approach where we do the signature verification on a blinded key, such that we can move the heavy EC operations outside the ZK environment (see the discussion here: (EDITED) following README example - slower proving time? · Issue #10 · halseth/output-zero · GitHub).

This results in the SHA-512 hashing in verifying the utreexo proof dominating the runtime:

@Davidson How easy is it to either

  1. Switch to using the poseidon2 hash function for this, OR
  2. use the Risc0 precompile for SHA-512 (it looks like rustreexo is using the bitcoin_hashes::Sha512 implementation).

I see that this is made possible in the latest rustreexo release :+1: