Các bảng điểm sau đây được tổng hợp từ Fork It Issue 4Let’s Talk About MimbleWimble , để đảm bảo tính đầy đủ của bài đọc, chúng tôi lấy Zhang Ren làm góc nhìn thứ nhất, sắp xếp một số nội dung và bổ sung các chi tiết kỹ thuật trong chương trình (nếu có bất kỳ sự khác biệt nào với nội dung của podcast, nội dung của điều này sẽ được ưu tiên áp dụng). Ngoài ra, nhiều chi tiết nhỏ trong chương trình podcast hoàn chỉnh cũng rất thú vị, mời các bạn bấm vào link để nghe.
Nếu bạn có ý tưởng khác về MimbleWimble, vui lòng thảo luận với chúng tôi trong khu vực nhận xét.
Kết thúc: Xiao Jie, Jin Xiaojia, Hiệu chỉnh: Wan Cenchen, Zhang Ren
Làm quen với MimbleWimble
Khoảng hai năm trước, tôi phát hiện ra giao thức MimbleWimble, lúc đó tôi nghĩ nó rất thú vị và đầy bí ẩn.
Thỏa thuận này được đăng ẩn danh trên Kênh IRC của Bitcoin. Tên của tác giả bút danh là tên của Voldemort và đó là tên của Voldemort trong phiên bản tiếng Pháp của "Harry Potter", được gọi là Tom Elvis Jedusor. Tác giả đã đặt một Dot Onion trong mạng TorLinkcủaBlockstreamcủaAndrew Poelstrachuyên sâuNghiên cứu, chứng minh tính bảo mật của hệ thống MimbleWimble, là sự hoàn thiện thực sự của giao thức này. Do đó, người đề xuất thỏa thuận này có thể ghi công cho Idea và Andrew Poelstra sẽ nhận một nửa công.
Từ quan điểm của các nhà mật mã học, việc lưu trữ tất cả số tiền giao dịch ở dạng văn bản thuần túy trên blockchain là rất bất hợp lý. Hơn nữa, việc lưu trữ vĩnh viễn tất cả các giao dịch đã được chi tiêu trên đĩa cứng để đảm bảo tính bảo mật của chính giao thức cũng là lãng phí.
Và MimbleWimble đã khéo léo kết hợp một số thiết kế trước đó để giải quyết hai vấn đề này, mang đến cho mọi người cảm giác rất thanh lịch.
Xác định MimbleWimble¶
Để hiểu MimbleWimble, trước tiên bạn phải tìm ra vị trí của nó,Định vị của nó là Privacy Cotrong, một loại tiền điện tử có thể hỗ trợ quyền riêng tư rất tốt. Tôi nghĩ rằng chỉ có hai Đồng tiền riêng tư trước MimbleWimble, một có tên là Zcash và một có tên là Monero. Những người khác tự xưng là Privacy Coin không đủ mạnh về công nghệ.
Nhưng Zcash và Monero có cùng một vấn đề: vì quyền riêng tư của họ, cả hai đều cần duy trì một bộ lưu trữ tất cả các đầu ra giao dịch đã được chi tiêu và chúng ta có thể hiểu đó là một "danh sách trống".
Nếu bạn muốn xác minh xem giao dịch mới có phải là giao dịch hợp lệ hay không, trước tiên bạn cần kiểm tra xem đầu vào giao dịch của giao dịch mới có nằm trong "danh sách trống" hay không, nếu đầu vào giao dịch đã có trong "danh sách trống" thì chứng tỏ rằng đầu vào giao dịch đã hết hạn và nếu nó không nằm trong "danh sách trống", điều đó chứng tỏ rằng đầu vào giao dịch là hợp lệ, giao dịch sẽ được công nhận bởi những người khai thác và sau đó những người khai thác sẽ đưa đầu vào giao dịch vào "khoảng trống danh sách".
Vì vậy, đối với Zcash và Monero, cả hai đều phải đối mặt với một vấn đề rất nghiêm trọng - sản lượng giao dịch luôn tăng lên. Nếu một nút đầy đủ của mạng công cộng muốn xác minh xem một giao dịch mới có hợp lệ hay không, nó phải lưu trữ một bộ dữ liệu giao dịch hoàn chỉnh. Khi số lượng giao dịch tích lũy, lượng dữ liệu sẽ ngày càng lớn hơn và nó sẽ trở nên rất không thân thiện khi sử dụng.
Giao thức MimbleWimble không có vấn đề này, nó có khả năng mở rộng tốt hơn Zcash và Monero và có thể đối phó với vấn đề tăng trưởng trạng thái.
Ví dụ: Grin Coin, sử dụng giao thức MimbleWimble, chiếm rất ít dung lượng ổ cứng và nó có thể nén rất nhiều dung lượng ổ cứng bị chiếm bởi các đầu ra giao dịch đã sử dụng.
Nếu bạn chỉ xóa đầu ra giao dịch đã chi, thì khi xác minh tính hợp lệ của khối, bạn không thể xác minh xem khối có hợp lệ hay không, bạn cũng không thể xác minh chữ ký giao dịch. Nhưng vấn đề này không tồn tại trong giao thức MimbleWimble.
Đối với MimbleWimble, sau khi xóa đầu ra giao dịch đã chi tiêu và đầu vào giao dịch tương ứng, việc xác minh toàn bộ biểu đồ giao dịch hoàn toàn không bị ảnh hưởng và tất cả các chữ ký còn lại vẫn hợp lệ. Và sau khi xóa đầu ra giao dịch đã được chi tiêu, toàn bộ chuỗi khối vẫn có thể được xác minh bằng chữ ký và khối lượng công việc.
Bạn có thể hiểu đơn giản đây là một thứ giống như Accumulator, có thể nén nhiều Proof mật mã trong quá khứ thành một bằng chứng nhỏ, hơi giống Merkle Tree nhưng sẽ hiệu quả và năng suất hơn Merkle Tree.
3 quan niệm sai lầm về MimbleWimble
Lầm tưởng 1: Không gian nén = quyền riêng tư tốt hơn?
Nhiều người bán tính năng của không gian lưu trữ đĩa cứng nén của MimbleWimble là tính riêng tư tốt hơn, nhưng trên thực tế nó không đạt được tính riêng tư tốt hơn. Nếu bạn chọn nén dung lượng ổ cứng của mình và những người khác chọn không nén, thì họ vẫn có thể nhận được một biểu đồ giao dịch hoàn chỉnh và họ có thể tìm ra mối quan hệ giao dịch của giao dịch từ đó.
Tất nhiên, khi xóa dung lượng lưu trữ trên đĩa cứng, vẫn cần giữ dữ liệu khối ban đầu của vài ngày gần nhất, vì không biết liệu sẽ có các cuộc tấn công phân nhánh, chi tiêu gấp đôi, v.v. Khi xác định rằng chuỗi đủ dài và dữ liệu sẽ không bị thay đổi, thì không gian đĩa cứng đã được xác định là không bị thay đổi có thể được nén.
Nút đầy đủ trong mạng thường cắt không gian lưu trữ theo mặc định, nhưng mã nguồn cũng có thể được sửa đổi để nó không bị cắt.
Lầm tưởng 2: Một bên có thể từ chối giao dịch không?
Giao thức MimbleWimble có một đặc điểm là phương thức xây dựng giao dịch của nó mang tính tương tác, nghĩa là một giao dịch phải được hoàn thành với sự tham gia của cả hai bên, điều này rất khác so với Bitcoin và Ethereum.
Lấy ví dụ về Grin, thực hiện giao thức MimbleWimble, nếu tôi cung cấp cho sàn giao dịch một khoản tiền và sàn giao dịch không làm bất cứ điều gì, nó sẽ không nhận được tiền. Chỉ khi nó tham gia vào giao thức tương tác với tôi và hoàn thành giao dịch hợp pháp thì nó mới nhận được tiền.
Nếu nó xây dựng giao dịch hợp pháp này với tôi, chứng tỏ nó biết sự tồn tại của giao dịch này, vì vậy nếu không có trao đổi nào đưa tiền cho tôi, tôi có thể nói không, đây cũng là một sự hiểu lầm về MimbleWimble của thế giới bên ngoài.
Hiểu lầm 3: Giao dịch yêu cầu cả hai bên phải trực tuyến cùng lúc?
Giao dịch tương tác này không yêu cầu cả hai bên tham gia giao dịch phải trực tuyến và cả hai bên tham gia giao dịch hoàn toàn có thể gửi email để hoàn tất cấu trúc giao dịch.
Cách đây một thời gian, tôi đã xem bản demo ví của Grin Conf. Ví lưu trữ dữ liệu trung gian trong quá trình xây dựng giao dịch dưới dạng tệp. Đối với người tham gia, anh ta có thể tạo một tệp và sau đó gửi tệp này cho người nhận giao dịch. Sau khi người nhận giao dịch nhận được tệp, anh ta có thể kéo tệp vào ứng dụng khách ví của mình, tạo toàn bộ giao dịch trong ứng dụng khách, sau đó gửi lại cho người gửi giao dịch dưới dạng tệp để hoàn tất việc tạo giao dịch. Do đó, cả hai bên đều phải tham gia, nhưng điều đó không có nghĩa là cả hai bên cần phải trực tuyến cùng một lúc và đó có thể là một quy trình không đồng bộ.
Chi tiết kỹ thuật của MimbleWimble
Bây giờ hãy để tôi nói chi tiết về các chi tiết kỹ thuật của MimbleWimble.
MimbleWimble có ba thành phần cơ bản. Thành phần cơ bản đầu tiên được gọi là CT (Giao dịch bí mật), thành phần cơ bản thứ hai được gọi là Coin Join và thành phần thứ ba được gọi là OWAS (Chữ ký tổng hợp một chiều).
Những gì chúng ta vừa nói là một phần của OWAS. Bây giờ tôi sẽ đơn giản cung cấp cho bạn một tổng quan ngắn gọn bắt đầu từ CT. CT là phức tạp nhất và hai phần còn lại tương đối đơn giản.
Confidential Transaction
Ý tưởng về CT lần đầu tiên được đề xuất bởi Giám đốc điều hành Blockstream Adam Back. Adam Back được biết đến là cha đỡ đầu của Bitcoin vì ông là người phát minh ra thuật toán khai thác Hashcash và ông đã được Satoshi Nakamoto trích dẫn trong bài báo.
Đối với một người khai thác hoặc nút mạng công cộng, họ quan tâm nhất đến việc liệu một giao dịch nhất định có phải là giao dịch hợp lệ hay không và giao dịch đó không gây ra lạm phát trong hệ thống (ví dụ: không có tiền mới được tạo ra, người gửi chi tiêu 50 bitcoin và người nhận người nhận nhận được 50 thay vì 51). Ngoài ra, họ không quan tâm đến số tiền chính xác của giao dịch.
Vì vậy, ý tưởng ban đầu của Giao dịch bí mật là liệu số tiền giao dịch có thể được chuyển đổi thành bản mã hay không, đồng thời đảm bảo rằng tính hợp lệ của giao dịch không bị ảnh hưởng.
Gregory Maxwell là một người đồng sáng lập khác của Blockstream và là một trong năm nhà phát triển cốt lõi đầu tiên của Bitcoin. tình dục.
Giao thức có thể thể hiện đầu vào hoặc đầu ra của mỗi giao dịch dưới dạng sau: (còn gọi là Cam kết Pedersen)
v*G+r*H
(trong đó v là số lượng, r là số ngẫu nhiên đại diện cho yếu tố mù, G là trình tạo 1 và H là trình tạo 2)
Điều này còn được gọi là làm mù số tiền giao dịch và "số tiền" của giao dịch rất dễ hiểu. Bộ tạo 1 và Bộ tạo 2 là hai bộ tạo của mật mã đường cong elip. Trước khi nhân một giá trị với bộ tạo, nó là văn bản thuần túy. Sau khi nhân với bộ tạo, bạn có thể hiểu nó như một nghệ thuật mật mã được mã hóa đơn giản. Hoạt động này là một chiều, mặc dù mọi người đều biết trình tạo là gì, nhưng một khi nó đã được nhân lên thì không thể đảo ngược và không ai biết bản rõ ban đầu là gì. Vấn đề này được gọi là "bài toán logarit rời rạc".
Yếu tố mù là một số ngẫu nhiên do người xây dựng đầu vào hoặc đầu ra của giao dịch lựa chọn, con số ngẫu nhiên này chỉ bạn biết và không thể nói cho người khác biết.
Ưu điểm của việc làm mù mỗi số tiền giao dịch là nó có thể giữ "đồng hình phụ gia”, công thức như sau:
(v1*G + r1*H)+(v2*G + r2*H)=(v1 + v2)*G+(r1 + r2)*H
(trong đó v1 và v2 là số tiền giao dịch 1 và số tiền giao dịch 2, r1 và r2 là hệ số làm mù 1 và hệ số làm mù 2, G là trình tạo 1 và H là trình tạo 2)
Nói một cách đơn giản, việc thêm một số được mã hóa tương đương với việc thêm một số được mã hóa trước khi mã hóa nó.
Điều quan trọng nhất cho đến nay là hiểu được đồng hình phụ gia là gì, tức là cộng trước rồi mã hóa, mã hóa trước rồi cộng, hai chuỗi thao tác khác nhau thu được kết quả giống nhau. Một người không biết số tiền cụ thể vẫn có thể xác minh tính hợp lệ của giao dịch và có thể xác minh rằng tổng của hai số tiền là chính xác.
Khi chúng tôi cần thêm phí giao dịch vào một giao dịch, nó sẽ được chuyển cho những người khai thác ở dạng văn bản thuần túy và không cần thêm các hoạt động mã hóa và giải mã phức tạp đối với phí giao dịch. Công cụ khai thác thêm f*G vào Cam kết Pedersen của đầu ra giao dịch để xác minh xem Cam kết Pedersen của đầu vào giao dịch có thể được cân bằng hay không ( f đại diện cho số tiền phí giao dịch).
Điểm kiến thức: Cam kết Pedersen: Thay thế giá trị đầu ra giao dịch chưa chi tiêu (UTXO) được biểu thị bằng văn bản thuần túy bằng Cam kết được mã hóa, tức là giúp mọi người có thể xác minh tính hợp lệ của giao dịch mà không tiết lộ giá trị giao dịch.
Tóm tắt ngắn gọn hai lợi ích của đồng hình cộng phụ gia, một là không cần giải mã và tính hợp lệ của giao dịch có thể được xác minh mà không cần biết số tiền giao dịch cụ thể, hai là nó có thể được tính trực tiếp với phí giao dịch ở dạng đơn giản văn bản và những người khai thác có thể trực tiếp xem thu nhập của chính họ và có thể xác minh rằng phương trình này là hợp lệ.
Một điểm nữa là người gửi giao dịch và người nhận giao dịch không biết yếu tố mù của nhau, nghĩa là người đầu vào của giao dịch không biết yếu tố mù của người xuất và người xuất của giao dịch không biết yếu tố làm mù của yếu tố làm mù đầu vào, nhưng họ biết số tiền giao dịch.
Kết quả của việc này là số tiền giao dịch ở cả hai vế của phương trình có thể được bù đắp bằng cách cân bằng, nhưng không thể bù đắp yếu tố mù. Nếu bạn trừ đầu ra khỏi đầu vào, bạn sẽ có một thuật ngữ:
(ro-ri)*H
(ro là tổng các thừa số mù của đầu ra giao dịch, ri là tổng các thừa số mù của đầu vào giao dịch và H là bộ tạo 2)
Chúng ta có thể gọi nó là "phần còn lại".
Lưu ý: Việc (ro-ri)*H hay (ri-ro)*H có bằng phần còn lại hay không là không quan trọng, tùy thuộc vào các lựa chọn cụ thể của dự án.
Trong Giao dịch bí mật của MimbleWimble, để chứng minh rằng giao dịch này không được xây dựng một cách bừa bãi (cả nhà xuất khẩu và nhà nhập khẩu giao dịch đều biết các yếu tố che mắt của chính họ và không sử dụng đầu ra giao dịch của người khác để xây dựng giao dịch của riêng họ), cần phải có một cách để gỡ rối.
Nó tương đối đơn giản trong Bitcoin, đó là ký trực tiếp toàn bộ giao dịch bằng khóa riêng của bạn, chứng minh rằng bạn đã tham gia và thực hiện giao dịch.
Nhưng phương pháp MimbleWimble là mới lạ - bạn chỉ cần chứng minh rằng bạn biết sự khác biệt về yếu tố mù quáng.
(Lưu ý: Sự khác biệt về hệ số làm mù ở đây là "tổng của các yếu tố làm mù đầu ra của giao dịch - tổng của các yếu tố làm mù đầu vào của giao dịch", đó là khái niệm tương tự bên dưới)
Bởi vì nhà nhập khẩu và nhà xuất khẩu chỉ biết yếu tố che khuất của chính họ chứ không biết yếu tố che khuất của bên kia, nên họ cần có một thỏa thuận để cùng nhau chứng minh rằng sự khác biệt giữa yếu tố che khuất có thể được tính bằng cách cộng kiến thức của hai người lại với nhau. Điều này tương đương với việc trực tiếp ký toàn bộ giao dịch, có thể chứng minh rằng tôi không xây dựng giao dịch một cách bừa bãi.
Nói cách khác, nếu tôi có thể chứng minh rằng tôi biết sự khác biệt về yếu tố mù quáng, thì tôi cũng hoàn thành việc ký giao dịch được ủy quyền mà không cần ký giao dịch bằng khóa cá nhân đã nhập.
Trên thực tế, trong MimbleWimble, sự khác biệt về yếu tố gây mù được sử dụng để ký một chuỗi cố định, chẳng hạn như 0, để chứng minh rằng tôi biết sự khác biệt về yếu tố gây mù, sau đó tôi xuất bản các mục còn lại cùng một lúc.
Cốt lõi của đoạn văn trên là kiến thức về sự khác biệt của yếu tố mù quáng có thể thay thế khóa riêng tư trong giao dịch truyền thống của Bitcoin.
Có một điểm bổ sung, chúng ta cần phải có Range Proof.
Đối với phần số tiền, bạn cần chứng minh rằng không có số âm trong phần số tiền, vì chúng tôi không muốn ai đó tạo giao dịch trong đó đầu vào giao dịch là 1 và đầu ra giao dịch là 2 và -1, điều này sẽ tạo ra một số tiền ra khỏi không khí mỏng.
Để chứng minh rằng không có số âm trong tất cả các đầu ra của giao dịch này, mỗi đầu ra của giao dịch cần phải có Bằng chứng phạm vi, một bằng chứng không có kiến thức ngắn, để chứng minh rằng tất cả các đầu ra của giao dịch đều nhỏ hơn một ngưỡng nhất định và đều tích cực.
Để cung cấp cho bạn một khái niệm trực quan, bản mã được mã hóa của mỗi đầu ra giao dịch là khoảng 33 Byte, nhưng Bằng chứng phạm vi hiện là khoảng 5 KB và đây đã là một kết quả được tối ưu hóa, bởi vì Bằng chứng phạm vi tương đương với bằng chứng không có kiến thức, đó là khó làm cho ngắn hơn.
Gregory Maxwell đã tạo ra phiên bản đầu tiên củaConfidential Transaction, anh ấy đã hoàn thiện Range Proof, và sau đó Benedikt Bünz, một sinh viên của Đại học Stanford, đã đề xuất một phiên bản cải tiến của Range Proof, ngắn hơn so với Range Proof ban đầu của Gregory và có tốc độ xác minh nhanh hơn. Phiên bản cải tiến của Range Proof được gọi làBulletproofs, được công bố trong cuộc họp top 1 trong lĩnh vực an toàn thông tin. Bulletproofs làm cho RangeProof nhỏ hơn nhiều, kích thước khoảng 700 Byte.
Pieter Wuille và Gregory Maxwell đều là tác giả của bài viết này. Họ đã giúp Benedikt hoàn thành việc triển khai và thử nghiệm Bulletproofs, điều đó cũng có nghĩa là những tiến bộ mới nhất về mật mã được áp dụng trực tiếp vào cấu trúc Giao dịch bí mật của MimbleWimble.
Bây giờ chúng ta hãy xem lại phần đầu tiên một cách ngắn gọn. MimbleWimble có ba thành phần cơ bản. Đầu tiên là Giao dịch bí mật, thực hiện mã hóa số tiền và trực tiếp sử dụng sự khác biệt về yếu tố mù để ký khóa riêng nhằm chứng minh kiến thức của nó về các mục còn lại, thay thế Theo truyền thống, khóa riêng đầu vào được sử dụng để ký trực tiếp và Bằng chứng phạm vi cũng được đính kèm với Giao dịch bí mật.
Coin Join
Bây giờ chúng ta bắt đầu nói về Coin Join, thành phần thứ hai của MimbleWimble.
Ý tưởng của Coin Join rất đơn giản, khi tôi có hai giao dịch, bên trái và bên phải của mỗi phương trình giao dịch có thể được cân bằng:Cộng vế trái và vế phải của hai phương trình giao dịch với nhau vẫn là giao dịch hợp pháp. Giả sử một giao dịch có đầu vào 1 và đầu ra 1 và một giao dịch khác có đầu vào 2 và đầu ra 2. Chúng tôi xây dựng một giao dịch mới, có hai đầu vào, đầu vào 1 và đầu vào 2, và hai đầu ra, đầu ra 1 và đầu ra 2, đây cũng là một giao dịch hợp pháp.
Coin Join lần đầu tiên được đề xuất bởi Gregory Maxwell, đây là một giải pháp để bảo mật tốt hơn trong những ngày đầu của Bitcoin.
Nhưng khi Gregory Maxwell đề xuất giao thức Coin Join, mọi người đều có một câu hỏi lớn, đó là chỉ có một phương pháp cân bằng cho từng đầu vào và từng đầu ra của một giao dịch. Ví dụ đầu vào của một giao dịch là 8 BTC, đầu ra là 3 và 5, và đầu vào của một giao dịch khác là 20 BTC, đầu ra là 10 và 10, ta đặt đầu vào và đầu ra của 2 giao dịch này với nhau, mọi người có thể vẫn có thể thấy rằng đầu ra nào tương ứng với đầu vào nào trước, vì vậy bản thân Coin Join không cung cấp nhiều quyền riêng tư
Nhưng khi nó được kết hợp với Giao dịch bí mật để mã hóa tất cả đầu vào và đầu ra của giao dịch, nó có thể mang lại sự riêng tư rất tốt.
Giao thức Coin Join rất đơn giản nhưng sẽ có vấn đề trong việc kết nối trực tiếp nó với CT Nếu chúng ta sử dụng phương thức chữ ký truyền thống (hiệu lực của mỗi giao dịch được ký bằng khóa riêng tương ứng với khóa chung đã nhập trong giao dịch) , chúng ta Hoàn toàn có thể xác định đầu vào nào tương ứng với đầu ra nào dựa trên địa chỉ được sử dụng cho chữ ký.
Do đó, Coin Join cộng với Giao dịch bí mật đương nhiên phải chọn một phương thức chữ ký khác, đó là trực tiếp sử dụng các mục còn lại làm khóa chung, sử dụng sự khác biệt của hệ số mù làm khóa riêng và sử dụng cặp khóa công khai-riêng tư này để dấu 0. Điều này giải quyết tình huống đầu vào và đầu ra có thể được liên kết trực tiếp thông qua chữ ký của giao dịch.
Zcash có thể triển khai các hợp đồng thông minh cho bằng chứng không kiến thức trong tương lai, nhưng nó sẽ rất chậm. Trong kịch bản Tiền mặt, cá nhân tôi nghĩ rằng Bitcoin hỗ trợ hợp đồng thông minh là đủ, bởi vì Bitcoin có một số chức năng xác minh cơ bản, chúng ta có thể sắp xếp và kết hợp các chức năng này để hoàn thành nhiệm vụ xác minh theo yêu cầu của nhiều hợp đồng thông minh trong thế giới thực.
Khả năng hỗ trợ hợp đồng thông minh của Grin Coin tại thời điểm thiết kế kém hơn so với Bitcoin và Zcash. Nhưng điều này cũng thúc đẩy các nhà nghiên cứu suy nghĩ về cách triển khai hợp đồng thông minh trong một hệ thống không có định danh địa chỉ và nhiều giao dịch sẽ bị xóa.
Có một vấn đề khác với Coin Join, tôi đã đề cập trước đó là 0 được ký, nếu nó thực sự được ký 0, bạn có thể trực tiếp cộng hai chữ ký lại với nhau để tạo thành một chữ ký hợp pháp mới. Tuy nhiên, trong quá trình vận hành thực tế của giao thức, người ta thấy rằng việc sử dụng 0 làm chữ ký là không tốt mà nên ký một trường có định dạng cố định.
Vì đối tượng của mỗi chữ ký giao dịch là khác nhau nên không thể cộng trực tiếp các chữ ký này lại với nhau. Vậy làm cách nào để có thể kết nối các giao dịch với nhau bằng Coin Join để tạo thành một giao dịch khổng lồ mà không ảnh hưởng đến việc xác minh giao dịch? Sau khi kết nối với nhau, có cách nào để chúng ta cấu trúc lại đầu vào giao dịch nào tương ứng với đầu ra giao dịch nào không?
One Way Aggregate Signatures
Điều này liên quan đến công nghệ thứ ba của ông, được gọi là One Way Aggregate Signatures, chữ ký tổng hợp một chiều.
Chữ ký tổng hợp một mục chia chênh lệch x của yếu tố làm mù thành hai mục x1 và x2, trong đó x1*H được công khai dưới dạng khóa công khai. Tất nhiên, bản thân x1 không công khai và cần có chữ ký để chứng minh rằng tôi biết x1. x2 được công khai trực tiếp, chứng tỏ rằng tôi cũng biết x2 . x1*H + x2*H bằng với phần còn lại trước đó.
Bây giờ sau khi tách sự khác biệt giữa các hệ số mù thành hai mục, x1*H được gọi là Kernel Excess, x2 được gọi là Kernel Offsets và Kernel Offsets là phần bù.
Lợi ích của việc chia sự khác biệt của một yếu tố mù thành hai phần là gì?
Khi tất cả các giao dịch trong một khối tạo thành một giao dịch Coin Join lớn, các Kernel Offset được tiết lộ dưới dạng văn bản thuần túy có thể được cộng trực tiếp với nhau, do đó loại bỏ thông tin của từng giao dịch.
Đối với những phần cần được ký, vì các phần đã ký không phải tất cả đều được ký bằng 0 mà là chữ ký trường cố định, chúng không thể được tổng hợp lại với nhau và những chữ ký này cần được lưu trữ riêng. Điều đó có nghĩa là, tất cả các Kernel Offset được cộng lại với nhau và chỉ một Kernel Offset được lưu trữ trong một khối, nhưng Kernel Excess vẫn được lưu trữ riêng. Kernel Excess và chữ ký của trường cố định sử dụng x1 được lưu trữ trong Kernel của mỗi giao dịch.
Ưu điểm của việc này là khi bạn nhận được một khối giao dịch Coin Join khổng lồ, bạn có thể kết hợp lại các mục tổng hợp của Kernel Offsets và tất cả các chữ ký để xác minh rằng tất cả các giao dịch trong khối này là hợp lệ. Và bởi vì Phần bù hạt nhân đã được kết hợp, nên không có cách nào để tách rời phần Phần bù đã thêm. Chúng tôi không có cách nào để biết mỗi chữ ký tương ứng với đầu vào và đầu ra nào, vì vậy Chữ ký tổng hợp một chiều được triển khai.
Để tôi giải thích lại, chức năng cơ bản của Chữ ký tổng hợp một chiều là khi bạn nhận được nhiều đầu vào và đầu ra của giao dịch trong một khối, bạn không có cách nào để đánh giá đầu vào và đầu ra của giao dịch nào ban đầu là một giao dịch. Phương pháp của nó là chia sự khác biệt về yếu tố mù quáng của mỗi giao dịch thành hai phần, một là chứng minh rằng tôi biết nó bằng chữ ký, hai là trực tiếp công bố văn bản thuần túy để chứng minh rằng tôi biết nó. Đối với mục xuất bản trực tiếp bản rõ, đối với tất cả các giao dịch, chúng có thể được cộng trực tiếp với nhau.
Ở đây tôi sẽ thêm khái niệm Cut Through.
Bởi vì tất cả các đầu ra giao dịch đã được chi tiêu xuất hiện một lần ở phía bên trái của phương trình trong khối và một lần nữa ở phía bên phải, chúng ta có thể gạch bỏ các số hạng ở cả hai phía của phương trình. Khái niệm Cắt xuyên là đầu ra giao dịch đã được sử dụng có thể bị xóa trong khối. Khi có nhiều khối, chúng ta có thể xóa đầu vào và đầu ra giao dịch của các giao dịch khác nhau giữa các khối để đạt được nén Mục đích lưu trữ đĩa cứng không gian.
Tuy nhiên, Mimblewimble sẽ có một số điểm khó tổng hợp. Một là Bằng chứng phạm vi của tất cả các đầu ra giao dịch. Theo thời gian, sẽ có ngày càng nhiều UTXO trong hệ thống Mimblewimble và mỗi đầu ra giao dịch đều có Bằng chứng phạm vi riêng. Bằng chứng, để chứng minh rằng đầu ra của tôi là không âm.
(Lưu ý: UTXO không tăng đều theo thời gian. Điều được thể hiện ở đây là khi thời gian trôi qua, số lượng người dùng tăng lên và UTXO cũng tăng lên.)
Khi bạn cần xác minh tính hợp lệ của UTXO, bạn cần tính toán các Bằng chứng phạm vi này từ đầu đến cuối, tương đương với nhiều thời gian và dung lượng lưu trữ hơn để xác minh tính hợp lệ của một đầu ra giao dịch so với Bitcoin.
Do đó, nút cổ chai của không gian lưu trữ và tính toán Mimblewimble là Bằng chứng về Phạm vi. Ngoài ra, sau khi yếu tố mù được chia thành hai mục, mỗi giao dịch mới có chữ ký riêng và mục không thể tổng hợp này không thể được nén.
Khi bạn duyệt toàn bộ chuỗi khối, nó cũng sẽ ảnh hưởng đến thời gian xác minh và trên đây là hai mục ảnh hưởng nhiều nhất đến Scaling.
Triển khai cụ thể MimbleWimble - Grin
Tiếp theo, hãy nói về triển khai cụ thể của MimbleWimble—Grin, có thuật toán khai thác được gọi là Chu kỳ Cuckoo.
Nói một cách đơn giản, Cuckoo Cycle là hai bảng băm rất dài, mỗi bảng có nhiều nút và nhiều luồng được kết nối giữa hai bảng băm theo cách giả ngẫu nhiên.
Bảng băm 1 chỉ có thể được kết nối với bảng băm 2 và bảng băm 2 chỉ có thể được kết nối với bảng băm 1. Các phần tử của bảng 1 không thể được kết nối và các phần tử của bảng 2 không thể được kết nối.
Bản thân câu đố là tìm một đường tròn có độ dài chính xác là 42, tức là nút A trong bảng 1 được nối với nút B trong bảng 2, nút B trong bảng 2 được nối với nút C trong bảng 1, v.v. một vòng tròn có chiều dài là 42.
Mục đích ban đầu của thiết kế này là cho phép chính Câu đố chiếm nhiều không gian bộ nhớ nhất có thể trước khi bắt đầu giải nó.
Vì muốn biết điểm nào trong bảng 1 nối với nút nào trong bảng 2 thì cách tốt nhất là đếm hết các cạnh trước, lưu vào một cấu trúc dữ liệu nào đó, rồi tìm kiếm trong cấu trúc dữ liệu này, sao cho có thể đảm bảo rằng cần phải mở một không gian bộ nhớ lớn trước khi tìm kiếm, để tránh việc tính toán Câu đố chỉ liên quan đến việc sử dụng CPU và mục đích ban đầu của không gian bộ nhớ lớn cũng là gây ra những khó khăn nhất định cho ASIC.
Nhưng với sự phát triển của thời gian, mọi người đều nhận ra rằng ASIC dù sao cũng sẽ tồn tại, vì vậy một số cải tiến đã được thực hiện dựa trên thuật toán tốt nhất để giải quyết vấn đề này vào thời điểm đó, do đó, Puzzle cũng có thể được tính bằng ASIC. Nó sẽ chọn một giao thức không thân thiện lắm với ASIC ở giai đoạn đầu của giao thức, nhưng sau hai năm, nó sẽ được thay thế hoàn toàn bằng một phiên bản giao thức cải tiến rất thuận tiện cho ASIC.
Đây là một điểm nữa, với tư cách là một sinh viên của các nhà mật mã học (tôi không phải là nhà mật mã học, nhưng sếp của tôi thì có), điều gây sốc nhất về Cuckoo Cycle là khi bắt đầu thiết kế, nó chỉ có trực giác và không có toán học. bằng chứng mà thuật toán phải là nhanh nhất. Tất cả các thuật toán để giải Chu kỳ cúc cu này đã được thảo luận khi Chu kỳ cúc cu đã nổi tiếng.
Vì vậy, khi không có bằng chứng toán học, hoàn toàn có thể xảy ra trường hợp một người đột nhiên phát minh ra một thuật toán đặc biệt nhanh để giải Chu kỳ Cuckoo, để tất cả Grin Coin đều do một mình anh ta đào được. Đây cũng là vấn đề của Grin ở thời điểm hiện tại
Đây cũng là một bài học cho tôi. Vào năm 2013, tôi đã dành một năm để cố gắng thiết kế thuật toán PoW của riêng mình, thuật toán này rất gần với Chu kỳ Cuckoo, nhưng điều khiến tôi đau khổ vào thời điểm đó là tôi không thể tìm ra bằng chứng toán học rằng một thuật toán nhất định phải giải Câu đố Đó là nhanh nhất, vì vậy tôi không bao giờ đăng bài viết cuối cùng. Bây giờ nghĩ lại, tôi rất tiếc, vì loại ý tưởng non nớt này có thể được ném ra để mọi người thảo luận, có thể một số ý kiến hay có thể được thảo luận, và không phải mọi thứ đều cần được chứng minh bằng toán học.
Vì vậy, khi tôi nghe nói về thiết kế của Cuckoo Cycle cách đây một thời gian, tôi đã rất xúc động.
Cho đến nay, các chi tiết về MimbleWimble đã được đề cập.
Pick Time
Trong buổi chia sẻ cuối cùng, tôi xin chia sẻ với các bạn kinh nghiệm du học Tiến sĩ tại Bỉ, hy vọng sẽ truyền cảm hứng cho các bạn quan tâm đến học thuật.
Đề nghị đọc:
Đề nghị đọc:
Bài báo phân tích bảo mật đồng thuận của Zhang Ren"Phát triển các tiêu chí chung: Đánh giá tính bảo mật của các giao thức đồng thuận PoW"
Zhang Ren đã phân tích các bài báo về giao thức đồng thuận từ góc độ sử dụng băng thông"Giao thức đồng thuận Nervos CKB NC-Max: Vượt qua giới hạn của thông lượng đồng thuận Nakamoto"
