惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
T
ThreatConnect
SecWiki News
SecWiki News
F
Future of Privacy Forum
AWS News Blog
AWS News Blog
C
Cisco Blogs
A
Arctic Wolf
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
V2EX
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
K
Kaspersky official blog
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
NISL@THU
NISL@THU
Microsoft Azure Blog
Microsoft Azure Blog
量子位
The Hacker News
The Hacker News
Stack Overflow Blog
Stack Overflow Blog
Security Latest
Security Latest
M
Microsoft Research Blog - Microsoft Research
Google Online Security Blog
Google Online Security Blog
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Troy Hunt's Blog
F
Fox-IT International blog
S
Security @ Cisco Blogs
博客园 - 司徒正美
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Comments on: Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 最新话题
GbyAI
GbyAI
Project Zero
Project Zero
腾讯CDC
T
Tailwind CSS Blog

Hacker News: Show HN

Show HN: A high-performance audio visualizer using Rust, WASM, and React Show HN: GPTFortress, a 24/7 live-stream playing Dwarf Fortress with GPT-5 Show HN: Riot, a modern multicore actor-based ecosystem for OCaml GitHub - human-avatar/skills-for-humanity: Structured reasoning methodologies from history's most rigorous thinkers, packaged as Claude Code skills. GitHub - rednakta/nilbox: Desktop sandbox for AI agents and MCP servers — with Zero Token Architecture so your API keys never touch the agent. GitHub - cthing/versionparser: Parses versions in a wide range of formats and provides a canonical, comparable version object. GitHub - Dogacel/auto-gpu-kernel: Winner 🏆 (Agent-only) MLSys 2026 - FlashInfer AI Kernel Generation Contest for the DeepSeek Sparse Attention (DSA) track with an average speedup of 34.93x GitHub - p-raj/collab-sqlc: Self-hosted collaborative SQL editor for teams Lily Design System Show HN: AgentToolBench-Code – security benchmark for AI coding agents GitHub - redraw/rapel: chunked resumable downloads in unstable networks GitHub - lucasfrederico/pgcraft: lazygit-style TUI for Postgres. Navigate schemas, run queries, view explain plans — without leaving the terminal. 将 Notion 页面嵌入您的网站 | 免费试用! Show HN: Aigis – 43% of MCP servers have injection payloads; I built a firewall Audio to Video Converter AI Online Free GitHub - ClickHouse/nerve GitHub - highpost/tailscale-macos-vm: Using Tailscale with an OrbStack VM on macOS Show HN: OpenBrief – Local-first video downloader/summarizer Artifice Software | Synonym and Antonym Game GitHub - tomfunk/fungible: Terminal UI for personal finance — Plaid sync, CSV import, AI assistant, and MCP server Show HN: Unsiloed AI – #1 on OlmOCR-Bench,Beats Reducto, LlamaParse and GPT-5.5 Show HN: AI skills for program / project / delivery managers The Grid: The Largest Machine Ever Built | The Stepchange Show GerbDiff — Local-First Gerber Diff Tool for PCB Engineers Show HN: Built a tool to create brand-consistent images using AI GitHub - ndom91/macos-random-jellyfin-screensaver: Play a random Jellyfin item as your screensaver Bae — the AI companion who actually knows you Open Source Social Media Scheduler — TryPost GCal Sidebar Custom New Tab Dashboard with 50+ Widgets — Start Page HQ iPhone 版“Today” - App Store GitHub - ystepanoff/awo: AWO — Agent Worktree Orchestrator: a local Go CLI that coordinates Claude Code and Codex across isolated git worktrees with deterministic verification. HypeCheck — Is Your Supplement Legit or Just Hype? GitHub - rjpruitt16/aquifer: API Aqueduct — self-hosted request queue for inbound and outbound rate control GitHub - yamafaktory/hypergraph: Hypergraph is a data structure library to create a directed hypergraph in which a hyperedge can join any number of vertices. Show HN: YourMemory, persistent memory layer with temporal reasoning for agents CloudPostOffice — Simplest way to send and receive messages UUTA — A calm notebook for showing up AI API Pricing Calculator — Compare Costs Across Providers GitHub - scosman/cursed_browser: True AI-Native Browser — a VLM reads the HTML and hallucinates the page. Linear Chess Show HN: Browser-based Glider Sim Next Train GitHub - xfoa/Impatience: A library for instrumentation of event-to-event latency over a network GitHub - bitomule/musts: The validation loop that stops AI coding agents from claiming work is done before it actually is. Feynman - AI research assistant SynapCores — the AI-native database GitHub - erikshelley/complete-family-tree-viewer: A webpage for viewing all of a person's family tree at once GitHub - Noumenon-ai/AutoMaxFix: Controlled AI repair loop. Audit → Reproduce → Patch → Test → Report. Safety boundaries most AI agents skip. GitHub - JosephRedfern/plonk: Python interpreter at your fingertips Open Satchel — A free local-first PDF editor. Show HN: Hackobar – One feed for AI news GitHub - ghostchat-dev/widget: ~10KB chat widget. Zero cookies. Zero tracking. Fully open source. tiltbump X posts as clean Markdown for LLMs Symbol Combos — Cute Symbols, Kaomoji & Aesthetic Emojis to Copy GitHub - SellswordSoftware/justbookmarks: A simple desktop bookmark manager that uses the Netscape Bookmark HTML format so you can keep one browser-independent source of truth. SailWP. WordPress without the weight. Show HN: Widget Cast – Video Widgets for iOS PhoneDiffusion App - App Store Show HN: NanoApps: Run custom homebrew apps on iPod nano 7th generation Breadboard Knockout GitHub - elixir-volt/volt: Elixir-native frontend build tool — dev server, HMR, and production builds for JavaScript, TypeScript, Vue SFCs, and CSS. No Node.js required. Show HN: GuideOS – A radar-first, off-grid navigation kernel for edge robotics State lives on disk, not in chat Show HN: My biggest solo-project: Game engine with its own programming language MarketChacha | Stock Trading Community for Real Market Discussion GitHub - dmitryAQA/playwright-bdr-template Kubernetes, explained — interactive walkthroughs Show HN: Proj – organize your coding projects with categories and one-key CD Show HN: I made a compiler/VM for untrusted scripts Show HN: Stumpy – StumbleUpon Re-Created Show HN: Reward Is Not Reinforcement Until Admitted GitHub - dominikhei/cardamon: Cardamon is a cleanup tool for Prometheus that collects unused metrics from Grafana and Prometheus and generates drop statements for them. GitHub - NavodPeiris/grizzlars: High-performance DataFrame library written in C++ with Python bindings. Peakedin - LinkedIn's finest moments, curated weekly Planetensuche GitHub - cnemri/awesome-gemini-omni: A curated list of awesome Google Gemini Omni prompt guides, interactive platforms, and creative showcases. Show HN: An open-source, interactive AI engineering syllabus (1,100 papers) Show HN: I Built a Debugging Challenge for the AI Coding Age HTML Deployer: 1-Click AI Code To Website Publisher - Chrome 应用商店 GitHub - alkait/WhatsKept: Searchable, agent-queryable WhatsApp history from an iOS backup — a single Go binary. Geomatic | Tiny Volt Show HN: SenseCollect – Web data extraction made simple GitHub - feers77/iasql: A new implementation of SQL for IA purposes, using postgresSQL and Karpathy wiki-llm as inspiration. Kubernetes Study Path — From kubectl to a Production Cluster GitHub - octelium/cordium: Open-source sandbox platform with identity-based secretless infrastructure access for developers and AI agents on Kubernetes Play Doom with friends in your browser. You decide when you receive ForwardPass! (experimental) GitHub - jacksonsolid/Bytery fx.leftium.com GitHub - skorotkiewicz/cadence: $$hi Small marker tracking for source files. GitHub - nikitph/yieldos Show HN: Live AI music sequencing agent SaveNeighbor | Local help from people you trust drea: podcast ad blocker App - App Store JS Crossword GitHub - jake-stewart/tuie: A rich, performant TUI library for Rust. GitHub - AlexWasHeree/NoteCast: Local note engine that uses LLM to build and evolve a knowledge graph
BYOW(Build Your Own Wallet) : A Field Guide to Building MPC Wallets in 2026 - Part 1
nethsarask · 2026-05-26 · via Hacker News: Show HN

