<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vano Chkheidze</title>
    <description>The latest articles on DEV Community by Vano Chkheidze (@vano_chkheidze_5071c537e2).</description>
    <link>https://dev.to/vano_chkheidze_5071c537e2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3773904%2F11f8fb92-ee03-417c-8afc-9b5b8ff59b5a.jpg</url>
      <title>DEV Community: Vano Chkheidze</title>
      <link>https://dev.to/vano_chkheidze_5071c537e2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vano_chkheidze_5071c537e2"/>
    <language>en</language>
    <item>
      <title>UltrafastSecp256k1 v4.0 — Optional Secondary secp256k1 Backend for Evaluation</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Sun, 17 May 2026 00:47:55 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v40-optional-secondary-secp256k1-backend-for-evaluation-2ikm</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v40-optional-secondary-secp256k1-backend-for-evaluation-2ikm</guid>
      <description>&lt;p&gt;Overview&lt;br&gt;
UltrafastSecp256k1 v4.0 is a high-performance secp256k1 engine built for evaluation as an optional secondary backend for Bitcoin Core. The goal is not to replace libsecp256k1, but to make it possible to measure, compare, and selectively enable an alternative implementation under controlled conditions.&lt;/p&gt;

&lt;p&gt;This post presents the current state of the project, its integration model, and the evidence gathered through continuous audit infrastructure.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt; Release v4.0.0: &lt;a href="https://github.com/shrec/UltrafastSecp256k1/releases/tag/v4.0.0" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1/releases/tag/v4.0.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Integration Model&lt;br&gt;
Integration uses a shim layer that exposes the identical secp256k1.h API surface. Bitcoin Core can be built with the alternative backend using a single CMake flag:&lt;/p&gt;

&lt;p&gt;cmake -B build -DSECP256K1_BACKEND=ultrafast&lt;br&gt;
cmake --build build&lt;br&gt;
The default backend remains libsecp256k1 unchanged. All existing Bitcoin Core C++ source files remain unmodified — only the CMake build system references a different library.&lt;/p&gt;

&lt;p&gt;Fork demonstrating this integration: &lt;a href="https://github.com/shrec/bitcoin/tree/feature/ultrafast-secp256k1-backend" rel="noopener noreferrer"&gt;https://github.com/shrec/bitcoin/tree/feature/ultrafast-secp256k1-backend&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shim API coverage:&lt;/p&gt;

