Skip to content

fix: restore BLS scheme after failed block validation#7345

Draft
thepastaclaw wants to merge 1 commit into
dashpay:developfrom
thepastaclaw:fix/bls-scheme-restore
Draft

fix: restore BLS scheme after failed block validation#7345
thepastaclaw wants to merge 1 commit into
dashpay:developfrom
thepastaclaw:fix/bls-scheme-restore

Conversation

@thepastaclaw

Copy link
Copy Markdown

Restore BLS scheme after failed block validation

Issue being fixed or feature implemented

V19-boundary block validation can temporarily switch the process-wide BLS
scheme from legacy to basic while validating a candidate block. If validation
fails after that switch, early returns from ConnectBlock or
TestBlockValidity could leave bls::bls_legacy_scheme in the wrong state
even though the active chain tip did not advance.

What was done?

  • Added an RAII guard for bls::bls_legacy_scheme snapshots in validation code.
  • Restored the previous BLS scheme on all ConnectBlock failure paths.
  • Preserved successful real post-activation behavior by dismissing the guard
    only after a full successful real block connection.
  • Replaced the old success-only restore in TestBlockValidity so dry-run and
    proposal validation restores on both success and failure.
  • Added a regression test that validates and processes a malformed V19-boundary
    candidate block which flips the scheme and then fails later with
    bad-txns-inputs-missingorspent.

How Has This Been Tested?

Tested on macOS 15.6 arm64 in a local Dash Core worktree.

  • git diff --check
  • make -C src -j8 test/test_dash
  • Focused Boost regression:
    evo_dip3_activation_tests/v19_boundary_validation_failure_restores_bls_scheme
  • Full nearby Boost suite: evo_dip3_activation_tests
  • Pre-PR code review gate: ship

Breaking Changes

None.

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository
    code-owners and collaborators only)

@thepastaclaw

Copy link
Copy Markdown
Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

⚠️ Potential Merge Conflicts Detected

This PR has potential conflicts with the following open PRs:

Please coordinate with the authors of these PRs to avoid merge conflicts.

@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 44de4cad-7a4f-458f-99a4-bed0ffaa3395

📥 Commits

Reviewing files that changed from the base of the PR and between 82e5634 and 17e316a.

📒 Files selected for processing (4)
  • src/test/evo_deterministicmns_tests.cpp
  • src/test/validation_block_tests.cpp
  • src/validation.cpp
  • src/validation.h
✅ Files skipped from review due to trivial changes (1)
  • src/test/validation_block_tests.cpp
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/validation.h
  • src/test/evo_deterministicmns_tests.cpp

Walkthrough

Adds an RAII guard (ScopedBLSLegacyScheme) and SetBLSLegacyScheme helper, updates ConnectBlock to optionally return the "effective" bls::bls_legacy_scheme observed during validation, instantiates the guard in ConnectBlock/TestBlockValidity/VerifyDB to ensure restoration on scope exit, and updates callers (ConnectTip, VerifyDB reconnect) to re-apply the effective scheme after ConnectBlock. Adds a regression test exercising a v19-boundary validation failure to assert the scheme is preserved.

Sequence Diagram(s)

sequenceDiagram
  participant ConnectTip
  participant ConnectBlock
  participant ScopedGuard as ScopedBLSLegacyScheme
  participant BLS as bls::bls_legacy_scheme
  ConnectTip->>ConnectBlock: call(&effective_bls_legacy_scheme)
  ConnectBlock->>ScopedGuard: instantiate (snapshot)
  ScopedGuard->>BLS: snapshot value
  ConnectBlock->>BLS: may modify during validation
  ConnectBlock->>ConnectBlock: write current value to *effective_bls_legacy_scheme
  ConnectBlock->>ScopedGuard: exit destroys guard
  ScopedGuard->>BLS: restore original value
  ConnectTip->>BLS: SetBLSLegacyScheme(effective_value)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested reviewers

  • UdjinM6
  • kwvg
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 35.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main fix: restoring the BLS scheme when block validation fails, which is the core issue addressed throughout the changeset.
Description check ✅ Passed The description is directly related to the changeset, clearly explaining the issue being fixed, what was done, testing approach, and confirming no breaking changes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Infer (1.2.0)
src/test/evo_deterministicmns_tests.cpp

