Try   HackMD

Update commitment for Besu:

This is my understanding how it should work for 1 commitment and 1 leaf:

update_commitment(commitment, newValue-oldValue, index)

So those are 2 32byte and 1 byte values. Total 65bytes. Rust can easily process that.

Then rust takes the commitment (which is a banderwagon element) and we do new_commitment = commitment + (newValue-oldValue)*CRS[index]

Where newValue and oldValue are Frs.

Reg updating multiple values in one commitment:

It can be done for multiple values in the same commitment, just we would need to pass multiple Bytes32 (commitment, (newValue_1-oldValue_1), (newValue_2-oldValue_2) ...., index_1, index_2...)

Rust part:

  • cut first 32 bytes to get the commitment
  • split the rest in 2 parts
  • First part is all the (newValue_i-oldValue_i) parameters
  • Second part is all the index_i