An accumulator allows Bob to add values onto a fixed-length digest, and to provide proof of the values added, without revealing them within the accumulated value. In this case, we will use a basic ECC method to make commitments to data elements.
We will use a BL12 curve, and which has two cyclic groups of 𝔾1 and 𝔾2. Initially, we generate a key pair on the 𝔾1 group, and where the private key values will be used to add and delete data entities on the accumulator. Initially, we create a random secret key value (sk) and then a public key of:
The outline code is to add the hash of a message to the accumulator, and then remove it back to its original state [here]:
package mainimport (
"fmt"
"os" "github.com/coinbase/kryptology/pkg/core/curves"
)func main() { msg := "Hello"
argCount := len(os.Args[1:]) if argCount > 0 {
msg = os.Args[1]
} curve := curves.BLS12381(&curves.PointBls12381G1{})
var seed [32]byte sk := curve.Scalar.Hash(seed[:])
acc :=…