src/test/evo_deterministicmns_tests.cpp:5:10: fatal error: 'test/util/setup_common.h' file not found
5 | #include <test/util/setup_common.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
Aborting translation of method 'FundTransaction' in file 'src/test/evo_deterministicmns_tests.cpp': "Assert_failure src/clang/cAst_utils.ml:249:53"
Uncaught Internal Error: "Assert_failure src/clang/cAst_utils.ml:249:53"
Error backtrace:
Raised at ClangFrontend__CAst_utils.get_decl_from_typ_ptr in file "src/clang/cAst_utils.ml", line 249, characters 53-65
Called from ClangFrontend__CTrans.CTrans_funct.get_destructor_decl_ref in file "src/clang/cTrans.ml", line 658, characters 12-59
Called from ClangFrontend__CTrans.CTrans_funct.destructor_calls.(fun) in file "src/clang/cTrans.ml", line 2048, characters 12-69
Called from Base__List.rev_filter_map.loop in file "src/list.ml", line 944, characters 13-17
Called from Base__List.filter_map in file "src/list.ml" (inlined), line 951, charac

... [truncated 2200 characters] ...

rom ClangFrontend__CFrontend_decl.CFrontend_decl_funct.function_decl in file "src/clang/cFrontend_decl.ml", line 90, characters 12-151
Called from ClangFrontend__CFrontend_decl.CFrontend_decl_funct.translate_one_declaration in file "src/clang/cFrontend_decl.ml", line 453, characters 10-56
Called from Stdlib__List.iter in file "list.ml", line 110, characters 12-15
Called from Stdlib__List.iter in file "list.ml" (inlined), line 110, characters 17-25
Called from Base__List0.iter in file "src/list0.ml" (inlined), line 25, characters 16-35
Called from ClangFrontend__CFrontend.compute_icfg in file "src/clang/cFrontend.ml", line 28, characters 6-130
Called from ClangFrontend__Capture.run_clang_frontend in file "src/clang/Capture.ml", line 91, characters 25-73
Re-raised at IStdlib__IExn.reraise_if

src/test/validation_block_tests.cpp

src/test/validation_block_tests.cpp:5:10: fatal error: 'boost/test/unit_test.hpp' file not found
5 | #include <boost/test/unit_test.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
Error: the following clang command did not run successfully:
/opt/infer-linux-x86_64-v1.2.0/lib/infer/facebook-clang-plugins/clang/install/bin/clang-18
@/tmp/coderabbit-infer/17e316a441c3081f7931a8cedc754ca6cfd67d69-c51ca52621176697/tmp/clang_command_.tmp.2bf1dc.txt
++Contents of '/tmp/coderabbit-infer/17e316a441c3081f7931a8cedc754ca6cfd67d69-c51ca52621176697/tmp/clang_command_.tmp.2bf1dc.txt':
"-cc1" "-load"
"/opt/infer-linux-x86_64-v1.2.0/lib/infer/infer/bin/../../facebook-clang-plugins/libtooling/build/FacebookClangPlugin.dylib"
"-add-plugin" "BiniouASTExporter" "-plugin-arg-BiniouASTExporter" "-"
"-plugin-arg-BiniouASTExporter" "PREPEND_CURRENT_DIR=1"
"-plugin-arg-BiniouASTExporter" "MAX_STRING_SIZE=65535" "-cc1" "-triple"
"x86_64-unknown-linux-gnu

... [truncated 1130 characters] ...

