Closed srdtrk closed 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
It seems that the only use case for the union-ics23 would be when there are 3 packets or less?
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:
Under these assumptions, it is only useful when there is exactly 1 packet (and not by much)
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
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.