V God: Khi chúng tôi xác minh chuỗi khối, chúng tôi đang làm gì?
Lưu ý của biên tập viên: Bài viết này đến từNhững người đam mê Ethereum (ID: ethfans)Lưu ý của biên tập viên: Bài viết này đến từ
Những người đam mê Ethereum (ID: ethfans)
, Tác giả: Vitalik, bản dịch & hiệu đính: Elisa & A Jian, được Odaily tái bản với sự ủy quyền.
Nhưng trong thực tế, chúng ta thực sự cần bao nhiêu trình xác nhận? Một trăm nút xác thực độc lập? một nghìn? Chúng ta có cần phải có mọi người bình thường trên thế giới chạy phần mềm để kiểm tra tất cả các giao dịch không? Trả lời những câu hỏi này là thách thức của chúng tôi, đặc biệt nếu chúng tôi muốn xây dựng một chuỗi khối với cơ chế đồng thuận có lợi hơn so với bằng chứng công việc Nakamoto chuỗi đơn. Việc giải quyết những câu hỏi này đặc biệt quan trọng.
tiêu đề phụ
tại sao xác minh
Mô tả hình ảnh
Có hai lợi ích chính của việc người dùng xác thực chuỗi khối. Trước hết, điều này có thể cho phép các nút tham gia vào quá trình xác định chuỗi hợp pháp (nghĩa là chuỗi được toàn bộ cộng đồng chấp nhận và có tính hợp pháp) ở mức độ lớn nhất. Nói chung, một chuỗi hợp pháp được định nghĩa là "chuỗi khối hợp lệ được hỗ trợ bởi hầu hết các công cụ khai thác hoặc trình xác thực", chẳng hạn như "chuỗi hợp lệ dài nhất" trong Bitcoin. Các chuỗi không hợp lệ theo định nghĩa bị từ chối và nếu nhiều chuỗi hợp lệ cạnh tranh, thì chuỗi có nhiều công cụ khai thác hoặc hỗ trợ trình xác thực nhất sẽ thắng. Vì vậy, nếu bạn chạy một nút xác minh tính hợp lệ của tất cả các khối, bạn sẽ có thể phát hiện chuỗi nào hợp lệ và chuỗi nào không, điều này sẽ tối đa hóa cơ hội phát hiện chuỗi hợp pháp của bạn.
Nhưng thực sự có một lợi ích sâu sắc hơn đối với người dùng xác thực chuỗi khối. Nếu một tác nhân quyền lực cố gắng khiến mạng chấp nhận thay đổi giao thức (chẳng hạn như thay đổi đợt phát hành) và có phần lớn người khai thác ủng hộ điều đó, thì cuộc tấn công có thể dễ dàng thực hiện mà không cần bất kỳ ai khác xác thực chuỗi khối. Và, tất cả khách hàng sẽ chấp nhận chuỗi mới này theo mặc định. Khi mọi người tỉnh táo và nhận ra điều này, họ chỉ có thể dựa vào đối thủ để từ chối chuỗi mới này thông qua sự phối hợp. Nhưng nếu người dùng thông thường cũng tham gia xác minh, thì tình hình sẽ hoàn toàn khác và những kẻ tấn công cố gắng thay đổi giao thức cần thuyết phục người dùng đã xác minh tích cực tải xuống các bản vá phần mềm của họ để thay đổi giao thức.
Nếu có đủ người dùng tham gia xác thực, thì khi ai đó cố gắng thực hiện thay đổi gây tranh cãi đối với giao thức, mặc định sẽ không thành công mà là nhầm lẫn. Sự hỗn loạn tự nhiên cũng sẽ gây ra thiệt hại cho mạng lưới, đòi hỏi sự phối hợp xã hội bên ngoài cấp độ giao thức để giải quyết, nhưng nó cũng đặt ra một trở ngại lớn hơn trước những kẻ tấn công, khiến chúng không thể tự tin rằng mình có thể thành công trong một đòn rồi bỏ đi làm giảm đáng kể sự sẵn sàng tấn công của họ. Nếu đa số người dùng tham gia xác minh trực tiếp hoặc gián tiếp và kẻ tấn công chỉ nhận được sự hỗ trợ của đa số thợ mỏ, thì cuộc tấn công đương nhiên sẽ thất bại, đó là kết quả tốt nhất cho tất cả mọi người.
tiêu đề phụ
Phối cảnh được xác định so với phối cảnh hợp tác
Cần lưu ý rằng logic của lập luận trên rất khác với một loại lập luận khác mà chúng ta thường nghe: họ nói rằng miễn là chuỗi thay đổi các quy tắc của giao thức, thì nó sẽ không phải là chuỗi hợp pháp "theo định nghĩa", và điều quan trọng Vấn đề không phải là có bao nhiêu người dùng sẵn sàng nhận bộ quy tắc mới, mà là bạn luôn có thể duy trì chuỗi bằng cách sử dụng các quy tắc cũ mà bạn muốn.
Hãy xem ví dụ này từ Gavin Andresen thảo luận về vấn đề này từ "quan điểm định nghĩa":
"Bitcoin" là một sổ cái giao dịch ghi lại, dưới dạng một chuỗi khối, các giao dịch được ký kết hợp pháp chi tiêu các khoản tiền chưa được sử dụng trước đó. Chuỗi bắt đầu với khối genesis, có hàm băm là 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f, khối này phát hành 21 triệu bitcoin trên chuỗi đã tích lũy được nhiều bằng chứng công việc SHA256 kép nhất theo lịch trình định trước.
Một định nghĩa khác từ ví Wasabi, giải thích đơn giản hơn về giá trị của một nút đầy đủ:
Khi chạy một nút đầy đủ của Bitcoin, bạn có thể xác định các quy tắc tiền tệ chính xác mà bạn đồng ý. Không ai có thể ép buộc bạn. Do đó, bất kỳ thực thể tự trị nào theo đuổi tự do tài chính nên chạy một nút đầy đủ. Sau khi xác định các quy tắc của riêng mình, phần mềm nút đầy đủ có thể tìm thấy các nút đáp ứng các quy tắc của chúng tôi trong mạng ngang hàng Bitcoin. Các nút này gửi cho chúng tôi các giao dịch mà chúng đánh giá là hợp lệ theo quy tắc của chúng và chúng tôi xác minh chúng theo quy tắc của chúng tôi. Nếu chúng tôi nhận được một giao dịch không đáp ứng các quy tắc, chúng tôi có thể đánh dấu giao dịch đó là giao dịch không hợp lệ và ngắt kết nối khỏi nút nguồn của giao dịch không hợp lệ.
tiêu đề phụ
Khẳng định chủ quyền tiền tệ của bạn
Việc sử dụng một nút đầy đủ mang lại cho chúng tôi sức mạnh để xác định, xác thực và thực thi các quy tắc về tiền tệ Bitcoin của chúng tôi.
Chúng ta nên chú ý đến hai điểm cốt lõi ở góc độ “định nghĩa”:
Điều quan trọng nhất là bạn tuân theo chuỗi tuân theo các quy tắc của riêng bạn.
Theo quan điểm của bạn, bạn vẫn có đồng tiền trong hệ thống được xây dựng trên cơ sở các quy tắc mà bạn đồng ý, nhưng vậy thì sao? Không ai khác chấp nhận tiền tệ của bạn nữa. Sàn giao dịch sẽ không chấp nhận nó, trang web có thể hiển thị giá tăng vọt cho loại tiền mới, nhưng đó là loại tiền trên chuỗi với phần lớn người dùng và loại tiền của bạn sẽ trở nên vô giá trị. Tiền điện tử và chuỗi khối về cơ bản là các cấu trúc xã hội. Chúng là vô nghĩa nếu không ai khác tin vào chúng.
Vậy chúng ta nên nhìn vấn đề này từ góc độ nào? Trung tâm của quan điểm này là chuỗi khối như một ví dụ về khai thác các vấn đề phối hợp để đạt được bảo mật.
Nhìn chung, các vấn đề đối chiếu trong thế giới thực rất khó: mặc dù đối với hầu hết mọi người, sẽ tốt hơn nếu tiếng Anh thay đổi hệ thống chính tả phức tạp và bất thường của nó thành chính tả ngữ âm; mặc dù sẽ tốt hơn nếu Hoa Kỳ chuyển sang hệ mét Tốt; trong khi suy thoái kinh tế sẽ tốt hơn nếu chúng ta cắt giảm 10% tất cả giá cả và tiền lương cùng một lúc, trên thực tế, điều này sẽ yêu cầu mọi người đồng ý với những thay đổi này, điều này sẽ rất khó đạt được.
Nhưng trong ứng dụng của blockchain, vấn đề phối hợp đã trở thành lợi thế của chúng tôi. Chúng tôi khai thác xung đột do các vấn đề phối hợp gây ra để ngăn chặn hành vi sai trái của những người chơi cốt lõi. Chúng tôi có thể xây dựng các hệ thống có thuộc tính X và đảm bảo rằng thuộc tính X sẽ được giữ nguyên, bởi vì việc thay đổi quy tắc từ thuộc tính X thành không phải X yêu cầu nhiều người đồng ý và cập nhật phần mềm của họ cùng một lúc. Ngay cả khi một tác nhân duy nhất có thể buộc phải thay đổi, anh ta sẽ khó làm như vậy hơn nhiều so với việc các đối thủ tích cực phối hợp chống lại sự thay đổi.
chữ
Chúng ta nên chú ý đến những hậu quả đặc biệt của việc giữ quan điểm này: mục đích của việc chạy một nút đầy đủ không chỉ là để bảo vệ lợi ích của chính nó. không phải không có nút đầy đủ. Ở một mức độ lớn hơn, đây có thể được coi là một loại miễn dịch bầy đàn, càng nhiều người xác minh, mọi người càng an toàn và ngay cả khi chỉ một số người xác minh, mọi người đều có thể nhận được mức độ bảo vệ cao hơn.
tiêu đề phụ
Một cuộc thảo luận chuyên sâu về "xác nhận"
Mặc định gây ra lỗi > Mặc định gây nhầm lẫn > Mặc định thành công
"Dấu hiệu lớn hơn" ở đây có nghĩa là cái trước tốt hơn cái sau. Trường hợp tốt nhất là cuộc tấn công thất bại trực tiếp, trường hợp kém tối ưu là cuộc tấn công dẫn đến nhầm lẫn và mọi người không thể thống nhất về chuỗi pháp lý, và trường hợp xấu nhất là cuộc tấn công thành công. Tại sao tạo ra hỗn loạn lại tốt hơn nhiều so với thành công trong một cuộc tấn công? Nó liên quan đến các ưu đãi, sự nhầm lẫn cũng gây ra cái giá phải trả cho kẻ tấn công, khiến chúng không tin tưởng rằng cuộc tấn công sẽ thành công, do đó làm giảm động cơ để kẻ tấn công thực hiện một cuộc tấn công. Môi trường dẫn đến hỗn loạn một cách tự nhiên có nghĩa là những kẻ tấn công cần phải giành chiến thắng trong cuộc chiến blockchain (khởi động thành công cuộc tấn công 51%) và giành chiến thắng trong "cuộc chiến dư luận" để thuyết phục toàn bộ cộng đồng tuân theo chuỗi tấn công. Điều này làm cho một cuộc tấn công trở nên khó khăn hơn và ít lợi nhuận hơn so với việc chỉ tung ra một cuộc tấn công 51% được đảm bảo thành công.
Mục tiêu của việc xác minh là chuyển một cuộc tấn công từ trạng thái tự nhiên thành công sang trạng thái tự nhiên thất bại (tối ưu) hoặc sang trạng thái tự nhiên dẫn đến nhầm lẫn (dưới mức tối ưu). Nếu bạn chạy một nút xác thực đầy đủ tất cả các khối và kẻ tấn công cố gắng khiến mạng chấp nhận một chuỗi có các quy tắc khác, thì cuộc tấn công sẽ thất bại. Nếu một số người dùng chạy xác thực các nút đầy đủ và nhiều người thì không, thì cuộc tấn công có thể dẫn đến hỗn loạn. Nhưng chúng ta vẫn phải suy nghĩ, có cách nào khác để đạt được hiệu quả tương tự không?
Khách hàng nhẹ và bằng chứng gian lận
Một cách tiếp cận tốt hơn đương nhiên là sử dụng một khách hàng nhẹ có bằng chứng gian lận. Hầu hết các ứng dụng khách blockchain nhẹ hiện tại chỉ xác minh rằng phần lớn các công cụ khai thác hỗ trợ một khối cụ thể, chứ không phải các quy tắc giao thức được thỏa mãn. Hoạt động bình thường của những khách hàng này giả định rằng phần lớn những người khai thác đều trung thực. Khi một fork gây tranh cãi xảy ra, những khách hàng như vậy sẽ tự nhiên đi theo xu hướng và người dùng cần thực hiện các biện pháp chủ động để duy trì chuỗi thiểu số theo các quy tắc cũ. Vì vậy, đối với khách hàng ánh sáng hiện tại để phát động một cuộc tấn công, kẻ tấn công tự nhiên có thể thành công. Nhưng với công nghệ chống gian lận, tình hình hoàn toàn khác.
Nói một cách đơn giản, bằng chứng gian lận hoạt động như sau. Nói chung, một khối duy nhất trong chuỗi khối sẽ chỉ đề cập đến một phần nhỏ "trạng thái" của chuỗi khối (số dư tài khoản, mã hợp đồng thông minh...). Nếu một nút đầy đủ xử lý một khối và thấy rằng nó không hợp lệ, thì nó có thể tạo một gói dữ liệu (tức là bằng chứng gian lận) và phát nó tới ứng dụng khách nhẹ. Gói dữ liệu chỉ bao gồm khối và đủ dữ liệu để xử lý khối, sau khi nhận được gói dữ liệu, light client có thể tự xác minh khối mà không yêu cầu dữ liệu khác trên chuỗi.
Kỹ thuật này đôi khi được gọi là xác minh không trạng thái Khách hàng chỉ có thể ghi lại các tiêu đề khối mà không ghi lại dữ liệu trạng thái chuỗi khối hoàn chỉnh và có thể xác minh trong thời gian thực bằng cách yêu cầu bằng chứng Merkle về các mục trạng thái tùy ý từ các nút khác.
sự phân mảnh
Điểm mạnh của kỹ thuật này là light client sẽ chỉ xác minh một khối duy nhất sau khi nhận được cảnh báo (cảnh báo cũng có thể xác minh được, nếu light client phát hiện cảnh báo sai, họ có thể ngừng nghe cảnh báo của nút), vì vậy, trong các trường hợp bình thường, các ứng dụng khách nhẹ vẫn nhẹ và chỉ kiểm tra những khối nào được hỗ trợ bởi phần lớn các công cụ khai thác hoặc trình xác thực. Tuy nhiên, trong những trường hợp đặc biệt, nếu chuỗi có phần lớn mọi người chứa một khối mà ứng dụng khách nhẹ không chấp nhận, miễn là có ít nhất một nút đầy đủ trung thực xác minh khối có vấn đề, thì có thể biết rằng khối đó không hợp lệ và phát bằng chứng gian lận sao cho các nút khác trong mạng cũng từ chối nó.
tiêu đề phụ
sự phân mảnh
Ngoài ra, một điểm khác rất quan trọng: trong hệ thống sharding, ngưỡng tạo khối (không chỉ xác minh) là rất thấp và thậm chí nó có thể được thực hiện trên máy tính xách tay gia đình. Cốt lõi của mạng không dựa vào phần cứng hiệu suất cao, điều này đảm bảo rằng ngưỡng để phe đối lập là thiểu số đủ thấp, điều này khiến giao thức chiếm đa số khó bị biến thành một "cuộc tấn công tự nhiên thành công". " trạng thái của kẻ tấn công (buộc người khác tuân theo cuộc tấn công của nó).
Đây cũng là ý nghĩa của việc kiểm tra trong thế giới thực: không phải lúc nào mọi người cũng xác minh mọi thứ, nhưng trước tiên, có đủ người kiểm tra từng phần cụ thể và mọi lỗi đều được đảm bảo sẽ được tìm thấy, và thứ hai, sau khi đã kiểm tra lỗi, và mọi người có thể thấy rõ ràng họ đã sai ở đâu.
Phải nói rằng, về lâu dài, blockchain chắc chắn có thể tiến xa hơn về mặt này. Một nguồn tiến bộ là ZK-SNARK (hoặc "bằng chứng hợp lệ"), một bằng chứng mật mã hiệu quả và có thể kiểm chứng cho phép các nhà sản xuất khối chứng minh với khách hàng rằng các khối đáp ứng một số điều kiện hợp lệ phức tạp tùy ý. Bằng chứng hợp lệ mạnh hơn bằng chứng gian lận vì chúng không dựa vào các trò chơi tương tác để phát hiện hành vi lừa dối. Một kỹ thuật quan trọng khác là "kiểm tra tính khả dụng của dữ liệu", có thể phát hiện các khối không có nội dung tiết lộ đầy đủ. Bằng chứng về tính khả dụng của dữ liệu dựa trên một số giả định bảo mật, nhưng giả định này rất thận trọng: vẫn còn một số lượng nhỏ các nút có sẵn trong mạng là trung thực ("sẵn sàng tuân theo thỏa thuận"); tin tốt là điều này số lượng người xác nhận trung thực tối thiểu thấp và Ngay cả khi số lượng kẻ tấn công rất lớn, thì cũng không cần phải nâng cao yêu cầu.
tiêu đề phụ
Bây giờ, hãy xem xét hệ quả mạnh mẽ nhất của mô hình "hỗn loạn tự nhiên": cuộc tấn công 51% bắt đầu tấn công chính nó. Trong nhiều cộng đồng hiện tại, nếu một cuộc tấn công 51% xảy ra và kẻ tấn công giành chiến thắng, thì chuỗi tấn công 51% sẽ trở thành một chuỗi hợp pháp. Thông số kỹ thuật này được tuân thủ nghiêm ngặt bởi tất cả mọi người. Cuộc tấn công 51% gần đây vào Ethereum Classic minh họa điểm này. Kẻ tấn công đã lấy lại hơn 3.000 khối, đánh cắp 807.260 ETC bằng một cuộc tấn công chi tiêu gấp đôi trong quá trình này. Do một trong hai ứng dụng khách cổ điển của Ethereum (OpenEthereun) về mặt kỹ thuật không thể quay lại đỉnh cao lịch sử của chuỗi tấn công, nên các nút Geth có thể chạy trên chuỗi tấn công, trong khi OpenEthereum chỉ có thể bị mắc kẹt trên chuỗi ban đầu.
Chúng ta có thể nói rằng cuộc tấn công đã dẫn đến sự hỗn loạn, nhưng đó là một tai nạn chứ không phải là một thiết kế có chủ ý của cộng đồng Ethereum Classic. Thật đáng tiếc khi cộng đồng sau đó đã chọn chấp nhận chuỗi tấn công (dài hơn) là hợp pháp. Tài khoản twitter Ethereum Classic gọi đó là "sự tuân thủ nghiêm ngặt bằng chứng công việc giống như ý định ban đầu của chúng tôi". Do đó, tiêu chuẩn cộng đồng này tích cực giúp những kẻ tấn công giành chiến thắng.
Nhưng trên thực tế, chúng ta có thể đạt được sự đồng thuận khác về định nghĩa của chuỗi hợp pháp, chẳng hạn như thiết lập quy tắc rằng sau khi một khối có hơn 100 khối con cháu, tính hợp pháp của nó không thể bị thay đổi. Hoặc, một bằng chứng cổ phần có tính hữu hạn (chẳng hạn như trường hợp của Ethereum 2.0), quy tắc là một khi một khối được hoàn thiện, nó sẽ không bao giờ được khôi phục.
Mô tả hình ảnh
Cách tiếp cận này cũng có tiềm năng phát triển. Chúng tôi có thể thử tạo một cuộc tấn công 51% để kiểm duyệt cụ thể các giao dịch sẽ gây nhầm lẫn. Nghiên cứu về các công cụ xác minh tính kịp thời cũng đang thúc đẩy tất cả các loại tấn công dẫn đến thất bại tự nhiên. Mặc dù vậy, vẫn sẽ có một số nhầm lẫn vì trình xác thực tính kịp thời không thể trợ giúp những nút đang ngoại tuyến hoặc có kết nối mạng kém.
Tóm lại là
Đối với cộng đồng blockchain coi trọng tính bất biến, có thể nói biện pháp hạn chế rollback này là một lựa chọn tốt, nếu mạng đã chấp nhận giao dịch cách đây bao lâu mà nó vẫn có thể vô tình bị rollback, thì blockchain không thể khẳng định là bất biến. Tất nhiên, tôi tin rằng ngay cả BTC và ETC cũng có giới hạn quay lui trong các trường hợp cực đoan. Nhưng thỏa thuận rõ ràng hơn và chính thức hóa biện pháp này sẽ tiến thêm một bước.
tiêu đề phụ
Tóm lại là
Vậy câu chuyện này dạy chúng ta điều gì? Đầu tiên, nếu chúng ta chấp nhận tính hợp pháp của cộng tác xã hội và tính hợp pháp của xác minh gián tiếp giả định mô hình tin cậy "1 trên N", tức là giả định rằng luôn có một người tham gia trung thực trong mạng, thay vì giả định một người tham gia nhất định (chẳng hạn như Infura) luôn trung thực, thì chúng tôi có thể tạo ra một chuỗi khối có khả năng mở rộng hơn.


