generatePedersenHashExpTable<T extends JubJubScalar<T> , E extends BaseJubJubPoint<T, E> > static method
List<List<List<E> > >
generatePedersenHashExpTable<T extends JubJubScalar<T> , E extends BaseJubJubPoint<T, E> >({})
Implementation
static List<List<List<E>>> generatePedersenHashExpTable<
T extends JubJubScalar<T>,
E extends BaseJubJubPoint<T, E>
>({required E Function(List<int> bytes) fromBytes, required E identity}) {
final List<E> generators = generateHash<T, E>(fromBytes);
final int window = pedersenHashExpWindowSize;
final int numBits = JubJubFrConst.bits;
final List<List<List<E>>> result = [];
for (var g0 in generators) {
E g = g0;
final List<List<E>> tables = [];
int numBitsProcessed = 0;
while (numBitsProcessed <= numBits) {
final List<E> table = [];
E base = identity;
for (int i = 0; i < (1 << window); i++) {
table.add(base);
base = base + g;
}
tables.add(table);
numBitsProcessed += window;
// double g for next window
for (int i = 0; i < window; i++) {
g = g.double();
}
}
result.add(tables);
}
return result;
}