o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
37 lines (25 loc) • 935 B
text/typescript
import { Field, MerkleMap } from 'o1js';
describe('Merkle Map', () => {
it('set and get a value from a key', () => {
const map = new MerkleMap();
const key = Field.random();
const value = Field.random();
map.set(key, value);
expect(map.get(key).equals(value).toBoolean());
});
it('check merkle map witness computes the correct root and key', () => {
const map = new MerkleMap();
const key = Field.random();
const value = Field.random();
map.set(key, value);
const witness = map.getWitness(key);
const emptyMap = new MerkleMap();
const [emptyLeafWitnessRoot, witnessKey] = witness.computeRootAndKey(Field(0));
const [witnessRoot, _] = witness.computeRootAndKey(value);
expect(
emptyLeafWitnessRoot.equals(emptyMap.getRoot()).toBoolean() &&
witnessKey.equals(key).toBoolean() &&
witnessRoot.equals(map.getRoot()).toBoolean()
);
});
});