-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrocksdb.test.ts
67 lines (51 loc) · 2.07 KB
/
rocksdb.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import CoreMMR, { PrecomputationMMR } from "@accumulators/merkle-mountain-range";
import { StarkPedersenHasher } from "@accumulators/hashers";
import RocksDBStore from "../src";
const store = new RocksDBStore("./rocksdb_data");
const hasher = new StarkPedersenHasher();
describe("precomputation", () => {
const rootAt6Leaves = "0x03203d652ecaf8ad941cbbccddcc0ce904d81e2c37e6dcff4377cf988dac493c";
let mmr: CoreMMR;
beforeAll(async () => {
await store.init();
});
beforeEach(async () => {
mmr = new CoreMMR(store, hasher);
await mmr.append("1");
await mmr.append("2");
await mmr.append("3");
});
it("should compute parent tree", async () => {
await mmr.append("4");
await mmr.append("5");
await mmr.append("6");
await expect(mmr.bagThePeaks()).resolves.toEqual(rootAt6Leaves);
const proof = await mmr.getProof(8);
await expect(mmr.verifyProof(proof, "5")).resolves.toEqual(true);
});
it("should precompute from parent tree", async () => {
const precomputationMmr = await PrecomputationMMR.initialize(store, hasher, mmr.mmrId, "precomputed");
await precomputationMmr.append("4");
await precomputationMmr.append("5");
await precomputationMmr.append("6");
await expect(precomputationMmr.bagThePeaks()).resolves.toEqual(rootAt6Leaves);
const proof = await precomputationMmr.getProof(8);
await expect(precomputationMmr.verifyProof(proof, "5")).resolves.toEqual(true);
await precomputationMmr.close();
});
});
describe("empty mmr", () => {
let mmr: CoreMMR;
beforeEach(async () => {
mmr = new CoreMMR(store, hasher);
});
it("should precompute from empty mmr", async () => {
const precomputationMmr = await PrecomputationMMR.initialize(store, hasher, mmr.mmrId, "precomputed");
await expect(precomputationMmr.bagThePeaks()).resolves.toEqual("0x0");
await precomputationMmr.append("1");
await precomputationMmr.append("2");
await expect(precomputationMmr.bagThePeaks()).resolves.toEqual(
"0x05bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026"
);
});
});