For the lazy guys, here’s the implementation on GitHub. Don’t forget to star the repo ⭐

On August 9, 2023, the Fireblocks cryptography research team published one of the most consequential disclosures in wallet security history.

They called it BitForge.

The disclosure named names Coinbase Wallet-as-a-Service, Binance, Zengo. Over fifteen widely-deployed MPC implementations, all running protocols described in peer-reviewed academic papers, all vulnerable to a class of attacks that could extract the full private key from a single compromised participant.

Some implementations could leak the key in 16 signatures. Others required up to a billion. But the point was the same: the multi-party guarantee that MPC promises, that no single party ever has the key was broken in production.

The cause was almost embarrassing. The original GG18 and GG20 papers, which much of the industry had implemented, were missing zero-knowledge range proofs around values used in their Paillier-based multiplication protocol. Nobody added them, because nobody noticed they were missing. Cryptographers writing papers don't always spell out every defensive check. Engineers reading papers don't always know which omissions matter.

The fix took weeks. The architectural lesson is still being absorbed.

If you’re reading tutorials about building MPC wallets today, there’s a decent chance the protocol they’re teaching you is one of the broken ones. There’s a near certainty they’re skipping the parts that make MPC actually safe in production: distributed key generation without a trusted dealer, share refresh, cheater identification, replay protection, hardware-backed share encryption.

