a16z: Giải thích kỹ thuật về nghi thức thiết lập đáng tin cậy trên chuỗi phi tập trung của dự án tiền mã hóa
tác giả: Valeria Nikolaenko, Sam Ragsdale, a16z*
biên dịch: Amber, Foresight News*
Lễ thiết lập đáng tin cậy (Trusted Setup Ceremony) mặc dù luôn thách thức cộng đồng tiền mã hóa, nhưng đây chắc chắn cũng là phần khiến cộng đồng tiền mã hóa phấn khích nhất. Mục tiêu của buổi lễ là tạo ra các khóa mã hóa đáng tin cậy để bảo vệ ví tiền mã hóa, giao thức blockchain hoặc hệ thống chứng minh không kiến thức. Những chương trình này là gốc rễ của sự tin tưởng vào an ninh của dự án, vì vậy việc đảm bảo các hoạt động và thực hiện lễ thiết lập đáng tin cậy một cách chính xác là vô cùng quan trọng.
Hiện tại, các dự án blockchain thực hiện lễ thiết lập đáng tin cậy có nhiều hình thức khác nhau, bao gồm nhưng không giới hạn ở blowtorches, radioactive dust và airplanes, và tất cả những hình thức này đều có một điểm chung, đó là chúng đều phụ thuộc vào một điều phối viên tập trung. Bài viết này sẽ trình bày cách thay thế điều phối viên tập trung bằng hợp đồng thông minh để thực hiện quy trình phi tập trung, đồng thời chúng tôi cũng sẽ mã nguồn mở một thư viện, cho phép bất kỳ ai chạy lễ được các chuyên gia mã hóa gọi là Kate-Zaverucha-Goldberg (KZG) hoặc "powers-of-tau" trên Ethereum.
Phương pháp phi tập trung của chúng tôi có giới hạn, nhưng nó vẫn hữu ích. Do hạn chế dữ liệu trên chuỗi hiện tại, kích thước tham số mã hóa phải giữ không vượt quá 64 KB. Tuy nhiên, số lượng người tham gia không có giới hạn, bất kỳ ai cũng có thể đóng góp vào bất kỳ thời điểm nào. Ứng dụng của các tham số ngắn này bao gồm SNARK không kiến thức nhỏ, lấy mẫu khả năng dữ liệu và cây Verkle.
Lịch sử và cơ chế của lễ thiết lập đáng tin cậy
Trong một lễ thiết lập đáng tin cậy điển hình, một nhóm người tham gia sẽ hợp tác để tạo ra một tập hợp các tham số mã hóa. Mỗi bên tham gia sử dụng thông tin mã hóa được tạo ra tại chỗ để tạo ra dữ liệu giúp tạo ra các tham số này. Thiết lập phù hợp có thể đảm bảo rằng thông tin mã hóa không bị rò rỉ, thông tin mã hóa chỉ có thể được sử dụng theo cách mà giao thức quy định, và thông tin mã hóa này sẽ bị tiêu hủy hoàn toàn khi buổi lễ kết thúc. Chỉ cần trong buổi lễ có ít nhất một bên đảm bảo trung thực và (sau khi buổi lễ kết thúc) tiêu hủy thông tin mã hóa, thì toàn bộ quy trình có thể được coi là an toàn. (Tất nhiên, điều kiện tiên quyết là mã không có lỗi)
Một số lễ nổi bật nhất được Zcash phát hành, đây là một dự án blockchain hướng đến quyền riêng tư. Những người tham gia lễ này đã tạo ra các tham số công khai, nhằm cho phép người dùng Zcash xây dựng và xác minh các giao dịch mã hóa riêng tư. Sáu người tham gia đã tổ chức lễ Zcash đầu tiên, Sprout, vào năm 2016. Hai năm sau, nhà nghiên cứu mã hóa Ariel Gabizon, hiện là giám đốc khoa học của Aztec, đã phát hiện ra một lỗi nghiêm trọng trong thiết kế của buổi lễ, lỗi này được kế thừa từ một bài báo nghiên cứu cơ bản.
Lỗ hổng này có thể cho phép kẻ tấn công tạo ra vô hạn đồng Zcash mà không bị phát hiện. Nhóm Zcash đã giữ bí mật về lỗ hổng này trong bảy tháng, cho đến khi nâng cấp hệ thống Sapling (lễ của nó có 90 người tham gia) giải quyết vấn đề này. Mặc dù các cuộc tấn công dựa trên lỗ hổng an ninh sẽ không ảnh hưởng đến quyền riêng tư của giao dịch của người dùng, nhưng viễn cảnh vô hạn giả mạo đã phá hủy tiền đề an toàn của Zcash. (Về lý thuyết, không thể biết liệu một cuộc tấn công đã xảy ra hay chưa.)
Một ví dụ đáng chú ý khác về thiết lập đáng tin cậy là lễ "tau-power-of-tau" vĩnh viễn, lễ này chủ yếu được thiết kế cho Semaphore, một công nghệ bảo vệ quyền riêng tư cho tín hiệu ẩn danh trên Ethereum. Thiết lập này sử dụng đường cong elip BN254, cho đến nay đã có 71 người tham gia. Các dự án nổi tiếng khác sau đó đã sử dụng thiết lập này để thực hiện lễ của riêng họ, bao gồm Tornado.Cash, mạng Hermez và Loopring.
Aztec đã tổ chức lễ tương tự trên đường cong elip BLS12_381, với 176 người tham gia zkSync, một giải pháp mở rộng "tầng hai" cho Ethereum, sử dụng tổng hợp không kiến thức. Filecoin là một giao thức lưu trữ dữ liệu phân tán, đã tổ chức lễ với 19 và 33 người tham gia trong giai đoạn đầu tiên và thứ hai, phân nhánh kho lưu trữ ban đầu. Celo là một blockchain tầng 1, cũng đã tổ chức một lễ cho khách hàng nhẹ của họ, Plumo.
Lễ vĩnh viễn không giới hạn số lượng người tham gia. Nói cách khác, bất kỳ ai cũng có thể tham gia với bất kỳ mức độ an toàn nào, thay vì phải tin tưởng vào người khác để thực hiện lễ thiết lập đáng tin cậy. Một người tham gia đáng tin cậy đảm bảo an toàn cho tất cả các tham số kết quả; chuỗi mạnh như liên kết yếu nhất của nó. Như tên gọi của nó, lễ vĩnh viễn có thể được tổ chức vĩnh viễn, giống như tiền đề của lễ quyền lực tau ban đầu. Điều này có nghĩa là các dự án thường sẽ quyết định thời gian bắt đầu và kết thúc cụ thể của lễ, để họ có thể nhúng các tham số được tạo ra vào giao thức mà không phải lo lắng về việc cập nhật chúng liên tục.
Ethereum có kế hoạch thực hiện một lễ thiết lập đáng tin cậy nhỏ cho các bản nâng cấp ProtoDankSharding và DankSharding sắp tới. Hai bản nâng cấp này sẽ tăng lượng dữ liệu mà chuỗi Ethereum cung cấp cho khách hàng để lưu trữ. Thời gian hiệu lực của dữ liệu này là từ 30 đến 60 ngày theo đề xuất. Buổi lễ đang được phát triển tích cực và dự kiến sẽ hoạt động trong khoảng sáu tuần vào đầu năm tới. (Xem kzg-ceremony-specs để biết thêm chi tiết) và nó đang trở thành lễ thiết lập đáng tin cậy lớn nhất cho đến nay trên blockchain.
Sự cẩn trọng là một "đức tính", đặc biệt khi liên quan đến lễ thiết lập đáng tin cậy. Nếu phần cứng hoặc phần mềm của máy bị tổn hại, điều này có thể phá hủy tính bảo mật của bí mật mà nó tạo ra. Các cuộc tấn công bên lề lén lút làm lộ bí mật cũng rất khó loại trừ. Ví dụ, điện thoại có thể theo dõi hoạt động của máy tính bằng cách ghi lại sóng âm rung của CPU. Trong thực tế, do rất khó để loại bỏ tất cả các cuộc tấn công bên lề có thể xảy ra - bao gồm cả những cuộc tấn công chưa được phát hiện hoặc công bố - thậm chí có người đã đề xuất đưa máy bay lên không gian để tổ chức lễ ở đó.
Hiện tại, kịch bản của những người tham gia lễ nghiêm ngặt thường như sau. Mua máy mới (phần cứng không bị ô nhiễm). Thực hiện cách ly rủi ro bằng cách loại bỏ tất cả các thẻ mạng (để ngăn chặn rò rỉ bí mật địa phương). Vận hành máy ở một vị trí không công khai trong lồng Faraday (để đánh bại những kẻ theo dõi tiềm năng). Đặt một lượng lớn entropy và dữ liệu sao chép cứng cho bộ sinh thông tin mã hóa giả ngẫu nhiên, như hạt giống của đầu vào ngẫu nhiên hoặc tệp video (để làm cho thông tin mã hóa khó bị bẻ khóa). Cuối cùng, tiêu hủy thông tin mã hóa - và bất kỳ dấu vết nào về thông tin mã hóa - bằng cách thiêu rụi mọi thứ thành tro.
Điều phối lễ thiết lập đáng tin cậy
Tất cả các lễ thiết lập đáng tin cậy đều phụ thuộc vào một điều phối viên tập trung. Điều phối viên là cá nhân hoặc máy chủ tư nhân hoặc thực thể khác, họ được ủy quyền để đăng ký và sắp xếp người tham gia, đóng vai trò như một trung gian bằng cách chuyển tiếp thông tin từ người tham gia trước đến người tham gia tiếp theo và giữ một nhật ký tập trung của tất cả các giao tiếp để phục vụ cho việc kiểm toán. Điều phối viên thường cũng chịu trách nhiệm cung cấp nhật ký cho công chúng một cách vĩnh viễn, nhưng phải thừa nhận rằng hệ thống tập trung này rất dễ bị mất thông tin do quản lý kém hoặc một số yếu tố không phải con người.
Thật mỉa mai, khi phi tập trung là nguyên tắc cốt lõi của tinh thần tiền mã hóa, các dự án tiền mã hóa phải phụ thuộc vào lễ thiết lập đáng tin cậy tập trung. Do đó, chúng tôi quyết định chứng minh tính khả thi của việc tổ chức một lễ nhỏ cho powers-of-tau vĩnh cửu trực tiếp trên chuỗi blockchain Ethereum. Thiết lập này hoàn toàn phi tập trung, không cần giấy phép, chống kiểm duyệt, và miễn là bất kỳ một người tham gia nào là trung thực, nó đều an toàn. Theo giá hiện tại, chi phí tham gia lễ chỉ từ 7 đến 400 đô la, tùy thuộc vào kích thước tham số kết quả cần thiết (trong trường hợp này, từ 8 đến 1024 lần tau).

Cho đến nay, chúng tôi khuyên không nên sử dụng mã cho bất kỳ mục đích nào ngoài thử nghiệm. Chúng tôi sẽ rất biết ơn nếu những người phát hiện ra bất kỳ vấn đề nào với mã báo cáo cho chúng tôi. Chúng tôi rất vui lòng thu thập phản hồi và kiểm toán về phương pháp của chúng tôi.
Tìm hiểu về KZG hoặc lễ "powers-of-tau"
Hãy cùng khám phá một trong những lễ thiết lập đáng tin cậy phổ biến nhất, được gọi là KZG, hoặc lễ "powers-of-tau". Nhờ có Vitalik Buterin, đồng sáng lập Ethereum, bài viết trên blog của ông về lễ thiết lập đáng tin cậy đã cung cấp thông tin cho chúng tôi trong phần này. Thiết lập này tạo ra mã hóa powers-of-tau, được đặt tên như vậy vì "tau" là biến được sử dụng để biểu thị bí mật do người tham gia tạo ra:
Đối với một số ứng dụng (chẳng hạn như Groth16, một phương pháp chứng minh zkSNARK phổ biến do Jens Groth thiết kế vào năm 2016), giai đoạn đầu tiên của thiết lập là giai đoạn thứ hai, tức là lễ tính toán đa bên (MPC), để tạo ra các tham số cho mạch SNARK cụ thể. Tuy nhiên, công việc của chúng tôi chỉ tập trung vào giai đoạn đầu tiên. Giai đoạn đầu tiên - tạo ra lũy thừa của tau - đã có thể được sử dụng làm khối xây dựng cơ bản cho SNARK tổng quát (chẳng hạn như PLONK và SONIC) cũng như các ứng dụng mã hóa khác (chẳng hạn như cam kết KZG, cây Verkle và lấy mẫu khả năng dữ liệu) (DAS).
Thông thường, tham số SNARK tổng quát nên rất lớn để chúng có thể hỗ trợ các mạch lớn và hữu ích. Các mạch có nhiều cổng hơn thường hữu ích hơn vì chúng có thể nắm bắt các tính toán lớn; số lũy thừa của tau tương ứng với số cổng trong mạch. Do đó, kích thước thiết lập điển hình là |pp|= ~40 GB, có khả năng hỗ trợ các mạch ~2 28 Gas. Với những hạn chế hiện tại của Ethereum, việc đặt các tham số lớn như vậy lên chuỗi là không khả thi, nhưng các lễ thiết lập đáng tin cậy nhỏ hơn hữu ích cho các mạch SNARK nhỏ, cây Verkle hoặc DAS có thể chạy trên chuỗi.
Quỹ Ethereum có kế hoạch thực hiện một số lễ nhỏ cho powers-of-tau có kích thước từ 200 KB đến 1.5 MB. Mặc dù các lễ lớn hơn có thể trông tốt hơn, nhưng xét đến việc các tham số lớn hơn có thể tạo ra các mạch SNARK hữu ích hơn, thực tế là lớn hơn không phải lúc nào cũng tốt hơn. Một số ứng dụng (như DAS) đặc biệt cần một ứng dụng nhỏ! [Lý do rất kỹ thuật, nhưng nếu bạn tò mò, đó là vì thiết lập có lũy thừa n (trong G) 1) chỉ cho phép cam kết KZG đối với đa thức ≤ n, điều này rất quan trọng để đảm bảo rằng đa thức dưới cam kết KZG có thể được tái tạo từ bất kỳ đánh giá n nào.
Thuộc tính này hỗ trợ lấy mẫu khả năng dữ liệu: mỗi lần thành công nhận được (lấy mẫu) đánh giá ngẫu nhiên của đa thức, nó đảm bảo rằng đa thức có thể được tái tạo hoàn toàn với xác suất t/n. Nếu bạn muốn tìm hiểu thêm về DAS, hãy xem bài viết của Buterin trên diễn đàn nghiên cứu Ethereum.
Chúng tôi đã thiết kế một hợp đồng thông minh có thể triển khai trên chuỗi blockchain Ethereum để thực hiện lễ thiết lập đáng tin cậy. Hợp đồng này sẽ hoàn toàn lưu trữ các tham số công khai trên chuỗi và thu thập sự tham gia thông qua giao dịch của người dùng.
Người tham gia mới trước tiên sẽ đọc các tham số này:

Sau đó, họ sẽ lấy mẫu khóa ngẫu nhiên τ' và tính toán các tham số cập nhật:

Và công bố chúng trên chuỗi, kèm theo chứng minh ba điều:
- Kiến thức về log rời rạc: người tham gia biết τ'. (Chứng minh rằng đóng góp mới nhất cho lễ thiết lập đáng tin cậy dựa trên công việc của tất cả các người tham gia trước đó.
- pp có hình thức tốt 1: các phần tử này thực sự mã hóa lũy thừa gia tăng. (Xác minh hình thức tốt của đóng góp của người tham gia mới cho lễ.
- Cập nhật không bị xóa: τ' ≠ 0. (Phòng ngừa cho những kẻ tấn công cố gắng phá hủy hệ thống bằng cách xóa công việc của tất cả các người tham gia trước đó.
Hợp đồng thông minh xác minh chứng minh, nếu nó đúng, nó sẽ cập nhật các tham số công khai mà nó lưu trữ. Bạn có thể tìm thấy thêm thông tin chi tiết về toán học và lý do phía sau nó trong kho lưu trữ.
Tính toán chi phí Gas
Thách thức chính khi chạy thiết lập trên chuỗi là làm cho lễ thiết lập đáng tin cậy càng hiệu quả càng tốt. Lý tưởng nhất, chi phí để gửi đóng góp không vượt quá 50 đô la. (Các dự án lớn có thể có khả năng trợ cấp Gas cho những người đóng góp, trong trường hợp đó, việc hàng trăm người tham gia mỗi người chi 100 đô la sẽ dễ tưởng tượng hơn). Dưới đây, chúng tôi cung cấp thêm thông tin về phần tốn kém nhất trong thiết lập. Chi phí Gas thấp hơn sẽ giảm chi phí đóng góp và cho phép xây dựng các tham số dài hơn (nhiều lũy thừa tau và các mạch SNARK lớn hơn)!
Thiết lập của chúng tôi áp dụng cho đường cong elip BN254 (còn được gọi là BN256, BN128 và alt_bn128), nó hỗ trợ các hợp đồng đã biên dịch sau trên Ethereum:
ECADD cho phép cộng hai điểm trên đường cong elip, tức là tính toán [α+ β]1 từ [α]1 và [β]1: Chi phí Gas 150
ECMULT cho phép nhân điểm trên đường cong elip với một số vô hướng, tức là tính toán [a*α]1 từ a và [α]1: Chi phí Gas 6,000
ECPAIR cho phép kiểm tra tích của một cặp điểm trên đường cong elip, tức là tính toán e([α1]1, [β1]2)* … *e([α1]1, [β1]2) = 1, tương đương với việc kiểm tra α1*β1+ … + αk*βk= 0: Chi phí Gas 34,000 * k + 45,000
Nếu Ethereum có thể kích hoạt BLS12_381 (như được đề xuất trong EIP-2537), hợp đồng thiết lập của chúng tôi cũng có thể dễ dàng được sử dụng cho các đường cong khác.
Hãy ước tính chi phí Gas để cập nhật thiết lập
Chi phí Gas để xác minh chứng minh. Như đã đề cập, mỗi người tham gia sẽ cập nhật thiết lập và gửi chứng minh bao gồm ba thành phần. Các thành phần chứng minh 1 và 3 - "kiến thức về log rời rạc" và "cập nhật không bị xóa" - rất rẻ để xác minh. Thách thức nằm ở việc xác minh thành phần 2, "hình thức tốt của pp" 1 "trên chuỗi. Nó yêu cầu một phép nhân đa số lớn (MSM) và hai phép ghép cặp:

Trong đó ρ0,…,?n-1 là các số vô hướng lấy mẫu ngẫu nhiên. Đối với hợp đồng thông minh đã biên dịch, cần:

Chi phí Gas để lưu trữ dữ liệu. Mỗi người tham gia cũng sẽ cập nhật lưu trữ trên chuỗi dưới dạng dữ liệu gọi (68 gas mỗi byte), chiếm n * 64 * 68 gas. (Đối với những người quen thuộc với mật mã đường cong elip, cần lưu ý rằng theo đo lường của chúng tôi đối với n = 256, việc lưu trữ điểm nén sẽ khiến việc giải nén chiếm ưu thế trong tổng chi phí.
Chi phí Gas ước tính từ điều này như sau:

Tất nhiên, chúng tôi cũng đang khám phá các giải pháp để giảm chi phí Gas.
Thư viện mã nguồn mở: evm-powers-of-tau
Chúng tôi đã mã nguồn mở lễ powers-of-tau dựa trên EVM tại github.com/a16z/evm-powers-of-tau. Việc thực hiện lễ bằng chiến lược của chúng tôi vừa đơn giản vừa minh bạch:
- Triển khai thỏa thuận lưu trữ và xác minh (thỏa thuận /KZG.sol)
- Người tham gia đọc các tham số lễ từ dữ liệu giao dịch trước đó
- Người tham gia tạo một khóa tại chỗ, tính toán các tham số cập nhật
- Người đóng góp tạo chứng minh của họ: pi1, pi2
- Người đóng góp gửi các tham số cập nhật cho hợp đồng thông minh đã triển khai trên chuỗi công cộng thông qua KZG.potUpdate()
- Hợp đồng thông minh sẽ xác minh tính hợp lệ của các cập nhật, trong trường hợp gửi sai định dạng sẽ khôi phục
- Nhiều người đóng góp có thể thực hiện các bước 2-5 vĩnh viễn, mỗi bước có thể nâng cao tính an toàn của lễ
- Bất cứ khi nào các nhà phát triển tự tin về số lượng và chất lượng của các đóng góp, họ có thể truy vấn các tham số hiện tại trên chuỗi và sử dụng các giá trị này làm khóa mã hóa.
Kho lưu trữ của chúng tôi sử dụng arkworks-rs để tính toán các bước 2 và 3 (tính toán rust có thể được tìm thấy trong src / potupdate.rs), nhưng người dùng có thể muốn viết của riêng họ. Toàn bộ quy trình gửi cập nhật có thể được tìm thấy trong bài kiểm tra tích hợp trong tests/integrationtest.rs.
Xin lưu ý rằng chúng tôi đã chọn sử dụng calldata để lưu trữ các tham số powers-of-tau cập nhật trên chuỗi vì nó rẻ hơn vài bậc so với lưu trữ. Dữ liệu này có thể được tìm thấy trong src/query.rs dựa trên ethers-rs.
Cuối cùng, chứng minh và các phương trình chi tiết có thể được tìm thấy trong báo cáo kỹ thuật techreport/main.pdf.
Kế hoạch công việc trong tương lai
Trước khi sử dụng lễ thiết lập đáng tin cậy này trong môi trường sản xuất, chúng tôi khuyên nên thực hiện một cuộc kiểm toán toàn diện về các chứng minh toán học và các triển khai ví dụ.
Khi thực hiện, chi phí giao dịch để cập nhật lễ sẽ tăng theo kích thước thiết lập một cách tuyến tính. Đối với hầu hết các ứng dụng (SNARKs, DAS), chúng tôi hy vọng thiết lập n > = 256, hiện tại chi phí cho mỗi lần cập nhật là 73 đô la.
Chúng tôi có thể đạt được sự gia tăng chi phí xác minh dưới mức tuyến tính thông qua các chứng minh STARK được cập nhật hiệu quả và cam kết vector cho các giá trị cập nhật. Cấu trúc này cũng sẽ loại bỏ sự phụ thuộc vào các hợp đồng đã biên dịch BN254 của Ethereum L1, cho phép sử dụng đường cong BLS12-381 phổ biến hơn.
Tất cả các chiến lược lễ đều đã được cân nhắc và thử nghiệm nhiều lần. Chúng tôi tin rằng cấu trúc này là đáng tin cậy và có tính xác minh và chống kiểm duyệt tốt. Nhưng cũng vậy, trước khi hoàn thành nhiều công việc hơn để xác minh tính hợp lý của phương pháp của chúng tôi, việc sử dụng trực tiếp giải pháp được đề cập trong bài viết này vẫn cần được thực hiện với sự thận trọng cao.













