• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / bulletproofs-plus / 5313126257
98%

Build:
DEFAULT BRANCH: main
Ran 19 Jun 2023 02:35PM UTC
Jobs 1
Files 21
Run time 28min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
5313126257

push

github

web-flow
feat: use precomputation on (most) fixed generators (#19)

Uses precomputation of fixed generator vectors to speed up verification,
at the cost of storing precomputation tables between verification
operations. This doesn't use precomputation on the Pedersen generators,
since those can be set independently of the others, and we can't
mix-and-match precomputation tables due to upstream limitations.

Note that this requires and uses a custom curve library fork. The fork
supports partial precomputation by removing an existing restriction
about matching the number of static points and scalars used for
precomputation evaluation. It also implements `Clone` on the underlying
types used for precomputation. This is unfortunate, since due to their
size (several megabytes in total) such tables should almost certainly
never be cloned. However, it's done for the reason explained below.

The generator tables are wrapped in an `Arc` for shared ownership. This
is done because precomputation evaluation is an instance method on a
precomputation type, not a static method that takes a reference to the
underlying tables. I have no idea why this design was chosen (static
methods are used for other types of multiscalar multiplication),
especially because there's no mutation involved. But because of this,
the verifier needs to own the precomputation structure containing the
tables, even though those tables are expected to be reused (that's the
entire point of precomputation). Using an `Arc` takes care of this
nicely, and avoids cloning.

However, apparently `#[derive(Clone)]` only plays nicely with structs if
all included generic types implement `Clone`, which means even though
cloning the table `Arc` isn't any kind of deep copy, we can't use that
attribute unless the precomputation tables implement `Clone`. Manually
implementing `Clone` on the containing struct is a headache, so it
seemed easier just to add `#[derive(Clone)]` at the curve librar... (continued)

1826 of 2010 relevant lines covered (90.85%)

1308.66 hits per line

Jobs
ID Job ID Ran Files Coverage
1 5313126257.1 19 Jun 2023 02:35PM UTC 0
90.85
GitHub Action Run
Source Files on build 5313126257
Detailed source file information is not available for this build.
  • Back to Repo
  • cd7588ee on github
  • Prev Build on main (#5311495851)
  • Next Build on main (#5323031790)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc