Chữ ký Schnorr và gộp multisig

·9 phút đọc·Bởi SSP Editorial Team
Bìa SSP xanh hải quân với biểu tượng khóa, khiên, CPU và tia sét trên nền gradient tối, chương Schnorr của loạt Multisig Deep Dive

Trong bài trước, chúng ta đã đi qua việc SSP thực sự dựng một ví multisig trên chuỗi như thế nào: đường dẫn BIP48, hai xpubs theo thứ tự lexicographic, một redeem script mà chain kiểm tra. Toàn bộ cơ chế đó được xây trên một sơ đồ chữ ký cụ thể — ECDSA trên đường cong secp256k1, cùng sơ đồ mà Bitcoin ra mắt năm 2009 và phần lớn các chain kế thừa.

Bài này nói về sơ đồ chữ ký khácSchnorr — và điều gì thay đổi khi bạn xây multisig dựa trên nó. Thay đổi tiêu đề là Schnorr hỗ trợ gộp (aggregation): với giao thức đúng, n chữ ký từ n cosigner có thể được hợp nhất thành một chữ ký mà trên chuỗi nhìn giống một chữ ký bình thường từ một khóa đơn. Ví hành xử như một ví multisig, nhưng chain không bao giờ thấy tính multi đó. Điều này có hệ quả thật sự cho phí, quyền riêng tư, và loại multisig nào trở nên khả thi về kinh tế.

TL;DR

  • ECDSA là cái mà phần lớn multisig hiện tại (kể cả SSP hôm nay) ký bằng. Mỗi cosigner sản xuất một chữ ký riêng; chain kiểm tra hết. Chi phí và dấu chân tăng theo n.
  • Schnorr là một sơ đồ chữ ký khác, được kích hoạt trên Bitcoin qua bản nâng cấp Taproot năm 2021. Nó có một tính chất toán học — tuyến tính — mà ECDSA không có. Tính tuyến tính cho phép nhiều chữ ký Schnorr được cộng lại thành một chữ ký hợp lệ duy nhất cho một khóa kết hợp.
  • MuSig2 là giao thức hiện đại, thực dụng biến tính toán học đó thành một giao thức multisig dùng được. n cosigner chạy một giao thức tương tác ngắn, mỗi người đóng góp một vòng nonce và một chữ ký bộ phận; kết quả là một chữ ký Schnorr duy nhất không thể phân biệt với một chữ ký khóa đơn.
  • Đây là một thắng rõ ràng ở phía xác minh — phí, sự phồng to của blockchain và quyền riêng tư đều có lợi. Đây không phải là một thắng miễn phí ở phía ký: gộp cần xử lý nonce cẩn thận, và một triển khai dở có thể rò khóa riêng.
  • SSP hôm nay dùng BIP48 + ECDSA multisig trên các chain nó hỗ trợ. Lộ trình là thêm các đường Schnorr/MuSig2 ở những chain hỗ trợ, mà không phá mô hình 2-of-2 hiện có mà người dùng đã có.

Một ôn lại nhanh chữ ký làm gì

Một chữ ký số chứng minh với người xác minh hai điều: thông điệp chính xác này được ký bởi một người nắm khóa riêng tương ứng với khóa công khai này. Trên chuỗi, "thông điệp" là một hash giao dịch, "khóa công khai" là địa chỉ (hoặc cái suy ra địa chỉ), và "người xác minh" là mọi node trên mạng. Nếu chữ ký vượt qua kiểm tra, giao dịch hợp lệ; nếu không, bị từ chối.

ECDSA — sơ đồ mà Bitcoin và phần lớn các chain EVM dùng — đã được hiểu kỹ, bảo thủ, và chạy tốt cho trường hợp một người ký. Vấn đề là điều gì xảy ra khi bạn muốn nhiều người ký ủy quyền cho cùng một giao dịch. ECDSA không có cách nào hợp nhất các chữ ký. Nếu bạn muốn two-of-two, chain phải lưu cả hai chữ ký và kiểm tra cả hai. Three-of-five, năm chữ ký. Giao dịch lớn lên theo số cosigner.

What is multisig mô tả phần giao thứcm trong n khóa, quy tắc redeem, chain ép buộc ngưỡng. Cái mà bài trước đó không dừng lại để giảng là chi phí: dưới ECDSA, tất cả những chữ ký đó sống trong giao dịch. Một giao dịch P2WSH 2-of-2 thực sự lớn hơn và tốn kém hơn để phát đi so với một giao dịch single-sig với cùng tác dụng.

Schnorr thay đổi điều gì

