<?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>Forem: Vano Chkheidze</title>
    <description>The latest articles on Forem by Vano Chkheidze (@vano_chkheidze_5071c537e2).</description>
    <link>https://forem.com/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>Forem: Vano Chkheidze</title>
      <link>https://forem.com/vano_chkheidze_5071c537e2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vano_chkheidze_5071c537e2"/>
    <language>en</language>
    <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://forem.com/vano_chkheidze_5071c537e2/-i-replaced-a-100k-security-audit-with-a-ci-pipeline-and-it-caught-more-bugs-1h11</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v360-56jk</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/dont-trust-verify-continuously-ultrafastsecp256k1-meets-frigate-2d6b</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/why-ultrafastsecp256k1-30o0</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v330-33o3</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/-1j99</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/building-a-faster-secp256k1-library-ultrafastsecp256k1-v321-3k9m</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/breaking-the-speed-of-light-secp256k1-optimization-in-12-days-57nn</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3140-5ok</link>
      <guid>https://forem.com/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://forem.com/vano_chkheidze_5071c537e2/ultrafastsecp256k1-v3140-4ho2</link>
      <guid>https://forem.com/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>
    <item>
      <title>Why I Built a Zero-Dependency secp256k1 Library From Scratch</title>
      <dc:creator>Vano Chkheidze</dc:creator>
      <pubDate>Sun, 15 Feb 2026 11:17:45 +0000</pubDate>
      <link>https://forem.com/vano_chkheidze_5071c537e2/why-i-built-a-zero-dependency-secp256k1-library-from-scratch-4mf0</link>
      <guid>https://forem.com/vano_chkheidze_5071c537e2/why-i-built-a-zero-dependency-secp256k1-library-from-scratch-4mf0</guid>
      <description>&lt;p&gt;The Problem&lt;br&gt;
If you've ever tried to do secp256k1 cryptography across multiple platforms — from a server with AVX-512 to an ESP32 microcontroller to a WebAssembly module — you know the pain. Different libraries, different APIs, different dependency trees, different bugs.&lt;/p&gt;

&lt;p&gt;I wanted one library that works everywhere, depends on nothing, and covers everything the modern Bitcoin/EVM ecosystem needs.&lt;/p&gt;

&lt;p&gt;What UltrafastSecp256k1 Covers&lt;br&gt;
Core: Field/Scalar/Point arithmetic, GLV endomorphism, precomputation, RFC 6979, low-S normalization.&lt;/p&gt;

&lt;p&gt;Signatures: ECDSA (sign, verify, recover, batch), Schnorr BIP-340 (sign, verify, batch).&lt;/p&gt;

&lt;p&gt;Advanced Protocols: MuSig2 (2-round aggregation), FROST (t-of-n threshold), Adaptor signatures, Pedersen commitments, Multi-scalar multiplication (Strauss/Shamir), ECDH.&lt;/p&gt;

&lt;p&gt;Bitcoin: Taproot (BIP-341/342), BIP-32 HD keys, BIP-44 coin derivation, BIP-352 Silent Payments, P2PKH/P2WPKH/P2TR/Base58/Bech32.&lt;/p&gt;

&lt;p&gt;Multi-Chain: 27+ coins including ETH (EIP-55 checksums), LTC, DOGE, ZEC, DASH — with a built-in Keccak-256.&lt;/p&gt;

&lt;p&gt;Zero dependencies means: SHA-256, SHA-512, HMAC, Keccak-256, RIPEMD-160, Base58Check, Bech32/Bech32m — all implemented from scratch in the library.&lt;/p&gt;

&lt;p&gt;Performance Design&lt;br&gt;
Assembly backends for x64 (BMI2/ADX → 3-5× speedup), ARM64 (~5×), and RISC-V. SIMD with AVX2/AVX-512. GPU with CUDA (4.63M kG/s), OpenCL (3.39M kG/s), and ROCm/HIP.&lt;/p&gt;

&lt;p&gt;Constant-time operations live in a separate secp256k1::ct namespace — no runtime flag switching, explicit API separation.&lt;/p&gt;

&lt;p&gt;9 Platforms, One Codebase&lt;br&gt;
Platform    Notes&lt;br&gt;
x86-64  BMI2/ADX assembly, AVX2/AVX-512&lt;br&gt;
ARM64   MUL/UMULH inline asm&lt;br&gt;
RISC-V  RV64GC native assembly&lt;br&gt;
ESP32   Xtensa LX7/LX6&lt;br&gt;
STM32   ARM Cortex-M3&lt;br&gt;
WebAssembly Emscripten, ES6 + TypeScript&lt;br&gt;
iOS SPM, CocoaPods, XCFramework&lt;br&gt;
Android NDK r27, Clang 18&lt;br&gt;
GPU CUDA, OpenCL, ROCm/HIP&lt;br&gt;
Try It&lt;br&gt;
MIT licensed. 200+ tests. PRs welcome.&lt;/p&gt;

&lt;p&gt;→ github.com/shrec/UltrafastSecp256k1&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>riscv</category>
      <category>android</category>
      <category>esp32</category>
    </item>
  </channel>
</rss>
