flashbots / flashbots/mev-boost
Performance: GPU batch ecrecover via UltrafastSecp256k1 — 3.21 M/s recoverable sign, batch sender recovery
- Dominant language
- Go
- Stars
- 1.4k
- Forks
- 292
- PR merge metrics
- No merged PRs in 30d
Description
## What this is
UltrafastSecp256k1 is a zero-dependency MIT-licensed secp256k1 engine
with a GPU batch ecrecover API that might be relevant to Otterscan's
transaction sender recovery pipeline.
https://github.com/shrec/UltrafastSecp256k1
## Relevant numbers (RTX 5060 Ti, CUDA 12, batch 16K)
| Operation | Throughput |
|-----------|-----------|
| ECDSA sign + recid (recoverable) | 3.21 M/s |
| ECDSA verify | 4.34 M/s |
| ecrecover batch | `ufsecp_gpu_ecrecover_batch` — CUDA/OpenCL/Metal |
| Keccak-256 | included, zero deps |
| EIP-55 address | included |
CPU ecrecover: ~27μs — honest note, slightly slower than libsecp256k1
on single-threaded CPU. GPU batch is where the gap opens.
## Why it might matter for Otterscan
Block explorers recover sender addresses from every transaction.
Batch ecrecover on GPU — processing an entire block's transactions
simultaneously — is a different workload profile than single-threaded CPU.
## Integration
Rust binding is available with full Ethereum support:
- Keccak-256, EIP-55, EIP-155 sign, ecrecover
- `ufsecp_gpu_ecrecover_batch` via C ABI (CUDA/OpenCL/Metal)
- MIT license, zero external dependencies
## Not asking for anything specific
Just flagging this exists. Happy to share reproducible benchmark
commands or answer questions if there's interest.
Repo: https://github.com/shrec/UltrafastSecp256k1
Contributor guide
Assessment
This issue has not been assessed yet.