Chữ ký Schnorr, được đề xuất lần đầu cuối những năm 1980, đã bị tránh né trong thiết kế gốc của Bitcoin vì sự không chắc chắn về bằng sáng chế lúc đó. Chúng sạch hơn ECDSA về mặt toán học ở một khía cạnh cụ thể: chúng tuyến tính. Nếu s1 là một chữ ký hợp lệ trên một thông điệp dưới khóa P1, và s2 là một chữ ký hợp lệ trên cùng thông điệp dưới khóa P2, thì s1 + s2 là một chữ ký hợp lệ trên thông điệp đó dưới P1 + P2. Cả khóa lẫn chữ ký đều cộng được.

Tại sao điều này quan trọng: bỗng nhiên có thể hợp nhất chữ ký trước khi chúng chạm chain. Thay vì lưu hai chữ ký trong giao dịch, bạn lưu một — tổng. Người xác minh kiểm tra một chữ ký đó với tổng của hai khóa công khai, mà cả hai người ký đều có thể tính trước. Từ góc nhìn của chain, giao dịch kết quả nhìn không thể phân biệt với một giao dịch được ký bằng một khóa duy nhất.

ECDSA không làm được điều đó. Toán học của ECDSA liên quan đến một nghịch đảo nhân, phá vỡ tính tuyến tính; tổng các chữ ký ECDSA không phải là chữ ký hợp lệ. Đó là lý do multisig dựa trên ECDSA phải đẩy tất cả các chữ ký riêng lẻ lên chuỗi. Chain xem xét từng cái một cách riêng biệt.

Bitcoin xuất xưởng chữ ký Schnorr (qua BIP340) như một phần của soft fork Taproot năm 2021. Bản thân các chữ ký nhỏ hơn một chút so với chữ ký ECDSA (64 byte so với ~71), nhưng cái lớn hơn nhiều là cái mà tính tuyến tính cho phép khi bạn kết hợp nó với multisig.

MuSig2 — multisig nhìn như một chữ ký trên chuỗi

Phiên bản trung thực của "bạn có thể cộng các chữ ký Schnorr lại" là bạn phải làm điều đó cẩn thận. Cách tiếp cận ngây thơ — để mỗi cosigner chọn một nonce, chia sẻ chữ ký bộ phận, cộng hết lại — rò vật liệu khóa dưới ký lặp lại và dễ bị một lớp tấn công "rogue key". Một giao thức gộp thực tế phải phòng được cả hai.

MuSig2 là kết quả của khoảng một thập kỷ tinh chỉnh vấn đề này. Đó là chuẩn de facto cho multisig Schnorr n-of-n: lúc ký, các cosigner trao đổi hai vòng nonce, mỗi người sản xuất một chữ ký bộ phận, và một trong số họ cộng các bộ phận thành một chữ ký gộp cuối cùng. Kết quả là một chữ ký Schnorr duy nhất, hợp lệ đối với một khóa công khai gộp duy nhất, trên chuỗi không thể phân biệt với một chữ ký khóa đơn.

Vài điểm quan trọng về MuSig2:

  • Hiện tại nó là n-of-n. Để có được một m-of-n thực sự (ví dụ 2-of-3) dưới gộp, bạn cần thêm cơ chế — FROST là đề xuất dẫn đầu — và vẫn đang được đưa vào sản xuất. Nên năm 2026, cái SSP có thể gộp sạch là mặc định 2-of-2. Các cấu hình 2-of-3 và cao hơn từ bài chọn phần lớn vẫn dùng khả năng thấy trên chuỗi kiểu ECDSA.
  • Vẫn cần cả hai cosigner online để ký. Gộp không giảm số người ký cần có; chỉ nén đầu ra cuối. UX giống hôm nay — hai thiết bị ký cùng một giao dịch — nhưng dấu chân trên chuỗi của kết quả nhỏ hơn.
  • Một triển khai MuSig2 dở có thể rò khóa. Việc xử lý nonce tinh tế. Vì lý do đó, các triển khai sản xuất dựa vào các thư viện đã được kiểm toán kỹ (module MuSig2 của libsecp256k1, stack rust-bitcoin, v.v.).

Điều này có ý nghĩa gì cho SSP hôm nay

SSP hôm nay, trên mỗi chain mà nó hỗ trợ, dùng multisig ECDSA dẫn xuất BIP48. Hai thiết bị, hai khóa riêng, hai chữ ký riêng trên chuỗi. Điều đó đúng, đã được kiểm toán (bởi Halborn — xem tham chiếu inside-ssp-2025-halborn-audits trong bài 2-of-2 hiện có), và tương tác được với bất kỳ ví nào tuân thủ BIP48. Nhược điểm là bạn trả đầy đủ chi phí trên chuỗi của 2-of-2.

Lộ trình từ đây, nói thẳng: thêm một đường code Schnorr/MuSig2 cho Bitcoin (nơi Taproot đang sống và ổn định) để ký cùng ví 2-of-2 bằng gộp thay vào đó. Ngữ nghĩa ngưỡng của ví không đổi — cả hai thiết bị vẫn phải ký. Byte trên chuỗi co lại, và giao dịch kết quả nhìn như một chi tiêu single-sig.

Với người dùng, điều này chủ yếu xuất hiện như:

  • Phí Bitcoin thấp hơn chút trên mỗi giao dịch.
  • Quyền riêng tư được cải thiện — ví ngừng la "tôi là ví multisig" với chain analytics.
  • Khớp số nhanh hơn cho UI ví (ít dữ liệu hơn cần lấy và phân tích trên mỗi địa chỉ).

Đây không phải — và đáng để nói rõ — là một bản nâng cấp bảo mật. Mật mã khó tương đương, chỉ là được cấu trúc khác. Lý do để áp dụng là hiệu quả và quyền riêng tư, không phải an ninh thô.

Điều này có ý nghĩa gì cho chi phí, quyền riêng tư và UX

Ba chỗ mà điều này hạ cánh khi gộp được triển khai rộng rãi trên một chain:

Chi phí. Bitcoin tính phí xấp xỉ theo kích thước giao dịch bằng vbyte. Một giao dịch ECDSA P2WSH 2-of-2 lớn hơn đáng kể so với giao dịch Taproot-MuSig2 tương đương. Với ví số dư thấp gửi số tiền nhỏ, tiết kiệm phí tương đối có thể là 20–30%. Với doanh nghiệp throughput cao, tiết kiệm tuyệt đối trên phí hàng năm là tiền thật.

Quyền riêng tư. Hôm nay, khi một ví phát đi một chi tiêu P2WSH 2-of-2, sự kiện đó thấy được với bất kỳ ai chạy explorer blockchain. Các công ty chain analytics tinh vi gom các địa chỉ theo mẫu chi tiêu, và "địa chỉ này là multisig" là một tín hiệu cụm mạnh. Một chi tiêu được gộp bằng Schnorr nhìn giống hệt một chi tiêu single-sig. Tín hiệu cụm biến mất.

UX. UX ký trong SSP — ký trên trình duyệt, rồi xác nhận trên điện thoại — không đổi. Cả hai thiết bị vẫn sản xuất chữ ký bộ phận; ví chỉ kết hợp chúng trước khi phát thay vì phát cả hai. Từ góc nhìn người dùng, thay đổi duy nhất thấy được là "ví cảm thấy rẻ hơn để sử dụng".

Cũng có một thắng UX sâu hơn ở chân trời. Một khi gộp m-of-n (qua FROST hoặc tương tự) sẵn sàng cho sản xuất, bạn có thể tưởng tượng một ví SSP 2-of-3 — như setup solo recovery mà bài trước mô tả — mà trên chuỗi nhìn như một ví single-sig bình thường. Khóa "recovery" thứ ba thực sự là khóa ký thứ ba, nhưng chain không bao giờ phải biết.

Điều này có ý nghĩa gì với bạn

Ba điều rút ra:

  1. Bạn không phải nghĩ về Schnorr để dùng SSP đúng. Setup 2-of-2 bạn có hôm nay được xây trên multisig ECDSA đã được kiểm toán kỹ, và nó duy trì như vậy bất kể gộp hạ cánh ra sao. Bài tiếp theo trong loạt (social recovery vs multisig) cố ý lờ đi gộp vì câu hỏi ai có thể chi tiêu độc lập với chữ ký nhìn ra sao trên chuỗi.
  2. Gộp là một nâng cấp "phí và quyền riêng tư", không phải "bảo mật". Nếu bạn từng thấy một ví quảng cáo "MuSig2 = an toàn hơn", hãy hoài nghi. An ninh mật mã của MuSig2 được triển khai tốt tương đương với multisig ECDSA được triển khai tốt; thắng nằm ở chỗ khác.
  3. Theo dõi hỗ trợ của chain, không phải tiếp thị của ví. Schnorr sống trên Bitcoin và đang được áp dụng trên thế giới EVM qua account abstraction. Các chain hỗ trợ tốt là nơi SSP sẽ triển khai multisig được gộp trước; ở chỗ khác, BIP48 + ECDSA vẫn là mặc định đúng và an toàn.

Bài tiếp theo của loạt này, Social recovery vs multisig, chuyển tiêu điểm từ mật mã sang vận hành: khi nào bạn dùng multisig và khi nào social recovery thắng? Cả hai bảo vệ khỏi mất khóa; chúng trả lời các câu hỏi khác nhau. Để ôn nhanh các thiết bị SSP dùng hôm nay và vì sao, Meet SSP Wallet vẫn là điểm khởi đầu.

Chia sẻ bài viết này

Bài viết liên quan