lib/clang/18/include"
"-internal-isystem" "/usr/local/include" "-internal-isystem"
"/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
"-internal-externc-isystem" "/usr/include/x86_64-linux-gnu"
"-internal-externc-isystem" "/include" "-internal-externc-isystem"
"/usr/include" "-Wno-ignored-optimization-argument" "-Wno-everything"
"-fdeprecated-macro" "-ferror-limit" "19" "-fgnuc-version=4.2.1"
"-fskip-odr-check-in-gmf" "-fcxx-exceptions" "-fexceptions"
"-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o"
"/tmp/coderabbit-infer/c51ca52621176697/file.o" "-x" "c++"
"src/test/validation_block_tests.cpp" "-O0" "-fno-builtin" "-include"
"/opt/infer-linux-x86_64-v1.2.0/lib/infer/infer/bin/../lib/clang_wrappers/global_defines.h"
"-Wno-everything"

src/validation.cpp

src/validation.cpp:7:10: error: 'validation.h' file not found with include; use "quotes" instead
7 | #include <validation.h>
| ^~~~~~~~~~~~~~
| "validation.h"
In file included from src/validation.cpp:7:
src/validation.h:14:10: error: 'arith_uint256.h' file not found with include; use "quotes" instead
14 | #include <arith_uint256.h>
| ^~~~~~~~~~~~~~~~~
| "arith_uint256.h"
src/validation.h:15:10: error: 'attributes.h' file not found with include; use "quotes" instead
15 | #include <attributes.h>
| ^~~~~~~~~~~~~~
| "attributes.h"
src/validation.h:16:10: error: 'chain.h' file not found with include; use "quotes" instead
16 | #include <chain.h>
| ^~~~~~~~~
| "chain.h"
In file included from src/validation.cpp:7:
In file included from src/validation.h:16:
src/chain.h:9:10: error: 'arith_uint256.h' file not found with

... [truncated 2200 characters] ...

ans.CTrans_funct.exec_with_node_creation in file "src/clang/cTrans.ml" (inlined), line 104, characters 20-38
Called from ClangFrontend__CTrans.CTrans_funct.get_clang_stmt_trans in file "src/clang/cTrans.ml" (inlined), line 5395, characters 4-69
Called from ClangFrontend__CTrans.CTrans_funct.get_custom_stmt_trans in file "src/clang/cTrans.ml", line 5401, characters 8-55
Called from ClangFrontend__CTrans.CTrans_funct.exec_trans_instrs.exec_trans_instrs_rev in file "src/clang/cTrans.ml" (inlined), line 5365, characters 28-54
Called from ClangFrontend__CTrans.CTrans_funct.exec_trans_instrs in file "src/clang/cTrans.ml" (inlined), line 5389, characters 6-70
Called from ClangFrontend__CTrans.CTrans_funct.instructions_trans in file "src/clang/cTrans.ml", line 5451, characters 25-68
Called from Cl


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/validation.cpp`:
- Line 2599: The call to bls_scheme_guard.Dismiss() inside ConnectBlock causes
the switched BLS scheme to persist across non-tip replays (e.g.
CVerifyDB::VerifyDB calling ConnectBlock on a temporary cache), so move the
persistence decision out of ConnectBlock and into the real chain advance site
(CChainState::ConnectTip) or gate it behind an explicit opt-in flag;
specifically, remove or stop calling ScopedBLSLegacyScheme::Dismiss() from
within ConnectBlock and instead create and dismiss ScopedBLSLegacyScheme in
ConnectTip (around the actual Flush/Commit, m_chain.SetTip and UpdateTip
sequence) so that bls::bls_legacy_scheme only flips when the tip truly advances,
or add an explicit parameter on ConnectBlock (e.g., persist_scheme=false) and
have ConnectTip call ConnectBlock with persist_scheme=true and perform the
Dismiss() there.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 044045a9-71a1-40ba-978c-ff4e44e465b0

📥 Commits

Reviewing files that changed from the base of the PR and between 317917a and ca30a72.

📒 Files selected for processing (2)
  • src/test/evo_deterministicmns_tests.cpp
  • src/validation.cpp

Comment thread src/validation.cpp Outdated
@thepastaclaw thepastaclaw force-pushed the fix/bls-scheme-restore branch 2 times, most recently from aacbd36 to 67427a9 Compare June 9, 2026 00:42
@thepastaclaw

Copy link
Copy Markdown
Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/test/validation_block_tests.cpp`:
- Around line 384-410: The test mutates the global bls::bls_legacy_scheme flag
without restoring it; capture the current value of bls::bls_legacy_scheme before
calling bls::bls_legacy_scheme.store(true) and restore it at the end of the test
(or use an RAII/scope-guard) so the global state is reset regardless of test
assertions or failures; reference the mutation point
(bls::bls_legacy_scheme.store(true)) and ensure restoration runs after the
TestBlockValidity/ProcessNewBlock checks (or in a teardown/scope guard) to avoid
cross-test leakage.

