---
# System prepended metadata

title: 'Update commitment for Besu:'

---

# 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 `Fr`s.


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`