This article is the one I wish existed when I started. It walks through how MPC wallets actually work, what the current cryptographic state of the art is, why every architectural choice matters, and how to build a working 2-of-3 threshold signature wallet for Solana that you can run today.

It is long. It is technical. It will not waste your time.

A traditional wallet has one private key. Whoever holds the key controls the funds. Lose it, lose everything. Leak it, lose everything. Get phished into signing the wrong thing, lose everything. Single points of failure all the way down.

A multisig wallet improves on this by requiring multiple signatures. But each signature comes from a complete private key held by a different party, and the signatures are combined on-chain. The blockchain knows it's a multisig, different address format, higher fees, privacy leakage about who signed.

An MPC wallet is different. It splits a single conceptual private key into mathematical shares distributed across multiple parties. To sign a transaction, a threshold number of share-holders cooperate in a cryptographic protocol that produces one standard signature indistinguishable on-chain from a normal single-key signature. The blockchain doesn't know it's MPC. There is no special address format. The full private key is never reconstructed at any point, on any device.

Two primitives matter:

Distributed Key Generation (DKG) : A protocol where N parties collaboratively generate a shared key. Each party ends up with a share of the key. No party ever sees the full key. The protocol also outputs a group public key (the on-chain address).

Threshold Signature Scheme (TSS) : A protocol where T-of-N parties (where T ≤ N) cooperate to produce a valid signature using their shares. The signature verifies against the group public key like any ordinary signature. The full private key is never reconstructed during signing.

Together: DKG creates the key, TSS uses it. Neither involves anyone ever holding the complete secret.

A typical 2-of-3 MPC wallet might distribute shares like this:

To sign a transaction, you need 2 of the 3 shares to participate in the signing ceremony. Lose your phone? Use the backup share to recover. Service compromised? They can’t sign alone. Phone compromised? They can’t sign alone either.

The threshold is configurable. 2-of-3 is the most common for retail. Institutional setups use larger configurations like 3-of-5 or 5-of-9 with shares distributed across geographic regions, secure enclaves, hardware modules, and key personnel.

Here’s the property that makes MPC magical for blockchain wallets.

When a 2-of-3 FROST signing ceremony completes for an Ed25519 signature on Solana, the output is a 64-byte Ed25519 signature. The Solana validator checks it with the standard Ed25519 verification routine. The validator has no idea. and no way to know, that the signature was produced collaboratively.

Compare with on-chain multisig:

  • Multisig: validator sees a transaction calling a multisig program, decodes it, verifies each signer separately, applies threshold logic. Costs more compute. Reveals all signers. Limited portability.

  • MPC: validator sees a normal signature. No extra logic. Costs nothing extra. Reveals nothing about the signing process.

This is why every major wallet infrastructure provider, including Fireblocks, Coinbase WaaS, Dfns, Zengo, Safeheron, Portal HQ, Privy, and Turnkey, uses MPC or MPC-adjacent architectures.

The MPC protocol you choose determines almost everything about your wallet’s security, performance, and operational characteristics. Most engineers building wallets don’t actually pick the protocol; they pick a library, and the protocol comes with it. That’s fine when the library is well-chosen. It’s catastrophic when it isn’t.

Here’s the honest state of the field.

ECDSA is what Bitcoin and Ethereum use. Threshold ECDSA is much harder than threshold Schnorr because of how ECDSA’s signing equation is structured (the inverse of the nonce makes things ugly). Three generations of protocols matter.

GG18 and GG20 (Gennaro-Goldfeder, 2018 and 2020) were the original practical threshold ECDSA protocols. They made MPC wallets commercially viable. They also missed a zero-knowledge range proof around their Paillier homomorphic encryption that turned out to be load-bearing for security. This is the BitForge vulnerability. Do not implement these for new systems. If a tutorial or library uses GG18 or GG20 without explicit BitForge mitigations, walk away.