In `@src/validation.cpp`:
- Around line 3088-3090: The tip is published with the old BLS scheme because
SetBLSLegacyScheme(effective_bls_legacy_scheme, __func__) is called after
UpdateTip; move the SetBLSLegacyScheme call to immediately after
m_chain.SetTip(*pindexNew) and before UpdateTip(pindexNew) so the process-wide
BLS scheme is updated prior to notifying waiters (locate the sequence
m_chain.SetTip(*pindexNew); UpdateTip(pindexNew); SetBLSLegacyScheme(...) and
reorder to m_chain.SetTip(*pindexNew); SetBLSLegacyScheme(...);
UpdateTip(pindexNew)).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 82e1b1aa-3913-48be-b707-4994ca6f17aa

📥 Commits

Reviewing files that changed from the base of the PR and between ca30a72 and 67427a9.

📒 Files selected for processing (3)
  • src/test/validation_block_tests.cpp
  • src/validation.cpp
  • src/validation.h

Comment thread src/test/validation_block_tests.cpp Outdated
Comment thread src/validation.cpp
@thepastaclaw

Copy link
Copy Markdown
Author

Addressed latest CodeRabbit findings in a34f16a: restored the test-local BLS scheme after the regression check and moved SetBLSLegacyScheme before UpdateTip so tip notifications observe the effective scheme. Validation: make -C src -j8 test/test_dash-validation_block_tests.o test/test_dash and src/test/test_dash --run_test=bls_validation_tests/v19_boundary_validation_failure_restores_bls_scheme --catch_system_errors=no.

@thepastaclaw thepastaclaw force-pushed the fix/bls-scheme-restore branch from 67427a9 to a34f16a Compare June 9, 2026 00:53
@thepastaclaw

Copy link
Copy Markdown
Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@thepastaclaw thepastaclaw force-pushed the fix/bls-scheme-restore branch from a34f16a to 82e5634 Compare June 9, 2026 01:27
@thepastaclaw

Copy link
Copy Markdown
Author

Follow-up pushed in 82e5634: moved the BLS regression check into the existing Evo activation suite so CI no longer tries to run a disabled filtered test in nowallet/tsan builds. Validation: make -C src -j8 test/evo_deterministicmns_tests.cpp.test test/validation_block_tests.cpp.test.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

@thepastaclaw I'll trigger a review of the latest changes including the follow-up commit 82e5634.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/test/evo_deterministicmns_tests.cpp (1)

1001-1027: ⚡ Quick win

Use scoped restoration for bls::bls_legacy_scheme to avoid cross-test state leaks.

The end-of-test restore is skipped if a fatal abort/exception happens after Line 1008, which can leave the global scheme mutated for subsequent tests.