&lt;p&gt;secp256k1.h — context, pubkey, seckey&lt;br&gt;
secp256k1_extrakeys.h — keypair, x-only pubkey (BIP-340/341)&lt;br&gt;
secp256k1_schnorrsig.h — Schnorr sign/verify (BIP-340)&lt;br&gt;
secp256k1_ecdh.h — ECDH&lt;br&gt;
secp256k1_recovery.h — ECDSA recovery&lt;br&gt;
secp256k1_ellswift.h — ElligatorSwift (BIP-324)&lt;br&gt;
secp256k1_musig.h — MuSig2 (BIP-327, all 14 functions)&lt;br&gt;
Performance — Bitcoin Core Integration Paths&lt;br&gt;
All numbers from bench_bitcoin (Bitcoin Core's native benchmark harness) on Intel i5-14400F, GCC 14.2.0, Release+LTO, intel_pstate/no_turbo=1, taskset -c 0, nice -20, 5 runs.&lt;/p&gt;

&lt;p&gt;Canonical artifact: docs/BITCOIN_CORE_BENCH_RESULTS.json&lt;/p&gt;

&lt;p&gt;Transaction signing:&lt;/p&gt;

&lt;p&gt;Benchmark   Ultra   libsecp256k1    Delta&lt;br&gt;
SignSchnorrWithMerkleRoot   83.9 µs    113.4 µs   +35% faster&lt;br&gt;
SignSchnorrWithNullMerkleRoot   84.0 µs    113.0 µs   +35% faster&lt;br&gt;
SignTransactionECDSA    149.5 µs   165.1 µs   +10% faster&lt;br&gt;
SignTransactionSchnorr  125.4 µs   137.5 µs   +10% faster&lt;br&gt;
Script verification:&lt;/p&gt;

&lt;p&gt;Benchmark   Ultra   libsecp256k1    Delta&lt;br&gt;
VerifyScriptP2TR_KeyPath    45.4 µs    46.3 µs    +2.0% faster&lt;br&gt;
VerifyScriptP2TR_ScriptPath 76.5 µs    83.8 µs    +10% faster&lt;br&gt;
VerifyScriptP2WPKH  46.0 µs    45.8 µs    parity (within noise)&lt;br&gt;
Block validation aggregate (ConnectBlock, 2000 unique signatures):&lt;/p&gt;

&lt;p&gt;Scenario    Ultra   libsecp256k1    Delta&lt;br&gt;
All ECDSA   254.3 ms    257.4 ms    +1.2% faster&lt;br&gt;
All Schnorr 253.0 ms    255.3 ms    +0.9% faster&lt;br&gt;
Mixed (2k Schnorr + 1k ECDSA)   253.9 ms    257.7 ms    +1.5% faster&lt;br&gt;
Without LTO: ConnectBlock is ~0.5–1.0% slower than libsecp256k1 due to i-cache pressure from a larger code footprint. LTO is required for Ultra to win the aggregate. This tradeoff is documented in docs/SHIM_KNOWN_DIVERGENCES.md.&lt;/p&gt;

&lt;p&gt;Bitcoin Core test suite: 749/749 passing with Ultra backend (GCC 14.2.0, May 2026).&lt;/p&gt;

&lt;p&gt;Performance — Constant-Time Signing Primitives&lt;br&gt;
From docs/bench_unified_2026-05-16_gcc14_x86-64.json. CT-vs-CT co-measured in the same run (ratios are TSC-independent):&lt;/p&gt;

&lt;p&gt;Operation   Ultra CT    libsecp256k1    Ratio&lt;br&gt;
CT ECDSA sign   21.6 µs    59.7 µs    1.30× faster&lt;br&gt;
CT Schnorr sign (BIP-340)   18.1 µs    46.5 µs    1.28× faster&lt;br&gt;
Schnorr verify  84.3 µs    84.3 µs    equal&lt;br&gt;
Field arithmetic primitives:&lt;/p&gt;

&lt;p&gt;Primitive   Ultra   libsecp256k1    Ratio&lt;br&gt;
field_mul   20.1 ns 26.5 ns 1.32×&lt;br&gt;
field_sqr   18.7 ns 22.3 ns 1.19×&lt;br&gt;
field_inv   1253.9 ns   1506.0 ns   1.20×&lt;br&gt;
field_from_bytes    4.8 ns  13.0 ns 2.71×&lt;br&gt;
Continuous Audit and Assurance (CAAS)&lt;br&gt;
The repository includes a continuous audit infrastructure tracking security regressions across every commit.&lt;/p&gt;

&lt;p&gt;Current state at v4.0.0:&lt;/p&gt;

&lt;p&gt;262 exploit PoC modules covering 20+ CVE/attack classes — all pass&lt;br&gt;
369 total audit modules (262 exploit PoC + 107 non-exploit)&lt;br&gt;
CAAS autonomy score: 100/100 (8/8 gates)&lt;br&gt;
Source: docs/SECURITY_AUTONOMY_KPI.json&lt;/p&gt;

&lt;p&gt;Audit surfaces include: nonce reuse, side-channel timing (dudect), CT boundary verification, batch verify soundness, MuSig2/FROST protocol attacks, adaptor signatures, DER BIP-66 strict parsing, BIP-340/RFC-6979 known-answer tests, Wycheproof vectors, structure-aware fuzzing, differential testing vs libsecp256k1, and Python-based algebraic property testing.&lt;/p&gt;

&lt;p&gt;Security properties enforced:&lt;/p&gt;

&lt;p&gt;Constant-time signing: ECDSA, Schnorr, MuSig2, FROST, BIP-324 XDH&lt;br&gt;
Per-context DPA blinding (secp256k1_context_randomize fully implemented)&lt;br&gt;
Strict scalar parsing for private key inputs (parse_bytes_strict_nonzero)&lt;br&gt;
Fail-closed batch signing APIs&lt;br&gt;
BIP-66 strict DER enforcement in all shim paths&lt;br&gt;
Benchmarking Methodology&lt;br&gt;
Benchmarks distinguish between:&lt;/p&gt;

&lt;p&gt;CT vs CT — constant-time Ultra signing vs constant-time libsecp signing (production-equivalent, fair comparison)&lt;br&gt;
Bitcoin Core integration — bench_bitcoin binary, real validation pipeline&lt;br&gt;
LTO vs no-LTO — both measured and documented&lt;br&gt;
Warm-cache vs cold-cache — noted where applicable&lt;br&gt;
All claimed improvements include error percentage from nanobench's internal statistics. Inconclusive results (overlapping ranges) are reported as such. Results are reproducible from the canonical JSON artifacts in the repository.&lt;/p&gt;

&lt;p&gt;Reproducibility&lt;br&gt;
Builds are deterministic:&lt;/p&gt;

&lt;p&gt;-ffile-prefix-map strips source paths from debug info&lt;br&gt;
SOURCE_DATE_EPOCH awareness&lt;br&gt;
Fixed -march=x86-64-v3 (no host-native variation)&lt;br&gt;
SLSA provenance attached to v4.0.0 release artifacts (via Sigstore/Cosign)&lt;br&gt;
Platform Coverage&lt;br&gt;
CI passing on all platforms as of v4.0.0:&lt;/p&gt;

&lt;p&gt;Platform    Architecture    Compiler&lt;br&gt;
Linux   x86-64-v3   GCC 14 / Clang 17&lt;br&gt;
Linux   ARM64   GCC 14&lt;br&gt;
Linux   RISC-V 64   GCC 14&lt;br&gt;
macOS   ARM64 (Apple Silicon)   Clang 15&lt;br&gt;
Windows x86-64  MSVC / GCC&lt;br&gt;
Additional: Android ARM64 (NDK), WASM, ESP32, STM32.&lt;/p&gt;

&lt;p&gt;Known Limitations&lt;br&gt;
ConnectBlock improvement requires Release+LTO. Without LTO: ~0.5–1.0% slower than libsecp256k1.&lt;br&gt;
GPU backends (CUDA, OpenCL, Metal) are present but not part of the Bitcoin Core evaluation profile.&lt;br&gt;
This covers the CPU backend only.&lt;br&gt;
Current Objective&lt;br&gt;
No mandatory integration path is proposed. The current objective is to make an alternative backend available for evaluation on technical grounds, with reproducible evidence, minimal integration surface, and an easy rollback path.&lt;/p&gt;

&lt;p&gt;The default backend remains libsecp256k1. All existing behavior is preserved unless the new backend is explicitly enabled at build time.&lt;/p&gt;

&lt;p&gt;Reviewer Entry Path&lt;br&gt;
git clone &lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt;&lt;br&gt;
cd UltrafastSecp256k1&lt;br&gt;
python3 ci/verify_external_audit_bundle.py --allow-commit-mismatch&lt;br&gt;
Key documents:&lt;/p&gt;

&lt;p&gt;docs/BITCOIN_CORE_BACKEND_EVIDENCE.md — full reviewer package&lt;br&gt;
docs/BENCHMARKS.md — benchmark methodology and raw data&lt;br&gt;
docs/AUDIT_CHANGELOG.md — security audit history&lt;br&gt;
docs/SHIM_KNOWN_DIVERGENCES.md — documented behavioral differences from libsecp256k1&lt;br&gt;
All performance numbers are from controlled benchmark runs with hard turbo lock. Raw data available in the repository. Canonical benchmark artifact: docs/BITCOIN_CORE_BENCH_RESULTS.json, docs/bench_unified_2026-05-16_gcc14_x86-64.json.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>cpp</category>
      <category>opensource</category>
      <category>performance</category>
    </item>
    <item>
      <title>UltrafastSecp256k1 v3.67.0</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Wed, 22 Apr 2026 09:08:35 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3670-666</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3670-666</guid>
      <description>&lt;p&gt;v3.67.0 — CAAS hardening, multi-CI reproducible builds, OpenSSF Scorecard cleanup, Zenodo + funding outreach&lt;br&gt;
This release closes the remaining CAAS gap-closure roadmap, lands the multi-CI reproducible-build attestation surface, brings the OpenSSF Scorecard code-scanning queue to zero open alerts, and pre-stages Zenodo metadata + a funding-outreach playbook. No public-API or ABI breakage; no behavioral changes to the crypto engine.&lt;/p&gt;

&lt;p&gt;Highlights&lt;br&gt;
Continuous Audit (CAAS) — roadmap complete&lt;br&gt;
All eleven CAAS hardening items (H-1 … H-11) closed in a single sweep.&lt;br&gt;
Gap-closure roadmap G-1 … G-10 closed: threat model, RNG entropy attestation, hardware side-channel methodology, compliance stance, INTEROP matrix, multi-CI reproducible builds, CT-tool independence, SPEC traceability matrix, protocol spec, traceability-join gate, RFC 9116.&lt;br&gt;
scripts/audit_gate.py now wires G-1 / G-1b / G-8 / G-10 as first-class sub-gates; caas_runner.py is fail-fast across all five stages.&lt;br&gt;
scripts/check_exploit_wiring.py enforces the Exploit / Audit Test Conversion Standard at CAAS Stage 0 — every audit/test_exploit_*.cpp file must be wired into unified_audit_runner.cpp or the gate refuses the push.&lt;br&gt;
Audit dashboard refreshed: hardening progress 12/12 (100%).&lt;br&gt;
Multi-CI reproducible-build attestation&lt;br&gt;
.gitlab-ci.yml and .woodpecker.yml (Codeberg) added alongside the existing GitHub Actions surface — the same release artifact is now built on three independent CI providers and verified byte-identical via SHA-256.&lt;br&gt;
docs/MULTI_CI_REPRODUCIBLE_BUILD.md documents the protocol; docs/SUPPLY_CHAIN_LOCAL_PARITY.md describes the local-parity check.&lt;br&gt;
INTEROP differential testing&lt;br&gt;
First INTEROP §2 reference wired: OpenSSL 3.x random-vector differential PoC (audit/test_exploit_differential_openssl.cpp), advisory module, host-only.&lt;br&gt;
INTEROP §3 closure tracked for k256 (Rust), btcd (Go), BoringSSL, WolfSSL, NSS, MuSig2 wire, FROST wire.&lt;br&gt;
OpenSSF Scorecard — code-scanning queue cleared&lt;br&gt;
All open code-scanning alerts on main resolved.&lt;br&gt;
PinnedDependenciesID (6): every GitHub Action pinned by 40-character SHA in mutation-weekly.yml, rocm-smoke.yml, and formal-verification.yml; pip installs in those workflows switched to pip install --require-hashes -r ... against new hash-pinned requirement files.&lt;br&gt;
TokenPermissionsID (1 fixed in code): caas-evidence-refresh.yml top-level contents: write dropped to read; write retained only at the job level where the workflow actually pushes refreshed evidence back to dev.&lt;br&gt;
Six remaining TokenPermissionsID alerts dismissed as legitimate job-scoped writes (release sync-docs, audit-report publish to gh-pages, bench-regression baseline push, three ClusterFuzzLite SARIF uploads).&lt;br&gt;
BranchProtectionID resolved at config level: main-protection ruleset hardened — bypass_actors=&lt;a href="https://dev.toadmins%20no%20longer%20exempt"&gt;&lt;/a&gt;, required_approving_review_count=2, require_code_owner_review=true, require_last_push_approval=true, dismiss_stale_reviews_on_push=true.&lt;br&gt;
Crypto bug-pattern scanner&lt;br&gt;
13 CVE-grounded pattern checkers added to scripts/dev_bug_scanner.py (timing-dependent branches on secret data, missing zeroization, RFC 6979 misuse patterns, ECDSA nonce reuse signatures, scalar-mod-n omission, …).&lt;br&gt;
False-positive reduction pass across eight checkers; investigation report at docs/SCANNER_INVESTIGATION_REPORT.md.&lt;br&gt;
GPU backend parity&lt;br&gt;
schnorr_snark_witness_batch parity gap closed via deterministic host-side CPU fallback in gpu/src/gpu_backend_fallback.cpp — CUDA, OpenCL, and Metal now all return correct byte-identical results. Native GPU kernels remain a future optimisation; public-data-only operation.&lt;br&gt;
Cross-compile / CI fixes&lt;br&gt;
arm64 + riscv64 cross-compile no longer picks up host OpenSSL headers via bare __has_include. The OpenSSL gate is now driven by a CMake UFSECP_HAVE_OPENSSL=1 define that is only set when find_package(OpenSSL) actually links — the source guard requires both the define and __has_include.&lt;br&gt;
-Werror build no longer trips on OpenSSL EC_KEY deprecation warnings (pragma block scoped to the differential PoC).&lt;br&gt;
CAAS verdict accepts both PASS and PASS with advisory.&lt;br&gt;
Visibility surface&lt;br&gt;
.zenodo.json added — academic metadata staged for the next release; the next release-tag push will trigger Zenodo archival and DOI minting (Zenodo↔GitHub OAuth toggle is enabled).&lt;br&gt;
README.md "Cite this work" section + DOI badge placeholder.&lt;br&gt;
CITATION.cff linked from "Where to Start"; docs/ADOPTION.md and docs/FUNDING_TARGETS.md linked next to it.&lt;br&gt;
docs/FUNDING_TARGETS.md — funding playbook covering Bitcoin grant programmes (HRF, OpenSats, Brink, Spiral, Strike Catalyst, MIT DCI), Ethereum programmes (EF ESP, Protocol Guild, EF Academic, Optimism RetroPGF, Arbitrum, Coinbase / Base), EU / cross-cutting (NLnet NGI Zero, Sovereign Tech Fund, OSTIF, GitHub Accelerator, a16z crypto Open Source Grants), with 30-second + 5-minute pitches and an evidence-pointer column.&lt;br&gt;
README.md hero block now carries explicit CTAs: a one-line invitation for production users to PR themselves into docs/ADOPTION.md, and a one-line pointer for prospective sponsors to docs/FUNDING_TARGETS.md.&lt;br&gt;
Documentation reconciliation&lt;br&gt;
Exploit-PoC counts reconciled across all audit docs to the real number (189).&lt;br&gt;
Non-exploit module + CI workflow counts reconciled to reality.&lt;br&gt;
docs/SPEC_TRACEABILITY_MATRIX.md paths reconciled; traceability-join gate flipped to strict by default.&lt;br&gt;
Compatibility&lt;br&gt;
C ABI: unchanged.&lt;br&gt;
Public C++ API: unchanged.&lt;br&gt;
GPU backend GpuBackend virtual interface: one method (schnorr_snark_witness_batch) gained a deterministic CPU fallback; previously returned Unsupported on every backend.&lt;br&gt;
Reproducible build: byte-identical to v3.66.0 for the engine + library outputs; only CI / docs / audit-tooling surface changed.&lt;br&gt;
Adoption&lt;br&gt;
Sparrow Wallet Frigate ships UltrafastSecp256k1 by default since 1.4.0. See docs/ADOPTION.md for the integration details and Craig Raw's independent benchmarks.&lt;/p&gt;

&lt;p&gt;Cite this work&lt;br&gt;
This release will be archived on Zenodo with a DOI assigned automatically once the tag push completes. See .zenodo.json and CITATION.cff.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/shrec/UltrafastSecp256k1/releases/tag/v3.67.0" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1/releases/tag/v3.67.0&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>cicd</category>
      <category>opensource</category>
      <category>security</category>
    </item>
    <item>
      <title># I Replaced a $100K Security Audit with a CI Pipeline — And It Caught More Bugs</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Tue, 14 Apr 2026 01:34:17 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/-i-replaced-a-100k-security-audit-with-a-ci-pipeline-and-it-caught-more-bugs-1h11</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/-i-replaced-a-100k-security-audit-with-a-ci-pipeline-and-it-caught-more-bugs-1h11</guid>
      <description>&lt;p&gt;When I built &lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;UltrafastSecp256k1&lt;/a&gt; — a high-performance secp256k1 cryptography library targeting CPU, CUDA, OpenCL, Metal, ESP32, and a dozen other platforms — I faced a decision every serious crypto library author eventually faces.&lt;/p&gt;

&lt;p&gt;"You need a third-party audit."&lt;/p&gt;

&lt;p&gt;The quotes I got: $80K–$120K. Two weeks of engagement. A PDF. No contractual accountability for what happens after the next commit.&lt;/p&gt;

&lt;p&gt;I couldn't afford it. And honestly, once I understood what I was actually buying, I didn't want it.&lt;/p&gt;

&lt;p&gt;So I built something else.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Snapshot Audits
&lt;/h2&gt;

&lt;p&gt;The dominant model is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code → audit firm reviews for 2 weeks → PDF published → trust badge acquired
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The structural flaw: &lt;strong&gt;it's a snapshot, not a system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A PDF tells you the state of the code at the moment of review. It says nothing about what happens after the next commit, after a new platform port, after a new protocol feature lands. The "audit passed" badge persists even if the code is completely rewritten.&lt;/p&gt;

&lt;p&gt;Consider: Heartbleed lived in OpenSSL for &lt;strong&gt;two years&lt;/strong&gt;. OpenSSL had been reviewed by expert eyes and was trusted everywhere. The problem wasn't that too few people looked — it's that no system &lt;em&gt;continuously&lt;/em&gt; checked the specific property that failed.&lt;/p&gt;

&lt;p&gt;A missing bounds check. Two years. Production everywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built Instead: CAAS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Continuous Adversarial Audit System.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core principle: &lt;strong&gt;every security claim must be backed by an executable test that runs on every commit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not "we believe this is constant-time." But: "ct-verif LLVM pass, Valgrind taint analysis, and dudect statistical timing all pass for this function — on every commit, across x86-64 and ARM64."&lt;/p&gt;

&lt;p&gt;Here's what CAAS looks like in practice for UltrafastSecp256k1:&lt;/p&gt;

&lt;h3&gt;
  
  
  The Numbers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Assertions per build&lt;/td&gt;
&lt;td&gt;~1,000,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exploit PoC tests&lt;/td&gt;
&lt;td&gt;187 files, 171 registered modules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI workflows&lt;/td&gt;
&lt;td&gt;36 GitHub Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nightly differential checks&lt;/td&gt;
&lt;td&gt;1,300,000+ vs libsecp256k1 reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CT verification pipelines&lt;/td&gt;
&lt;td&gt;3 independent (LLVM ct-verif + Valgrind + dudect)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Formal proofs&lt;/td&gt;
&lt;td&gt;Z3 SMT (17 proofs) + Lean 4 (19 theorems) on SafeGCD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build matrix&lt;/td&gt;
&lt;td&gt;595 combinations (7 arch × 17 config × 5 OS)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Bug Capsule System
&lt;/h3&gt;

&lt;p&gt;When a bug is found — by me, by a contributor, by fuzzing, by a new ePrint paper — it becomes a &lt;em&gt;permanent&lt;/em&gt; regression test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"BUG-2026-0001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CT"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"severity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"critical"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CT branch leak in ecdsa_sign_recoverable low-s normalization"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"fix_commit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0a93ff4b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"affected_functions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ct::ecdsa_sign_recoverable"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"expected"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"no_timing_leak"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"timing_threshold"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;10.0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"exploit_poc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;python3 scripts/bug_capsule_gen.py capsule.json&lt;/code&gt; and it generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A deterministic regression test (.cpp)&lt;/li&gt;
&lt;li&gt;An exploit PoC test (if &lt;code&gt;exploit_poc: true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A CMakeLists.txt CTest fragment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The bug can never silently return. The knowledge is encoded in the test suite, not in anyone's memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Real Example: RISC-V CT Leak
&lt;/h3&gt;

&lt;p&gt;When I ported to RISC-V, the CT verification pipeline caught a timing side-channel on the first run. GCC was optimizing constant-time code into secret-dependent branches — because the RISC-V backend had different optimization behavior than x86-64.&lt;/p&gt;

&lt;p&gt;A snapshot audit done on x86-64 would never have seen this. The PDF would say "constant-time: verified." The RISC-V port would ship with a private key leak.&lt;/p&gt;

&lt;p&gt;CAAS caught it in the same commit as the port. Bug capsule created. CI gate added. Can never regress.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Custom Static Analyzer
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;dev_bug_scanner.py&lt;/code&gt; is a 700-line domain-specific static analyzer with 28 rule classes — including rules that generic tools like Clang-Tidy and CodeQL simply cannot catch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# CT_VIOLATION: fast:: call in CT-required signing path
# TAGGED_HASH_BYPASS: plain sha256() where BIP-340 tagged_hash required  
# SECRET_UNERASED: Scalar without secure_erase on signing path exit
# RANDOM_IN_SIGNING: getrandom() in RFC 6979 deterministic path
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These patterns are invisible to generic analyzers because they require secp256k1 domain knowledge. &lt;code&gt;fast::scalar_mul()&lt;/code&gt; in a signing function is valid C++ — but it's a side-channel vulnerability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full Reproducibility
&lt;/h3&gt;

&lt;p&gt;Everything runs locally in Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Exact GitHub CI environment, locally&lt;/span&gt;
docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.ci.yml run &lt;span class="nt"&gt;--rm&lt;/span&gt; pre-push   &lt;span class="c"&gt;# ~5 min gate&lt;/span&gt;
docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.ci.yml run &lt;span class="nt"&gt;--rm&lt;/span&gt; gh-parity  &lt;span class="c"&gt;# Full GitHub parity&lt;/span&gt;

&lt;span class="c"&gt;# Auditor challenge environment — self-contained, no setup&lt;/span&gt;
docker build &lt;span class="nt"&gt;-f&lt;/span&gt; Dockerfile.auditor &lt;span class="nt"&gt;-t&lt;/span&gt; ufsecp-auditor &lt;span class="nb"&gt;.&lt;/span&gt;
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; ufsecp-auditor  &lt;span class="c"&gt;# runs full audit suite&lt;/span&gt;

&lt;span class="c"&gt;# Bit-for-bit reproducible build verification&lt;/span&gt;
docker build &lt;span class="nt"&gt;-f&lt;/span&gt; Dockerfile.reproducible &lt;span class="nt"&gt;-t&lt;/span&gt; uf-repro-check &lt;span class="nb"&gt;.&lt;/span&gt;
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; uf-repro-check  &lt;span class="c"&gt;# compares two independent builds&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An external auditor doesn't need to install a toolchain. The Docker image includes libsecp256k1, &lt;a class="mentioned-user" href="https://dev.to/noble"&gt;@noble&lt;/a&gt;/secp256k1, coincurve, and python-ecdsa for differential testing — all hash-pinned.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happened With Real-World Adoption
&lt;/h2&gt;

&lt;p&gt;Craig Raw, author of &lt;a href="https://sparrowwallet.com/" rel="noopener noreferrer"&gt;Sparrow Wallet&lt;/a&gt;, integrated the library into &lt;a href="https://github.com/sparrowwallet/frigate" rel="noopener noreferrer"&gt;Frigate&lt;/a&gt; — a DuckDB-based Silent Payments scanner used for real Bitcoin mainnet transactions.&lt;/p&gt;

&lt;p&gt;Real-world scan result: 2× RTX 5090 scans 2 years of Bitcoin mainnet transactions (133M tweaks) in &lt;strong&gt;3.2 seconds&lt;/strong&gt; using this library. That's ~41.5 million BIP-352 operations per second.&lt;/p&gt;




&lt;h2&gt;
  
  
  What CAAS Does Not Claim
&lt;/h2&gt;

&lt;p&gt;Full transparency matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No third-party audit yet.&lt;/strong&gt; This is acknowledged openly. CAAS is designed to make one as efficient as possible when it happens — but it hasn't happened yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU CT is code-discipline only.&lt;/strong&gt; Vendor JIT compilers (CUDA PTX assembler, Metal, OpenCL runtime) transform kernels at runtime. The 3-pipeline formal CT verification applies to CPU only. Production signing always routes through CPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Novel attacks.&lt;/strong&gt; By definition, no prior PoC covers unknown unknowns. 11 fuzz harnesses and CT analysis are the mitigations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Actual Cost Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Coverage&lt;/th&gt;
&lt;th&gt;Ages?&lt;/th&gt;
&lt;th&gt;Accountability?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Snapshot audit&lt;/td&gt;
&lt;td&gt;$80–120K&lt;/td&gt;
&lt;td&gt;Bounded time window&lt;/td&gt;
&lt;td&gt;Yes, immediately&lt;/td&gt;
&lt;td&gt;"Reasonable effort"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAAS + bug bounty&lt;/td&gt;
&lt;td&gt;$5–10K bounty pool&lt;/td&gt;
&lt;td&gt;Continuous, adversarial&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;CI fails = hard stop&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The $100K buys a PDF with "reasonable effort" liability language. $10K in bug bounties buys adversarial researchers with economic incentive to find what breaks — and every finding becomes a permanent CI gate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fork It
&lt;/h2&gt;

&lt;p&gt;The entire infrastructure is MIT-licensed and ships with the library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/shrec/UltrafastSecp256k1.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get: 171 exploit PoC tests, 36 CI workflows, Docker environment, &lt;code&gt;dev_bug_scanner.py&lt;/code&gt;, bug capsule system, source graph, AI memory — the accumulated security knowledge of every platform port, every bug found, every ePrint paper evaluated.&lt;/p&gt;

&lt;p&gt;A startup that forks this doesn't start from zero security. They start from a system that has already caught a RISC-V CT leak, a Metal field arithmetic truncation affecting 0.05% of inputs, an OpenCL carry propagation bug, a CT branch leak in ECDSA signing.&lt;/p&gt;

&lt;p&gt;That's the compound effect that a PDF can never provide.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;UltrafastSecp256k1 is open source under MIT. Full documentation at &lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;github.com/shrec/UltrafastSecp256k1&lt;/a&gt;. Discussions on &lt;a href="https://discord.gg/E4BK8SeMYU" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cryptography</category>
      <category>bitcoin</category>
      <category>devops</category>
    </item>
    <item>
      <title>UltrafastSecp256k1 v3.60</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Sat, 04 Apr 2026 16:57:42 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v360-56jk</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v360-56jk</guid>
      <description>&lt;h2&gt;
  
  
  v3.60.0 — Audit Campaign Wave II · ZK Layer · Full GPU Parity · Wallet API · Performance
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Release date&lt;/strong&gt;: 2026-04-04&lt;br&gt;
&lt;strong&gt;Previous release&lt;/strong&gt;: v3.50.0 (2026-03-XX)&lt;br&gt;
&lt;strong&gt;Commits since v3.50.0&lt;/strong&gt;: 50+&lt;br&gt;
ABI-compatible with v3.50.x — drop-in upgrade&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Security &amp;amp; Correctness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ECDSA large-x fix&lt;/strong&gt; (&lt;code&gt;cpu/src/ecdsa.cpp&lt;/code&gt;) — corrected &lt;code&gt;r_less_than_pmn&lt;/code&gt; comparison in both FE52 and 4×64 paths. Wrong PMN constants assumed limb[2]=0; actual &lt;code&gt;p−n&lt;/code&gt; has limb[2]=1. Signatures where &lt;code&gt;k·G.x ∈ [n, p−1]&lt;/code&gt; (~2⁻¹²⁸ probability per sig) were incorrectly rejected. Equivalent to the Stark Bank CVE-2021-43568..43572 false-negative class. Found and confirmed by Wycheproof tcId 346. ([&lt;code&gt;ea8cfb3c&lt;/code&gt;])&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ECDSA r-overflow test suite&lt;/strong&gt; (&lt;code&gt;audit/test_exploit_ecdsa_r_overflow.cpp&lt;/code&gt;) — 19 checks: &lt;code&gt;k·G.x ≥ n&lt;/code&gt; accept case (tcId 346), &lt;code&gt;r=p−3&lt;/code&gt; strict-parse rejection, &lt;code&gt;r=n&lt;/code&gt; zero-reduction reject, &lt;code&gt;r=0&lt;/code&gt; reject, range sanity and sign/verify consistency. Closes Wycheproof PR #206 / Stark Bank CVE assurance gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wycheproof ECDSA Bitcoin vectors&lt;/strong&gt; (&lt;code&gt;audit/test_wycheproof_ecdsa_bitcoin.cpp&lt;/code&gt;) — 53 checks: BIP-62 low-S enforcement, tcId 346/347/348/351, high-S malleability boundary, r=0/s=0 special-value rejection, point-at-infinity rejection during verify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CUDA &lt;code&gt;jacobian_add_mixed_unchecked&lt;/code&gt; infinity flag&lt;/strong&gt; — missing &lt;code&gt;r-&amp;gt;infinity = false&lt;/code&gt; in the normal code path caused generator table entries &lt;code&gt;table[3..15]&lt;/code&gt; to carry uninitialized infinity flags. Scalars with many consecutive high nibbles (e.g. &lt;code&gt;n−1&lt;/code&gt;) hit &lt;code&gt;table[15]&lt;/code&gt; and produced wrong public keys. All 52/52 CUDA signing tests now pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ASan/UBSan clean&lt;/strong&gt;: 210/210 C++ tests pass under &lt;code&gt;-fsanitize=address,undefined -fno-sanitize-recover=all&lt;/code&gt; after full rebuild.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Exploit PoC / Audit Coverage (Wave II)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Suite&lt;/th&gt;
&lt;th&gt;Tests&lt;/th&gt;
&lt;th&gt;What it proves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_schnorr_nonce_reuse.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SNR-1..16&lt;/td&gt;
&lt;td&gt;Nonce reuse → full privkey recovery via &lt;code&gt;d' = (s1−s2)·(e1−e2)⁻¹ mod n&lt;/code&gt;; RFC6979 safety&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_bip32_child_key_attack.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CKA-1..18&lt;/td&gt;
&lt;td&gt;xpub + child_sk → parent_sk recovery; chained grandchild→child→master; hardened blockage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_frost_identifiable_abort.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;FIA-1..14&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;frost_verify_partial()&lt;/code&gt; correctly attributes bad partial sigs; multi-cheater, honest subset&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_hash_algo_sig_isolation.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HAS-1..11&lt;/td&gt;
&lt;td&gt;Cross-hash confusion rejected; Schnorr↔ECDSA format confusion; domain prefix isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_zk_adversarial.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;14 tests&lt;/td&gt;
&lt;td&gt;Malformed/forged ZK proofs: garbage bytes, scalar overflow, identity pubkey, 64-byte-flip&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_pedersen_adversarial.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12 tests&lt;/td&gt;
&lt;td&gt;Switch commitment security, imbalanced verify_sum, double-spend detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_ethereum_differential.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;10 tests&lt;/td&gt;
&lt;td&gt;go-ethereum / web3.py / ethers.js KAT vectors, ecrecover, EIP-155/EIP-191, keccak256&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_fuzz_musig2_frost.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;15 tests&lt;/td&gt;
&lt;td&gt;MuSig2 key_agg/nonce_agg/partial_verify; FROST keygen/sign/verify random inputs (5000+ rounds)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_wycheproof_ecdsa_bitcoin.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;53 checks&lt;/td&gt;
&lt;td&gt;Wycheproof BIP-62 + large-x vectors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test_exploit_ecdsa_r_overflow.cpp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;19 checks&lt;/td&gt;
&lt;td&gt;Wycheproof PR #206 r-overflow class&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EIP-712 KAT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;12 tests&lt;/td&gt;
&lt;td&gt;Typed structured data, 13 assertions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Python Dynamic Audit Suite (9 CTest targets)
&lt;/h3&gt;

&lt;p&gt;All powered by &lt;code&gt;--lib path/to/libufsecp.so&lt;/code&gt;, integrated in CI and &lt;code&gt;unified_audit_runner&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CTest target&lt;/th&gt;
&lt;th&gt;Checks&lt;/th&gt;
&lt;th&gt;What it catches&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_differential_crossimpl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1000+&lt;/td&gt;
&lt;td&gt;Wrong low-S, pubkey parity bugs, ECDH mismatches (vs coincurve + python-ecdsa)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_nonce_bias&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;10,000+ ops&lt;/td&gt;
&lt;td&gt;Chi-squared + KS + per-bit sweep (Minerva/TPM-FAIL-class biases)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_rfc6979_spec&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;200+&lt;/td&gt;
&lt;td&gt;Independent RFC 6979 §3.2 HMAC-SHA256 nonce derivation + Appendix A.2.5 KAT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_bip32_cka&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Live BIP-32 parent key recovery demo + hardened immunity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_glv_exhaustive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5000+ scalars&lt;/td&gt;
&lt;td&gt;GLV decomposition — adversarial Babai-boundary scalars vs coincurve reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_semantic_props&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1450+&lt;/td&gt;
&lt;td&gt;Algebraic properties (kG+lG==(k+l)G), roundtrip, determinism, Hypothesis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_invalid_input_grammar&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Structured rejection — bad prefix, x≥p, sk=0/n, r=0/s=0, invalid BIP-32 paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_stateful_sequences&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;401+&lt;/td&gt;
&lt;td&gt;Error-injection recovery, BIP-32 multi-level consistency, 5000-op endurance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;py_dev_bug_scan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;221 files&lt;/td&gt;
&lt;td&gt;15-category static scanner: NULL, CPASTE, SIG, RETVAL, MSET, OB1, ZEROIZE, …&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ClusterFuzzLite&lt;/strong&gt; expanded to 5 targets: added &lt;code&gt;fuzz_ecdsa.cpp&lt;/code&gt; (sign→verify invariant, wrong-msg, compact parse) and &lt;code&gt;fuzz_schnorr.cpp&lt;/code&gt; (BIP-340 sign→verify, adversarial from_bytes).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Performance
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Delta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CUDA ECDSA Sign (w=8 generator table)&lt;/td&gt;
&lt;td&gt;220.9 ns&lt;/td&gt;
&lt;td&gt;198.3 ns&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−10.2%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CUDA/OpenCL/Metal MSM (GLV Shamir w=1 scatter)&lt;/td&gt;
&lt;td&gt;baseline&lt;/td&gt;
&lt;td&gt;+18–24%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+18–24%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARM64 ECDSA Sign (SHA-2 HW accel)&lt;/td&gt;
&lt;td&gt;25.89 µs&lt;/td&gt;
&lt;td&gt;22.22 µs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−14.2%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARM64 Schnorr Sign (precomputed)&lt;/td&gt;
&lt;td&gt;17.73 µs&lt;/td&gt;
&lt;td&gt;16.67 µs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−6.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bulletproof MSM verifier&lt;/td&gt;
&lt;td&gt;5,079 µs&lt;/td&gt;
&lt;td&gt;2,634 µs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−48% (1.93×)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU KPlan zero-alloc (stack wnaf arrays)&lt;/td&gt;
&lt;td&gt;heap&lt;/td&gt;
&lt;td&gt;stack&lt;/td&gt;
&lt;td&gt;alloc eliminated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BIP-352 SHA-256 tag midstate&lt;/td&gt;
&lt;td&gt;per-call&lt;/td&gt;
&lt;td&gt;precomputed&lt;/td&gt;
&lt;td&gt;hash call eliminated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;precompute&lt;/code&gt; (scalar_mul_generator)&lt;/td&gt;
&lt;td&gt;2 heap allocs&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;zero-alloc hot path&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Zero-Knowledge Proof Layer (new)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge proofs&lt;/strong&gt; — non-interactive Schnorr PoK, Fiat-Shamir with tagged SHA-256, no trusted setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DLEQ proofs&lt;/strong&gt; — discrete log equality, batch-verify capable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulletproof range proofs&lt;/strong&gt; — 64-bit range, MSM-optimized verifier (Pippenger + Montgomery batch inversion).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU ZK&lt;/strong&gt;: CUDA CT kernels (&lt;code&gt;ct_zk.cuh&lt;/code&gt;), OpenCL (&lt;code&gt;secp256k1_zk.cl&lt;/code&gt;), Metal (kernels 19–22), all batch-capable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5 new GPU C ABI functions&lt;/strong&gt;: &lt;code&gt;ufsecp_gpu_zk_knowledge_verify_batch&lt;/code&gt;, &lt;code&gt;ufsecp_gpu_zk_dleq_verify_batch&lt;/code&gt;, &lt;code&gt;ufsecp_gpu_bulletproof_verify_batch&lt;/code&gt;, &lt;code&gt;ufsecp_gpu_bip324_aead_encrypt_batch&lt;/code&gt;, &lt;code&gt;ufsecp_gpu_bip324_aead_decrypt_batch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;24 tests&lt;/strong&gt; in &lt;code&gt;test_zk.cpp&lt;/code&gt;; &lt;strong&gt;8.5 benchmarks&lt;/strong&gt; in &lt;code&gt;bench_unified&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Full GPU Parity (zero Unsupported stubs)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bulletproof on OpenCL + Metal&lt;/strong&gt;: removed &lt;code&gt;#if 0&lt;/code&gt; guard in &lt;code&gt;secp256k1_zk.cl&lt;/code&gt;; fixed address-space qualifiers; wired &lt;code&gt;bulletproof_verify_batch&lt;/code&gt; on both backends. CUDA ↔ OpenCL ↔ Metal parity complete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 new OpenCL kernels&lt;/strong&gt; wired: &lt;code&gt;zk_knowledge_verify_batch&lt;/code&gt;, &lt;code&gt;zk_dleq_verify_batch&lt;/code&gt;, &lt;code&gt;bip324_aead_encrypt_batch&lt;/code&gt;, &lt;code&gt;bip324_aead_decrypt_batch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 Metal kernels connected&lt;/strong&gt;: same 4 operations — kernels existed but dispatch was unwired.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metal ZK fix&lt;/strong&gt;: &lt;code&gt;zk_knowledge_verify_batch&lt;/code&gt; was treating pubkey buffer as a scalar; corrected to &lt;code&gt;lift_x&lt;/code&gt; to recover full point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CUDA 13 compatibility&lt;/strong&gt;: replaced deprecated &lt;code&gt;cudaDeviceProp::clockRate&lt;/code&gt; / &lt;code&gt;::memoryClockRate&lt;/code&gt; with &lt;code&gt;cudaDeviceGetAttribute&lt;/code&gt;. Backward-compatible with CUDA 12. (RTX 5080 / CUDA 13 reported by @craigraw)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Wallet API &amp;amp; Address Formats (new)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified Wallet API&lt;/strong&gt; (&lt;code&gt;wallet.hpp&lt;/code&gt;/&lt;code&gt;wallet.cpp&lt;/code&gt;) — chain-agnostic key management, address generation, message signing, pubkey recovery — Bitcoin, Ethereum, Tron, and all 28 coins from a single &lt;code&gt;wallet::&lt;/code&gt; namespace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BIP-39 Mnemonic&lt;/strong&gt; (&lt;code&gt;bip39.hpp&lt;/code&gt;/&lt;code&gt;bip39.cpp&lt;/code&gt;) — entropy→mnemonic (12–24 words), validation, PBKDF2-HMAC-SHA512 seed derivation. 57 tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bitcoin message signing&lt;/strong&gt; (&lt;code&gt;message_signing.hpp&lt;/code&gt;) — BIP-137/Electrum compatible: sign, verify, recover, Base64.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;P2SH-P2WPKH&lt;/strong&gt; (nested SegWit, BIP-49) — &lt;code&gt;3...&lt;/code&gt; addresses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;P2SH&lt;/strong&gt; and &lt;strong&gt;P2WSH&lt;/strong&gt; primitives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CashAddr&lt;/strong&gt; (BIP-0185) — &lt;code&gt;bitcoincash:q...&lt;/code&gt; addresses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tron (TRX)&lt;/strong&gt; coin — coin_type=195, &lt;code&gt;0x41&lt;/code&gt; prefix + Keccak-256 + Base58Check. Now &lt;strong&gt;28 coins&lt;/strong&gt; total.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Bindings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stable validation closure&lt;/strong&gt; across 11 language bindings: C#, Java, Swift, Python, Go, Rust, Node.js, PHP, Ruby, Dart, React Native. Fixed wrapper/API drift, zero-length FFI buffer edge cases, Dart &lt;code&gt;NativeFinalizer&lt;/code&gt;, local Dart smoke-runner.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Audit Coverage Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Surface&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;C ABI functions (&lt;code&gt;ufsecp_*&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;155&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU C ABI functions (&lt;code&gt;ufsecp_gpu_*&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unified audit runner modules&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python CTest audit targets&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ClusterFuzz targets&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exploit PoC test files&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active GPU Unsupported stubs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  CI/CD
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;All jobs green on: &lt;strong&gt;Linux (GCC + Clang), macOS (arm64 + amd64), Windows, Android (ARM64), RISC-V, ARM64 cross, ROCm, CUDA&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fixed: macOS &lt;code&gt;externally-managed-environment&lt;/code&gt;, Windows Unicode &lt;code&gt;cp1252&lt;/code&gt;, Python-order CMake embed, ASan/MSan/TSan &lt;code&gt;py_*&lt;/code&gt; symbol issue, SonarCloud &lt;code&gt;coincurve&lt;/code&gt; missing.&lt;/li&gt;
&lt;li&gt;10 CodeQL code-scanning alerts resolved.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Full diff&lt;/strong&gt;: &lt;code&gt;v3.50.0...v3.60.0&lt;/code&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>cpp</category>
      <category>performance</category>
      <category>security</category>
    </item>
    <item>
      <title>Don’t Trust, Verify — Continuously: UltrafastSecp256k1 Meets Frigate</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Wed, 01 Apr 2026 14:07:25 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/dont-trust-verify-continuously-ultrafastsecp256k1-meets-frigate-2d6b</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/dont-trust-verify-continuously-ultrafastsecp256k1-meets-frigate-2d6b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Most cryptographic libraries rely on a simple model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;write code&lt;/li&gt;
&lt;li&gt;get audited once&lt;/li&gt;
&lt;li&gt;ship a PDF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But modern systems don’t stand still.&lt;br&gt;&lt;br&gt;
They evolve daily.&lt;/p&gt;

&lt;p&gt;So I asked a different question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if audit was not a document, but a continuous process?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;UltrafastSecp256k1 was designed around two principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High-performance cryptographic execution (CPU + GPU)&lt;/li&gt;
&lt;li&gt;Continuous, self-evolving audit system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of relying on one-time audits, the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;runs ~1M+ checks per audit&lt;/li&gt;
&lt;li&gt;performs nightly differential validation&lt;/li&gt;
&lt;li&gt;converts every discovered exploit into a permanent test&lt;/li&gt;
&lt;li&gt;uses AI-assisted adversarial analysis&lt;/li&gt;
&lt;li&gt;enforces correctness through CI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security is not declared — it is continuously verified.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-World Adoption: Frigate
&lt;/h2&gt;

&lt;p&gt;Recently, Sparrow Wallet’s &lt;strong&gt;Frigate&lt;/strong&gt; integrated UltrafastSecp256k1 as its core compute layer.&lt;/p&gt;

&lt;p&gt;Frigate is an experimental Silent Payments (BIP352) server that performs high-throughput blockchain scanning using DuckDB.&lt;/p&gt;

&lt;p&gt;Instead of treating cryptography as a separate layer, Frigate embeds it directly into the database via a custom extension:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ufsecp.duckdb_extension&lt;/li&gt;
&lt;li&gt;ufsecp_scan(...)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This extension is powered by UltrafastSecp256k1.&lt;/p&gt;




&lt;h2&gt;
  
  
  Performance in Practice
&lt;/h2&gt;

&lt;p&gt;Independent benchmarks from Frigate show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;~40 million operations/sec on 2 RTX 5090&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a synthetic benchmark —&lt;br&gt;&lt;br&gt;
it’s a real-world scanning pipeline.&lt;/p&gt;

&lt;p&gt;Source:&lt;br&gt;
&lt;a href="https://github.com/sparrowwallet/frigate/blob/master/README.md" rel="noopener noreferrer"&gt;https://github.com/sparrowwallet/frigate/blob/master/README.md&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This is not about “fastest library” claims.&lt;/p&gt;

&lt;p&gt;This is about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;independent integration&lt;/li&gt;
&lt;li&gt;real-world validation&lt;/li&gt;
&lt;li&gt;reproducible performance&lt;/li&gt;
&lt;li&gt;continuous verification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No contracts.&lt;br&gt;&lt;br&gt;
No paid audits.&lt;br&gt;&lt;br&gt;
No marketing.&lt;/p&gt;

&lt;p&gt;Just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;clone → build → run → verify&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Rethinking Audit
&lt;/h2&gt;

&lt;p&gt;Traditional model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;audit = event&lt;/li&gt;
&lt;li&gt;output = PDF&lt;/li&gt;
&lt;li&gt;trust = assumption&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;audit = process&lt;/li&gt;
&lt;li&gt;output = evidence&lt;/li&gt;
&lt;li&gt;trust = reproducibility&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;If a system cannot be verified continuously,&lt;br&gt;&lt;br&gt;
it is only temporarily trusted.&lt;/p&gt;

&lt;p&gt;UltrafastSecp256k1 is an attempt to change that.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>cryptocurrency</category>
      <category>cpp</category>
      <category>security</category>
    </item>
    <item>
      <title>Why UltrafastSecp256k1?</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Fri, 27 Mar 2026 16:18:26 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/why-ultrafastsecp256k1-30o0</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/why-ultrafastsecp256k1-30o0</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt; &lt;br&gt;
A detailed look at what sets this library apart — not just in speed, but in engineering discipline, audit culture, and verified correctness.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Audit-First Engineering Culture
&lt;/h2&gt;

&lt;p&gt;Most high-performance cryptographic libraries ship fast code and trust that it is correct.&lt;br&gt;
UltrafastSecp256k1 ships fast code &lt;strong&gt;and then systematically tries to break it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The internal self-audit system is not a layer of unit tests bolted on after the fact —&lt;br&gt;
it was designed in parallel with the cryptographic implementation, as a first-class engineering artifact.&lt;/p&gt;

&lt;p&gt;The underlying philosophy is Bitcoin-style: &lt;strong&gt;don't trust, verify&lt;/strong&gt;. The project does&lt;br&gt;
not center its trust model on a one-time PDF artifact written by someone else at a&lt;br&gt;
fixed moment in the past. Instead, it tries to make assurance &lt;strong&gt;continuously rerunnable&lt;/strong&gt;:&lt;br&gt;
every important claim should be tied to code, tests, CI artifacts, benchmark logs, or&lt;br&gt;
traceable documentation that another engineer can reproduce on demand.&lt;/p&gt;

&lt;p&gt;This is why the audit framework keeps expanding with the codebase. The repository ships&lt;br&gt;
not only tests, but also reviewer-facing infrastructure: structured audit artifacts,&lt;br&gt;
threat-model docs, adversarial exploit tests, differential checks, and a repo-local&lt;br&gt;
SQLite source graph that makes the codebase searchable as an audit surface rather than&lt;br&gt;
just a pile of files.&lt;/p&gt;

&lt;p&gt;These top-level differentiators are claim-keyed in the ledger: exploit-audit surface &lt;code&gt;A-005&lt;/code&gt;, graph-assisted review &lt;code&gt;A-006&lt;/code&gt;, self-audit transparency &lt;code&gt;A-007&lt;/code&gt;, and benchmark reproducibility &lt;code&gt;A-004&lt;/code&gt; in &lt;a href="//docs/ASSURANCE_LEDGER.md"&gt;docs/ASSURANCE_LEDGER.md&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the Audit Infrastructure Covers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;What is Tested&lt;/th&gt;
&lt;th&gt;Assertion Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Field arithmetic (𝔽ₚ)&lt;/td&gt;
&lt;td&gt;Commutativity, associativity, distributivity, canonical form, carry propagation, batch inverse, sqrt&lt;/td&gt;
&lt;td&gt;264,622&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalar arithmetic (ℤ_n)&lt;/td&gt;
&lt;td&gt;Reduction mod n, overflow, GLV decomposition, negation, edge cases (0, 1, n−1)&lt;/td&gt;
&lt;td&gt;93,215&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Point operations&lt;/td&gt;
&lt;td&gt;Infinity handling, Jacobian↔Affine round-trip, scalar multiplication, 100K stress&lt;/td&gt;
&lt;td&gt;116,124&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constant-time layer&lt;/td&gt;
&lt;td&gt;No secret-dependent branches, no secret-dependent memory access, formal CT verification&lt;/td&gt;
&lt;td&gt;120,652&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exploit PoC tests&lt;/td&gt;
&lt;td&gt;86 dedicated adversarial PoC tests across 14 coverage areas (&lt;code&gt;audit/test_exploit_*.cpp&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;86 test files, 0 failures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fuzz / adversarial&lt;/td&gt;
&lt;td&gt;libFuzzer harnesses + 530K deterministic corpus adversarial checks&lt;/td&gt;
&lt;td&gt;~530,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wycheproof vectors&lt;/td&gt;
&lt;td&gt;Google's cryptographic test vectors for ECDSA and ECDH&lt;/td&gt;
&lt;td&gt;Hundreds of vectors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fiat-Crypto linkage&lt;/td&gt;
&lt;td&gt;Cross-validates field arithmetic against formally-verified Fiat-Crypto reference&lt;/td&gt;
&lt;td&gt;Full suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FROST / MuSig2 KAT&lt;/td&gt;
&lt;td&gt;Protocol-level Known Answer Tests per BIP-327 and FROST spec&lt;/td&gt;
&lt;td&gt;Full suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fault injection&lt;/td&gt;
&lt;td&gt;Tests behaviour under simulated hardware faults (bit flips, counter skips)&lt;/td&gt;
&lt;td&gt;Full suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ABI gate&lt;/td&gt;
&lt;td&gt;FFI round-trip stability, C ABI regression detection&lt;/td&gt;
&lt;td&gt;Full suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance regression&lt;/td&gt;
&lt;td&gt;Automated micro-benchmark gate — fails CI if throughput regresses&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nightly differential&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Random round-trip differential tests against reference implementations&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~1,300,000+/night&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total (audit runner)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;unified_audit_runner&lt;/strong&gt; across 55 modules plus standalone audit surfaces&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~1,000,000+&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total (exploit PoC tests)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;86 exploit-style PoC tests&lt;/strong&gt; across 14 coverage areas, all in &lt;code&gt;audit/test_exploit_*.cpp&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;86 tests, 0 failures&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All 55 audit modules across all tested platforms return &lt;strong&gt;AUDIT-READY&lt;/strong&gt;. Zero failures.&lt;br&gt;
All 86 exploit PoC tests pass. Zero failures across all 14 coverage areas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-Audit Documents
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Document&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//AUDIT_GUIDE.md"&gt;AUDIT_GUIDE.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Navigation guide for external auditors — build steps, source layout, test commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//AUDIT_REPORT.md"&gt;AUDIT_REPORT.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Historical formal audit report (v3.9.0): 641,194 checks, 0 failures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//AUDIT_COVERAGE.md"&gt;AUDIT_COVERAGE.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Current coverage matrix by module and section&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//THREAT_MODEL.md"&gt;THREAT_MODEL.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Layer-by-layer risk analysis — what is in scope and out of scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//SECURITY.md"&gt;SECURITY.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Vulnerability disclosure policy and contact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//docs/CT_VERIFICATION.md"&gt;docs/CT_VERIFICATION.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Constant-time formal verification evidence and methodology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//audit/AUDIT_TEST_PLAN.md"&gt;audit/AUDIT_TEST_PLAN.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Detailed test plan covering all 8 audit sections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.toaudit/platform-reports/"&gt;audit/platform-reports/&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Per-platform audit run results and logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//tools/source_graph_kit/source_graph.py"&gt;tools/source_graph_kit/source_graph.py&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;SQLite-backed repository graph for fast impact tracing, audit scoping, and reproducible review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//docs/ASSURANCE_LEDGER.md"&gt;docs/ASSURANCE_LEDGER.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Canonical claim-to-evidence ledger for public trust statements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//docs/AI_AUDIT_PROTOCOL.md"&gt;docs/AI_AUDIT_PROTOCOL.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Formal protocol for AI-assisted auditor/attacker review loops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="//docs/FORTRESS_ROADMAP.md"&gt;docs/FORTRESS_ROADMAP.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Gap-closing roadmap for fortress-grade self-audit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  2. CI/CD Pipeline — 24 Automated Workflows
&lt;/h2&gt;

&lt;p&gt;The continuous integration pipeline is not a basic build-and-test gate.&lt;br&gt;
It is a multi-layer quality enforcement system with 24 GitHub Actions workflows&lt;br&gt;
covering security, correctness, performance, supply chain, and formal analysis.&lt;/p&gt;

&lt;p&gt;It is also only one part of the assurance model. The repository is routinely reviewed&lt;br&gt;
through external-style passes as if by auditors, attackers, and bug bounty hunters,&lt;br&gt;
including LLM-assisted review loops that help surface edge cases, exploit ideas, and&lt;br&gt;
documentation gaps. Those passes are not treated as magic or as a replacement for&lt;br&gt;
deterministic tests; they are useful because they feed new cases back into the same&lt;br&gt;
reproducible audit framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow Index (selected)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workflow&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;th&gt;Trigger&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ci.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Core build + full test suite across 17 configurations × 7 architectures × 5 OSes&lt;/td&gt;
&lt;td&gt;Every push / PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;preflight.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fast pre-merge smoke check — blocks merge on basic failures&lt;/td&gt;
&lt;td&gt;Every PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nightly.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Nightly stress: 1.3M+ differential checks, extended fuzz, full sanitizer run&lt;/td&gt;
&lt;td&gt;Nightly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;security-audit.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs the full &lt;code&gt;unified_audit_runner&lt;/code&gt; (55 modules, ~1M assertions) plus sanitizer and warning gates&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;audit-report.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generates and archives structured audit report artifacts&lt;/td&gt;
&lt;td&gt;On release / manual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ct-arm64.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Constant-time verification on native ARM64 hardware&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ct-verif.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Formal constant-time verification pass&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;valgrind-ct.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Valgrind memcheck + CT analysis on Linux x64&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bench-regression.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Performance regression gate — CI fails if throughput drops&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;benchmark.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full benchmark suite — results published to live dashboard&lt;/td&gt;
&lt;td&gt;On push to dev/main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;codeql.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GitHub CodeQL static analysis (C++)&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;clang-tidy.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Clang-Tidy lint pass with project-specific rules&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cppcheck.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CPPCheck static analysis&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sonarcloud.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SonarCloud code quality and security rating&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mutation.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mutation testing — verifies test suite kills injected faults&lt;/td&gt;
&lt;td&gt;Scheduled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cflite.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ClusterFuzz-Lite continuous fuzzing integration&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bindings.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tests all 12 language bindings (Python, Rust, Node, Go, C#, Java, Swift, ...)&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dependency-review.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scans dependency changes for known vulnerabilities&lt;/td&gt;
&lt;td&gt;Every PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;scorecard.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OpenSSF Scorecard supply-chain security scan&lt;/td&gt;
&lt;td&gt;Weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;valgrind-ct.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Valgrind constant-time path analysis&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docs.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Docs build and deployment validation&lt;/td&gt;
&lt;td&gt;Every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;packaging.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NuGet, vcpkg, Conan, Swift Package, CocoaPods packaging validation&lt;/td&gt;
&lt;td&gt;On release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;release.yml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full release pipeline: build, sign, attest, publish&lt;/td&gt;
&lt;td&gt;On tag&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Build Matrix Scale
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Coverage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Configurations&lt;/td&gt;
&lt;td&gt;17 (Release, Debug, ASan+UBSan, TSan, Valgrind, coverage, LTO, PGO, ...)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architectures&lt;/td&gt;
&lt;td&gt;7 (x86-64, ARM64, RISC-V, WASM, Android ARM64, iOS ARM64, ROCm)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating systems&lt;/td&gt;
&lt;td&gt;5 (Linux, Windows, macOS, Android, iOS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compilers&lt;/td&gt;
&lt;td&gt;GCC 13, Clang 17, Clang 21, MSVC 2022, AppleClang, NDK Clang&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  3. Static Analysis &amp;amp; Sanitizer Stack
&lt;/h2&gt;

&lt;p&gt;Every commit is checked by multiple independent static and dynamic analysis layers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What It Catches&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CodeQL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Semantic security vulnerabilities, data-flow bugs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SonarCloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Code quality, security hotspots, cognitive complexity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Clang-Tidy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Style violations, anti-patterns, performance issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPPCheck&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Memory errors, null dereferences, buffer overflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ASan + UBSan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Memory errors, undefined behaviour in CT paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TSan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Data races and threading issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Valgrind memcheck&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Heap errors, uninitialized reads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Valgrind CT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Constant-time path analysis via shadow value propagation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;libFuzzer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Corpus-driven bug finding in field, scalar, and point arithmetic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ClusterFuzz-Lite&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Continuous fuzzing integrated into CI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;-Werror&lt;/code&gt; flag is enforced — warnings are build failures.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Supply Chain Security
&lt;/h2&gt;

&lt;p&gt;Cryptographic libraries are high-value supply chain targets.&lt;br&gt;
UltrafastSecp256k1 applies the OpenSSF supply-chain hardening model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenSSF Scorecard&lt;/strong&gt; — automated weekly supply-chain health score&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenSSF Best Practices&lt;/strong&gt; badge — verified against the CII/OpenSSF criteria&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pinned GitHub Actions&lt;/strong&gt; — all third-party actions pinned to commit SHA, not floating tags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Review&lt;/strong&gt; — automated PR-level scan for vulnerable dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harden-runner&lt;/strong&gt; — runtime monitoring of CI runner behaviour&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducible builds&lt;/strong&gt; — &lt;code&gt;Dockerfile.reproducible&lt;/code&gt; for bit-for-bit build verification&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SBOM&lt;/strong&gt; — software bill of materials generated on release&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Artifact attestation&lt;/strong&gt; — GitHub Artifact Attestation on release builds&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Formal Verification Layers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Field arithmetic correctness&lt;/td&gt;
&lt;td&gt;Fiat-Crypto cross-validation (differential testing against formally-verified reference)&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constant-time (field/scalar)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ct-verif&lt;/code&gt; tool + ARM64 hardware CI&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constant-time (point ops)&lt;/td&gt;
&lt;td&gt;Dedicated &lt;code&gt;ct-arm64.yml&lt;/code&gt; pipeline + Valgrind shadow analysis&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wycheproof ECDSA/ECDH&lt;/td&gt;
&lt;td&gt;Google's adversarial test vector suite&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fault injection&lt;/td&gt;
&lt;td&gt;Simulated hardware faults in signing/verification paths&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-libsecp256k1&lt;/td&gt;
&lt;td&gt;Differential round-trip against Bitcoin Core's libsecp256k1&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  6. Performance — Verified, Not Just Claimed
&lt;/h2&gt;

&lt;p&gt;Every benchmark number in this project is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Produced by a pinned compiler version with exact flags documented&lt;/li&gt;
&lt;li&gt;Reproducible via a published command in &lt;a href="//docs/BENCHMARKS.md"&gt;docs/BENCHMARKS.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gated by an automated performance regression check in CI (&lt;code&gt;bench-regression.yml&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Published to a &lt;a href="https://shrec.github.io/UltrafastSecp256k1/dev/bench/" rel="noopener noreferrer"&gt;live dashboard&lt;/a&gt; on pushes to dev/main&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sample verified numbers (RTX 5060 Ti, CUDA 12):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Throughput&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ECDSA sign&lt;/td&gt;
&lt;td&gt;4.88 M/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECDSA verify&lt;/td&gt;
&lt;td&gt;4.05 M/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schnorr sign (BIP-340)&lt;/td&gt;
&lt;td&gt;3.66 M/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schnorr verify (BIP-340)&lt;/td&gt;
&lt;td&gt;5.38 M/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FROST partial verify&lt;/td&gt;
&lt;td&gt;1.34 M/s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Sample verified numbers (x86-64 rerun, i5-14400F, Clang 19):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Latency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Generator multiplication (kG)&lt;/td&gt;
&lt;td&gt;5.9 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalar multiplication (kP)&lt;/td&gt;
&lt;td&gt;16.0 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECDSA sign&lt;/td&gt;
&lt;td&gt;7.8 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECDSA verify&lt;/td&gt;
&lt;td&gt;20.2 µs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. What "Not Paid-Externally Audited" Actually Means Here
&lt;/h2&gt;

&lt;p&gt;UltrafastSecp256k1 has &lt;strong&gt;not yet undergone a paid third-party professional audit&lt;/strong&gt;.&lt;br&gt;
That is a factual status note, not the center of the project's security philosophy.&lt;br&gt;
The project is open to external audit and continuously prepares evidence so outside reviewers can audit it at any time.&lt;br&gt;
At the same time, it does not wait for a third party to begin strengthening correctness and security, and it does not outsource trust to a single PDF milestone.&lt;/p&gt;

&lt;p&gt;However, "not externally audited" does &lt;strong&gt;not&lt;/strong&gt; mean "unverified." The internal quality infrastructure described in this document represents a systematic, multi-layer correctness assurance program that most open-source cryptographic libraries do not have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Over &lt;strong&gt;1,000,000 internal audit assertions&lt;/strong&gt; executed on every build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;24 CI/CD workflows&lt;/strong&gt; enforcing correctness, security, and performance on every push/PR plus scheduled assurance runs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formal constant-time verification&lt;/strong&gt; on two independent platforms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply-chain hardening&lt;/strong&gt; at the OpenSSF standard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nightly differential testing&lt;/strong&gt; at 1.3M+ additional random checks per night&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest summary:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This library does &lt;strong&gt;not&lt;/strong&gt; rely on a paid-audit badge as its primary trust story.&lt;br&gt;
It &lt;strong&gt;does&lt;/strong&gt; rely on open self-audit, reproducible evidence, graph-assisted review, and reviewer-friendly verification so anyone can inspect and challenge the implementation.&lt;br&gt;
External audit is welcomed, but assurance work already happens continuously through internal audit on every build, every push/PR gate, and every nightly extended run.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Summary Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Quality Dimension&lt;/th&gt;
&lt;th&gt;Evidence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mathematical correctness&lt;/td&gt;
&lt;td&gt;473,961 audit assertions (field + scalar + point)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constant-time guarantees&lt;/td&gt;
&lt;td&gt;ct-verif, ARM64 CI, Valgrind CT, 120K CT assertions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversarial resilience&lt;/td&gt;
&lt;td&gt;Wycheproof, fault injection, 530K+ fuzz corpus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protocol correctness&lt;/td&gt;
&lt;td&gt;FROST/MuSig2 KAT, cross-libsecp256k1 differential&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory safety&lt;/td&gt;
&lt;td&gt;ASan, TSan, Valgrind — every commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static analysis&lt;/td&gt;
&lt;td&gt;CodeQL, SonarCloud, Clang-Tidy, CPPCheck&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supply chain&lt;/td&gt;
&lt;td&gt;OpenSSF Scorecard, pinned actions, SBOM, artifact attestation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance regression&lt;/td&gt;
&lt;td&gt;Automated gate on every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build reproducibility&lt;/td&gt;
&lt;td&gt;Dockerfile.reproducible + pinned toolchains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-audit documentation&lt;/td&gt;
&lt;td&gt;AUDIT_GUIDE, AUDIT_REPORT, AUDIT_COVERAGE, THREAT_MODEL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>cryptocurrency</category>
      <category>cpp</category>
      <category>security</category>
    </item>
    <item>
      <title>UltrafastSecp256k1 v3.3.0</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Fri, 20 Mar 2026 00:54:42 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v330-33o3</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v330-33o3</guid>
      <description>&lt;p&gt;Highlights&lt;br&gt;
Batch operations 17-67x faster — all-affine fast path with Pippenger touched-bucket + window tuning (#169)&lt;br&gt;
OpenCL generator mul ~10% faster — precomputed affine table with mixed J+A adds eliminates per-thread table construction&lt;br&gt;
CUDA precomputed tweak tables — BENCH_CLOCK_WARMUP and simplified warmup path&lt;br&gt;
Schnorr batch verify optimized — cached x-only pubkeys, reused scratch buffers, retuned crossover, fast path through N=64&lt;br&gt;
463+ code-scanning alerts resolved — braces, const, widening, dead-stores, init-vars, argumentSize&lt;br&gt;
Complete audit infrastructure — P0+P1+P2 audit TODO completed (#148)&lt;br&gt;
Performance&lt;br&gt;
Batch ops 17-67x faster via all-affine fast path; Pippenger touched-bucket + window tuning (#169)&lt;br&gt;
OpenCL generator mul — hardcode precomputed affine table for scalar_mul_generator + force __NV_CL_C_VERSION&lt;br&gt;
CUDA BIP352 — precomputed tweak tables, BENCH_CLOCK_WARMUP, simplified warmup&lt;br&gt;
CUDA BIP352 benchmark optimization and enriched project graph&lt;br&gt;
OpenCL GLV generator phi table optimization&lt;br&gt;
OpenCL generator nibble lookup optimization&lt;br&gt;
Silent payment scan invariants optimization&lt;br&gt;
Coin HD fixed-path derivation optimization&lt;br&gt;
Schnorr batch verify — cache repeated x-only pubkeys in large batches, reuse scratch buffers, retune crossover, reduce setup passes, keep fast path through N=64, tune cutoff for N=128, trim seed serialization overhead, cache x-only lifts in parse path, reuse SHA256 base for batch weights&lt;br&gt;
Field batch inversion — trim scratch overhead&lt;br&gt;
OpenCL batch-inversion kernels added&lt;br&gt;
Added&lt;br&gt;
OpenCL LUT primitives for generator multiplication (#172)&lt;br&gt;
Metal scalar_mul_generator_lut for Metal shaders (#171)&lt;br&gt;
Metal wNAF w=4 for Metal shaders (#158)&lt;br&gt;
Metal scalar_mul_glv for batched scalar multiplications (#155)&lt;br&gt;
Cached schnorr batch path and preflight coverage fixes&lt;br&gt;
Benchmark cached schnorr batch verification&lt;br&gt;
Larger batch verify benchmark sizes&lt;br&gt;
Source graph pipeline command and tooling improvements&lt;br&gt;
Security &amp;amp; Hardening&lt;br&gt;
Wallet seed-to-address cleanup hardened&lt;br&gt;
ABI secret cleanup paths hardened&lt;br&gt;
ECIES zero-ephemeral cleanup hardened&lt;br&gt;
N-03 CT path for message signing (constant-time)&lt;br&gt;
Solinas reduction — replaced broken Barrett reduction with correct implementation (#141)&lt;br&gt;
Fixed&lt;br&gt;
ARM64 SHA-256 — vsha256h2q_u32 bug using modified abcd register&lt;br&gt;
MSVC C2026 string literal limit workaround (#173)&lt;br&gt;
precompute_point_multiples stack allocation fix; ASan timeout 300→600s&lt;br&gt;
Metal generator_mul_batch — use scalar_mul_glv correctly (#163)&lt;br&gt;
CI bip39 audit regression (#161)&lt;br&gt;
Clang-tidy code scanning warnings (#170)&lt;br&gt;
463+ code-scanning alerts resolved across 4 PRs (#154, #156, #157, #162)&lt;br&gt;
CI auto-detect compilers + best-effort source graph refresh&lt;br&gt;
SonarCloud — exclude hash_accel.cpp, address.cpp from CPD; exclude cuda/** and platform-specific field_asm/field_simd from coverage (#139, #140)&lt;br&gt;
CI SECP256K1_MARCH respected in cpu/CMakeLists.txt; benchmark regression downgraded to x86-64-v2 (#138)&lt;br&gt;
SonarCloud fork PRs skipped + continue-on-error for Quality Gate (#159)&lt;br&gt;
Audit&lt;br&gt;
Complete audit infrastructure — P0+P1+P2 audit TODO finished (#148)&lt;br&gt;
Test coverage for CT PrivateKey overloads and FE52 conditional_negate (#143)&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>blockchain</category>
      <category>performance</category>
      <category>security</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Mon, 09 Mar 2026 04:34:03 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/-1j99</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/-1j99</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m" class="crayons-story__hidden-navigation-link"&gt;Building a Faster secp256k1 Library – UltrafastSecp256k1 v3.21&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vano_chkheidze_5071c537e2" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3773904%2F11f8fb92-ee03-417c-8afc-9b5b8ff59b5a.jpg" alt="vano_chkheidze_5071c537e2 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vano_chkheidze_5071c537e2" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vano Chkheidze
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vano Chkheidze
                
              
              &lt;div id="story-author-preview-content-3327609" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vano_chkheidze_5071c537e2" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3773904%2F11f8fb92-ee03-417c-8afc-9b5b8ff59b5a.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vano Chkheidze&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 8&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m" id="article-link-3327609"&gt;
          Building a Faster secp256k1 Library – UltrafastSecp256k1 v3.21
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/blockchain"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;blockchain&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/performance"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;performance&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>blockchain</category>
      <category>opensource</category>
      <category>performance</category>
      <category>security</category>
    </item>
    <item>
      <title>Building a Faster secp256k1 Library – UltrafastSecp256k1 v3.21</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Sun, 08 Mar 2026 18:23:39 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m</guid>
      <description>&lt;p&gt;I’ve been working on UltrafastSecp256k1, a high‑performance secp256k1 cryptography library focused on throughput and auditability.&lt;/p&gt;

&lt;p&gt;The new v3.20 release consolidates more than 120 commits and introduces major improvements in constant‑time security, performance, and testing infrastructure.&lt;/p&gt;

&lt;p&gt;Key highlights:&lt;/p&gt;

&lt;p&gt;• Constant‑time scalar inversion rewritten using Bernstein‑Yang SafeGCD&lt;br&gt;
• 6.4× improvement in scalar inverse&lt;br&gt;
• ~43% faster constant‑time ECDSA signing&lt;br&gt;
• strict BIP‑340 parsing and safer APIs&lt;br&gt;
• expanded audit infrastructure&lt;br&gt;
• reproducible Docker CI pipeline&lt;/p&gt;

&lt;p&gt;Benchmarks across several architectures show strong performance improvements compared to libsecp256k1 in signing workloads and generator multiplication.&lt;/p&gt;

&lt;p&gt;The project now includes:&lt;/p&gt;

&lt;p&gt;• cross‑platform benchmark campaigns&lt;br&gt;
• formal constant‑time verification tools&lt;br&gt;
• Wycheproof and Fiat‑Crypto verification&lt;br&gt;
• full local Docker CI&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>opensource</category>
      <category>performance</category>
      <category>security</category>
    </item>
    <item>
      <title>🚀 Breaking the Speed of Light: Secp256k1 Optimization in 12 Days</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Thu, 26 Feb 2026 18:36:18 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/breaking-the-speed-of-light-secp256k1-optimization-in-12-days-57nn</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/breaking-the-speed-of-light-secp256k1-optimization-in-12-days-57nn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkau91gh2keqcdaoak4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkau91gh2keqcdaoak4d.png" alt=" " width="748" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the world of blockchain infrastructure, speed is not just a luxury—it’s a security requirement. After 12 days of intensive development, the UltrafastSecp256k1 v3.14.0 has reached a milestone that redefines performance expectations for cryptographic libraries.&lt;/p&gt;

&lt;p&gt;📊 The Numbers (i7-11700 @ Single Core)&lt;br&gt;
These benchmarks were taken on a standard development machine under typical load. In a dedicated, headless Linux environment, we expect even higher throughput due to reduced OS jitter.&lt;/p&gt;

&lt;p&gt;🛠️ Why This Matters for Node Operators&lt;br&gt;
The primary bottleneck for any new node is the Initial Block Download (IBD). Validating billions of historical signatures is a massive task.&lt;/p&gt;

&lt;p&gt;Massive Scalability: Validating ~1.35 billion signatures takes just 1.5 hours on 8 cores.&lt;/p&gt;

&lt;p&gt;Peak Efficiency: At ~32,000 ECDSA tx/sec per core, this library is ready for the next generation of high-throughput networks.&lt;/p&gt;

&lt;p&gt;Hardware Optimized: The field multiplication (field_mul) completes in just 56 cycles, showing deep low-level optimization.&lt;/p&gt;

&lt;p&gt;🛡️ Built-in Security &amp;amp; Auditability&lt;br&gt;
Speed means nothing without correctness. This project maintains a "Zero-Bug" status through a centralized, AI-driven testing core.&lt;/p&gt;

&lt;p&gt;641,194 Audit Checks: Every mathematical edge case is covered.&lt;/p&gt;

&lt;p&gt;Security Suite: Integrated with CodeQL, Clang-Tidy, and SonarCloud—all currently in PASSING status.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>programming</category>
      <category>cryptocurrency</category>
      <category>cpp</category>
    </item>
    <item>
      <title>UltrafastSecp256k1 v3.14.0</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Wed, 25 Feb 2026 10:44:23 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3140-5ok</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3140-5ok</guid>
      <description>&lt;p&gt;Added — Language Bindings (12 languages, 41-function C API parity)&lt;br&gt;
Java — 22 new JNI functions + 3 helper classes (RecoverableSignature, WifDecoded, TaprootOutputKeyResult): full coverage of ECDSA sign/verify, DER encoding, recovery, ECDH, Schnorr, BIP-32, BIP-39, taproot, WIF, address encoding, tagged hash&lt;/p&gt;

&lt;p&gt;Swift — 20 new functions: DER encode/decode, recovery sign/recover, ECDH, tagged hash, BIP-32/39, taproot, WIF, address encoding&lt;/p&gt;

&lt;p&gt;React Native — 15 new functions: DER, recovery, ECDH, Schnorr, BIP-32/39, taproot, WIF, address, tagged hash&lt;/p&gt;

&lt;p&gt;Python — 3 new functions: ctx_clone(), last_error(), last_error_msg()&lt;/p&gt;

&lt;p&gt;Rust — 2 new functions: last_error(), last_error_msg()&lt;/p&gt;

&lt;p&gt;Dart — 1 new function: ctx_clone()&lt;/p&gt;

&lt;p&gt;Go, Node.js, C#, Ruby, PHP — already complete (verified, no changes needed)&lt;/p&gt;

&lt;p&gt;9 new binding READMEs — c_api, dart, go, java, php, python, ruby, rust, swift&lt;/p&gt;

&lt;p&gt;Selftest report API — SelftestReport and SelftestCase structs in selftest.hpp; tally() refactored for programmatic reporting&lt;/p&gt;

&lt;p&gt;Fixed — Documentation &amp;amp; Packaging&lt;br&gt;
Package naming corrected across all documentation — libsecp256k1-fast* → libufsecp* (apt, rpm, arch); CMake target secp256k1-fast-cpu → secp256k1::fast; linker flag -lsecp256k1-fast-cpu → -lfastsecp256k1; pkg-config Libs -lsecp256k1-fast-cpu → -lfastsecp256k1&lt;/p&gt;

&lt;p&gt;RPM spec renamed — libsecp256k1-fast.spec → libufsecp.spec&lt;/p&gt;

&lt;p&gt;Debian control — source libufsecp, binary packages libufsecp3/libufsecp-dev&lt;/p&gt;

&lt;p&gt;Arch PKGBUILD — pkgname=libufsecp, provides=('libufsecp')&lt;/p&gt;

&lt;p&gt;3 existing binding READMEs fixed — Node.js, C#, React Native: removed inaccurate CT-layer claims (C API uses fast:: path only)&lt;/p&gt;

&lt;p&gt;README dead link — INDUSTRIAL_ROADMAP_WORKING.md → ROADMAP.md&lt;/p&gt;

&lt;p&gt;Fixed — CI / Build&lt;br&gt;
-Werror=unused-function — added [[maybe_unused]] to get_platform_string() in selftest.cpp&lt;/p&gt;

&lt;p&gt;Scorecard CI — pinned ubuntu:24.04 by SHA digest in Dockerfile.local-ci&lt;br&gt;
&lt;a href="https://github.com/shrec/UltrafastSecp256k1" rel="noopener noreferrer"&gt;https://github.com/shrec/UltrafastSecp256k1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>bitcoin</category>
      <category>programming</category>
      <category>cuda</category>
    </item>
    <item>
      <title>UltrafastSecp256k1 v3.14.0</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Tue, 24 Feb 2026 21:56:13 +0000</pubDate>
      <link>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3140-4ho2</link>
      <guid>https://dev.to/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3140-4ho2</guid>
      <description>&lt;p&gt;Added — Language Bindings (12 languages, 41-function C API parity)&lt;br&gt;
Java — 22 new JNI functions + 3 helper classes (RecoverableSignature, WifDecoded, TaprootOutputKeyResult): full coverage of ECDSA sign/verify, DER encoding, recovery, ECDH, Schnorr, BIP-32, BIP-39, taproot, WIF, address encoding, tagged hash&lt;br&gt;
Swift — 20 new functions: DER encode/decode, recovery sign/recover, ECDH, tagged hash, BIP-32/39, taproot, WIF, address encoding&lt;br&gt;
React Native — 15 new functions: DER, recovery, ECDH, Schnorr, BIP-32/39, taproot, WIF, address, tagged hash&lt;br&gt;
Python — 3 new functions: ctx_clone(), last_error(), last_error_msg()&lt;br&gt;
Rust — 2 new functions: last_error(), last_error_msg()&lt;br&gt;
Dart — 1 new function: ctx_clone()&lt;br&gt;
Go, Node.js, C#, Ruby, PHP — already complete (verified, no changes needed)&lt;br&gt;
9 new binding READMEs — c_api, dart, go, java, php, python, ruby, rust, swift&lt;br&gt;
Selftest report API — SelftestReport and SelftestCase structs in selftest.hpp; tally() refactored for programmatic reporting&lt;br&gt;
Fixed — Documentation &amp;amp; Packaging&lt;br&gt;
Package naming corrected across all documentation — libsecp256k1-fast* → libufsecp* (apt, rpm, arch); CMake target secp256k1-fast-cpu → secp256k1::fast; linker flag -lsecp256k1-fast-cpu → -lfastsecp256k1; pkg-config Libs -lsecp256k1-fast-cpu → -lfastsecp256k1&lt;br&gt;
RPM spec renamed — libsecp256k1-fast.spec → libufsecp.spec&lt;br&gt;
Debian control — source libufsecp, binary packages libufsecp3/libufsecp-dev&lt;br&gt;
Arch PKGBUILD — pkgname=libufsecp, provides=('libufsecp')&lt;br&gt;
3 existing binding READMEs fixed — Node.js, C#, React Native: removed inaccurate CT-layer claims (C API uses fast:: path only)&lt;br&gt;
README dead link — INDUSTRIAL_ROADMAP_WORKING.md → ROADMAP.md&lt;br&gt;
Fixed — CI / Build&lt;br&gt;
-Werror=unused-function — added [[maybe_unused]] to get_platform_string() in selftest.cpp&lt;br&gt;
Scorecard CI — pinned ubuntu:24.04 by SHA digest in Dockerfile.local-ci&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomqldtgf111y0pmx81mn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomqldtgf111y0pmx81mn.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>cpp</category>
      <category>csharp</category>
      <category>cuda</category>
    </item>
  </channel>
</rss>
