cosmos / sp1-ics07-tendermint

This is a zero knowledge IBC tendermint light client written using SP1 and ibc-rs (WIP)
MIT License
23 stars 5 forks source link

Remove union membership proofs #131

Closed srdtrk closed 2 weeks ago

srdtrk commented 3 weeks ago

With the merging of #130, It is possible to prove 25 key-value pairs for 430-530k gas. This is much more efficient than using union membership proofs, to the point that we can consider removing union ics23.

srdtrk commented 2 weeks ago

In order to add more data to this discussion I ran some simulations in solidity-ibc-eureka for recv packet, since this is where it would be used. This should make product decisions easier to make

Note: groth16 and plonk includes client update costs as well, whereas union-ics23 assumes the client is already updated since ics23 cannot be used to update the client

Image

womensrights commented 2 weeks ago

It seems that the only use case for the union-ics23 would be when there are 3 packets or less?

srdtrk commented 2 weeks ago

Yes, with some caveats. The union-ics23 membership proofs can sometimes be 20k - 30k cheaper than on this graph (not sure why, but there should be some error bars). More importantly, union-ics23 doesn't include update client costs since union-ics23 assumes that someone else has already updated the client.

If no-one else has updated the client, it is not even useful when less than 3 packets. (Whereas groth16 and plonk include update costs as well). If we assume the user has to update the light client (with groth16) and union-ics23 happens to be 25k cheaper, then we can also have a reasonable graph that looks like this instead:

Image

Under these assumptions, it is only useful when there is exactly 1 packet (and not by much)

womensrights commented 2 weeks ago

Ok got it, would be nice to have a direct like for like comparison, but your point still makes sense, and in that case I would be in favour of removing because batching seems essential for a cost competitive price