Suggested hardening
-    const bool previous_bls_scheme{bls::bls_legacy_scheme.load()};
+    const bool previous_bls_scheme{bls::bls_legacy_scheme.load()};
+    struct ScopedRestoreBlsScheme {
+        explicit ScopedRestoreBlsScheme(bool saved) : saved_scheme(saved) {}
+        ~ScopedRestoreBlsScheme() { bls::bls_legacy_scheme.store(saved_scheme); }
+        bool saved_scheme;
+    } bls_scheme_restore_guard{previous_bls_scheme};
@@
-    bls::bls_legacy_scheme.store(previous_bls_scheme);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/test/evo_deterministicmns_tests.cpp` around lines 1001 - 1027, Replace
the manual save/restore of bls::bls_legacy_scheme with a scoped RAII guard so
the original value is always restored even if the test aborts or throws;
specifically, instead of storing previous_bls_scheme and calling
bls::bls_legacy_scheme.store(previous_bls_scheme) at the end, create a small
scoped restorer object (or use an existing SCOPE_EXIT/ScopedRestore helper) that
captures bls::bls_legacy_scheme and its current value on construction and calls
store(original) in its destructor, and then call
bls::bls_legacy_scheme.store(true) to set the test value — this ensures
bls::bls_legacy_scheme is restored no matter how the test exits.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/test/evo_deterministicmns_tests.cpp`:
- Around line 1001-1027: Replace the manual save/restore of
bls::bls_legacy_scheme with a scoped RAII guard so the original value is always
restored even if the test aborts or throws; specifically, instead of storing
previous_bls_scheme and calling
bls::bls_legacy_scheme.store(previous_bls_scheme) at the end, create a small
scoped restorer object (or use an existing SCOPE_EXIT/ScopedRestore helper) that
captures bls::bls_legacy_scheme and its current value on construction and calls
store(original) in its destructor, and then call
bls::bls_legacy_scheme.store(true) to set the test value — this ensures
bls::bls_legacy_scheme is restored no matter how the test exits.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 2605dc77-85b5-4bbd-87f1-352ee65d2ff2

📥 Commits

Reviewing files that changed from the base of the PR and between a34f16a and 82e5634.

📒 Files selected for processing (4)
  • src/test/evo_deterministicmns_tests.cpp
  • src/test/validation_block_tests.cpp
  • src/validation.cpp
  • src/validation.h
✅ Files skipped from review due to trivial changes (1)
  • src/test/validation_block_tests.cpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/validation.h

@thepastaclaw thepastaclaw force-pushed the fix/bls-scheme-restore branch from 82e5634 to 17e316a Compare June 9, 2026 01:37
@thepastaclaw

Copy link
Copy Markdown
Author

Addressed the latest CodeRabbit nitpick in 17e316a: the BLS regression now uses a scoped restorer so bls::bls_legacy_scheme is restored even if the test exits early.

Validation: make -C src -j8 test/test_dash && src/test/test_dash --run_test=evo_dip3_activation_tests/v19_boundary_validation_failure_restores_bls_scheme --catch_system_errors=no.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

@thepastaclaw: Thanks for the follow-up! Using a scoped RAII restorer in the regression test is the right approach — it guarantees bls::bls_legacy_scheme is restored on all exit paths (assertions, exceptions, early returns), consistent with the ScopedBLSLegacyScheme pattern introduced in the production code. I'll trigger a review of the latest changes.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@thepastaclaw

Copy link
Copy Markdown
Author
✅ Review complete (commit 9ffe3c1bff)\n\nAutomated code review verdict: ship. Reviewed the BLS scheme restoration path for failed block validation and found no significant issues; success-path scheme behavior remains preserved.

@thepastaclaw

Copy link
Copy Markdown
Author

CI note: the only red item is predict_conflicts; the full build/test matrix is green. The predictor flags overlaps in src/validation.cpp, src/validation.h, and nearby Evo tests against other open PRs, which are the files this fix necessarily touches. I don’t see a clean way to reduce the footprint further without losing the BLS-scheme restoration coverage, so this is blocked on PR ordering/merge sequencing rather than a test failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant