flashbots / flashbots/mev-boost

Performance: GPU batch ecrecover via UltrafastSecp256k1 — 3.21 M/s recoverable sign, batch sender recovery

Open
#898 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.