CGGMP21 (Canetti-Gennaro-Goldfeder-Makriyannis-Peled, 2021) fixed the missing proofs and added universally composable security. Fireblocks calls their implementation MPC-CMP. Dfns has CGGMP21 in Rust. It’s the institutional gold standard. The tradeoff is heavier computation, reliance on a 2048-bit Paillier modulus, and the need for extremely careful implementation.

DKLs23 (Doerner-Kondi-Lee-Shelat, 2023) takes a different approach: replace Paillier homomorphic encryption with Oblivious Transfer. This sidesteps the entire Paillier-related vulnerability class, reduces communication rounds from 6 to 3, and runs faster on resource-constrained devices like phones. Utila, MetaMask Embedded Wallets, and Web3Auth use DKLs23 (or DKLs19, its predecessor).

Schnorr signatures are mathematically cleaner than ECDSA, which makes threshold Schnorr much simpler than threshold ECDSA. FROST (Flexible Round-Optimized Schnorr Threshold) is the standard protocol.

FROST is a 2-round signing protocol. There’s a trusted-dealer variant and a fully distributed DKG variant. It’s the protocol you want for any chain that supports Schnorr or Ed25519:

The ZcashFoundation maintains a production-grade Rust implementation: frost-core v2.0, with ciphersuite-specific crates for each curve. It’s partially audited by NCC Group and is what we’ll use in our reference implementation.

Three classes of implementations should be treated as red flags in 2026:

  1. Anything claiming GG18 or GG20 without explicit BitForge patches. The missing ZK proofs are not optional.

  2. MPC-SSS wallets that reconstruct the key in memory during signing. This is Shamir’s Secret Sharing dressed up as MPC. The key is reassembled, even briefly, on the client. Web3Auth V1, older Privy SDKs, and many “MPC tutorial” projects fall in this category. Real MPC-TSS never reconstructs the key.

  3. Trusted-dealer DKG in production. If a single party generates the key and distributes shares, that party is a single point of failure. Use a fully distributed DKG.

The cryptographic protocol is one axis. The other axis is where the shares live and how they’re protected. Three camps dominate the production landscape.

The shares are split across genuinely independent parties, typically a combination of user devices, service backends, and cold backups. Each party runs the MPC protocol locally. No party ever sees the full key. Fireblocks, Coinbase WaaS, Zengo, Safeheron, Dfns operate here.

Strengths: No single point of failure. Cryptographically pure model. Independent of hardware trust assumptions.

Weaknesses: Slower signing (MPC ceremonies have latency overhead). Harder to implement correctly. The cryptographic protocol must be the most-recent, most-audited version.

The keys live inside hardware-isolated enclaves like AWS Nitro Enclaves, Intel SGX, or Apple Secure Enclave. The enclave generates the key, the enclave signs, the key never leaves. Turnkey, Privy (iframes), Portal HQ operate here.

Strengths: Very fast (50-100ms signing latency). Simpler to reason about, you trust the hardware vendor. Strong attestation gives cryptographic proof of what code is running.

Weaknesses: Trust shifts to the hardware vendor (Amazon, Intel, Apple). Side-channel attacks against TEEs are a known research area. Recovery typically depends on the vendor’s infrastructure.

The key is split using Shamir’s Secret Sharing. Shares are distributed across devices and backends. But during signing, the shares are combined in client memory to reconstruct the full key, which then signs normally and is wiped. Web3Auth V1 and some other consumer-focused providers operate here.

Strengths: Easier to implement. Works with standard signing libraries. Faster than pure MPC.

Weaknesses: The key does exist, however briefly, in memory on the client. A compromised client at the moment of signing extracts the full key. This is not real MPC, it’s distributed key recovery with key reconstruction.

The right architecture depends on the threat model. Institutional custody chooses pure MPC. Consumer apps optimizing for latency choose TEE. Hybrid models exist but should be evaluated honestly, many "MPC wallets" in market are actually MPC-SSS.

This is the end of Part 1. In Part 2, we’ll cover implementation, share refresh, the production concerns most tutorials skip (untrusted coordinators, replay protection, policy engines, hardware-backed share encryption), how this reference compares to what Fireblocks, Coinbase WaaS, Privy, and Turnkey actually run, and what hiring managers in the MPC space are looking for in 2026.

Subscribe to get Part 2 when it drops.

No posts