Crate cyclone_msm

Source
Expand description

Host-side application to use the FPGA-side application.

Cyclone MSM currently only supports the G1 curve of BLS12-377. MSM instances of size up to 27 are supported.

Steps:

  • preprocess points, stream to FPGA
  • precompute scalars, stream to FPGA column-wise
  • gather and aggregate column sums

The idea is that in practical use, the points are fixed, whereas the scalars vary per instance. Therefore, the lengthy preprocessing of points is amortized, whereas the precomputation needs to be done efficiently for each instance.

Modules§

app
Host-side app to interact with FPGA app.
bls12_377
Preprocessed form of BLS12-377 G1 curve.
io
Load and store points efficiently.
precompute
Scalar precomputation.
preprocess
Point preprocessing.
testing
Generate test instances.
timing
Timing utilities.

Structs§

App
Host-side Cyclone MSM application.
Fpga
AWS F1 FPGA.

Enums§

Command
Commands for MSM column processing.

Functions§

fpga
FPGA constructor, independent of “hw” feature.

Type Aliases§

Digit
Signed 16-bit digit.
Limb
Unsigned 64-bit limb of a scalar
Packet
Packet of 8 commands, streamed to FPGA during MSM column processing.
Scalar
256-bit scalar composed of four limbs, least-significant limb first