Mô hình tin cậy

Rate this post


2020 Tháng tám 20
Xem tất cả bài viết
Mô hình tin tưởng

Một trong những thuộc tính có giá trị nhất của nhiều ứng dụng chuỗi khối là sự không tin tưởng: khả năng ứng dụng tiếp tục hoạt động theo cách mong đợi mà không cần dựa vào một tác nhân cụ thể để hành xử theo cách cụ thể ngay cả khi sở thích của họ có thể thay đổi và thúc đẩy họ hành động theo một cách khác ngoài dự kiến ​​trong tương lai. Các ứng dụng chuỗi khối không bao giờ đầy đủ không đáng tin cậy, nhưng một số ứng dụng gần như không đáng tin cậy hơn những ứng dụng khác. Nếu chúng tôi muốn thực hiện các bước thực tế để giảm thiểu sự tin cậy, chúng tôi muốn có khả năng so sánh các mức độ tin cậy khác nhau.

Đầu tiên, định nghĩa một câu đơn giản của tôi về niềm tin: niềm tin là việc sử dụng bất kỳ giả định nào về hành vi của người khác. Nếu trước đại dịch, bạn xuống phố mà không đảm bảo giữ khoảng cách hai mét với người lạ để họ không bất ngờ rút dao đâm bạn, thì đó là một kiểu tin tưởng: cả hai đều tin rằng mọi người rất hiếm khi hoàn toàn loạn trí và tin tưởng rằng những người quản lý hệ thống pháp luật sẽ tiếp tục đưa ra những động cơ mạnh mẽ chống lại loại hành vi đó. Khi bạn chạy một đoạn mã do người khác viết, bạn tin tưởng rằng họ viết mã đó một cách trung thực (dù là do ý thức đúng đắn của họ hay do lợi ích kinh tế trong việc duy trì danh tiếng của họ), hoặc ít nhất là vì điều đó. có tồn tại đủ người kiểm tra mã để tìm thấy lỗi. Việc không tự trồng trọt cũng là một dạng tin tưởng khác: tin tưởng rằng sẽ có đủ người nhận ra điều đó. của họ lợi ích để phát triển thực phẩm để họ có thể bán nó cho bạn. Bạn có thể tin tưởng các nhóm người có quy mô khác nhau và có nhiều loại tin cậy khác nhau.

Với mục đích phân tích các giao thức chuỗi khối, tôi có xu hướng chia niềm tin thành bốn khía cạnh:

  • Bạn cần bao nhiêu người để cư xử như bạn mong đợi?
  • Trong số bao nhiêu?
  • Những loại động lực nào là cần thiết để những người đó cư xử? Họ có cần vị tha hay chỉ mưu cầu lợi nhuận? Họ có cần phải không phối hợp với nhau không?
  • Hệ thống sẽ thất bại nặng nề như thế nào nếu các giả định bị vi phạm?

Bây giờ, chúng ta hãy tập trung vào hai cái đầu tiên. Chúng ta có thể vẽ một biểu đồ:


Càng xanh càng tốt. Hãy để chúng tôi khám phá các danh mục chi tiết hơn:

  • 1 trong tổng số 1: có chính xác một tác nhân và hệ thống hoạt động nếu (và chỉ khi) tác nhân đó làm những gì bạn mong đợi họ làm. Đây là mô hình “tập trung” truyền thống và đó là những gì chúng tôi đang cố gắng làm tốt hơn.
  • N của N: thế giới “dystopian”. Bạn dựa vào cả đống diễn viên, tất cả các trong số họ cần hoạt động như mong đợi để mọi thứ hoạt động, không có bản sao lưu nếu bất kỳ trong số chúng bị lỗi.
  • N/2 của N: đây là cách các chuỗi khối hoạt động – chúng hoạt động nếu phần lớn những người khai thác (hoặc người xác thực PoS) trung thực. Lưu ý rằng N/2 của N trở nên có giá trị hơn đáng kể khi N càng lớn; một chuỗi khối với một số công cụ khai thác/trình xác nhận thống trị mạng sẽ kém thú vị hơn nhiều so với một chuỗi khối với các công cụ khai thác/trình xác nhận được phân phối rộng rãi. Điều đó nói rằng, chúng tôi muốn cải thiện ngay cả mức độ bảo mật này, do đó có mối lo ngại về việc sống sót sau các cuộc tấn công 51%.
  • 1 của N: có nhiều tác nhân và hệ thống hoạt động miễn là ít nhất một trong số họ làm những gì bạn mong đợi. Bất kỳ hệ thống nào dựa trên bằng chứng gian lận đều thuộc loại này, cũng như các thiết lập đáng tin cậy mặc dù trong trường hợp đó, N thường nhỏ hơn. Lưu ý rằng bạn muốn N càng lớn càng tốt!
  • ít N: có nhiều tác nhân và hệ thống hoạt động miễn là ít nhất một số lượng nhỏ cố định trong số họ làm những gì bạn mong đợi họ làm. Kiểm tra tính khả dụng của dữ liệu thuộc loại này.
  • 0 của N: các hệ thống hoạt động như mong đợi mà không có bất kỳ sự phụ thuộc nào vào các tác nhân bên ngoài. Xác thực một khối bằng cách tự mình kiểm tra nó thuộc loại này.

Mặc dù tất cả các nhóm khác với “0 của N” có thể được coi là “tin tưởng”, nhưng chúng rất khác nhau! Việc tin tưởng rằng một người (hoặc tổ chức) cụ thể sẽ hoạt động như mong đợi rất khác với việc tin tưởng rằng một số người duy nhất ở bất cứ đâu sẽ làm những gì bạn mong đợi họ làm. “1 của N” được cho là gần với “0 của N” hơn là “N/2 của N” hoặc “1 của 1”. Mô hình 1 trên N có thể giống như mô hình 1 trên 1 vì có cảm giác như bạn đang trải qua một diễn viên duy nhất, nhưng thực tế của cả hai là hết sức khác: trong hệ thống 1 trên N, nếu diễn viên mà bạn đang làm việc cùng lúc này biến mất hoặc trở thành ác quỷ, bạn có thể chuyển sang một diễn viên khác, trong khi ở hệ thống 1 trên 1, bạn sẽ gặp rắc rối.

Đặc biệt, hãy lưu ý rằng ngay cả tính chính xác của phần mềm bạn đang chạy thường phụ thuộc vào mô hình tin cậy “vài N” để đảm bảo rằng nếu có lỗi trong mã thì ai đó sẽ phát hiện ra chúng. Với thực tế đó, việc cố gắng hết sức để đi từ 1 của N đến 0 của N trên một số khía cạnh khác của ứng dụng thường giống như làm một cánh cửa thép gia cố cho ngôi nhà của bạn khi cửa sổ đang mở.

Một sự khác biệt quan trọng khác là: hệ thống sẽ thất bại như thế nào nếu giả định niềm tin của bạn bị vi phạm? Trong chuỗi khối, hai loại thất bại phổ biến nhất là sự sống thất bạilỗi an toàn. Liveness failure là một sự kiện trong đó bạn tạm thời không thể làm điều gì đó mà bạn muốn (ví dụ: rút tiền, nhận một giao dịch được bao gồm trong một khối, đọc thông tin từ chuỗi khối). Lỗi an toàn là một sự kiện trong đó có điều gì đó chủ động xảy ra mà hệ thống dự định ngăn chặn (ví dụ: một khối không hợp lệ được đưa vào chuỗi khối).

Dưới đây là một vài ví dụ về các mô hình tin cậy của một số giao thức lớp 2 của chuỗi khối. Tôi sử dụng “chữ N nhỏ” để chỉ tập hợp những người tham gia của chính hệ thống lớp 2 và “chữ N lớn” để chỉ những người tham gia chuỗi khối; giả định luôn là giao thức lớp 2 có cộng đồng nhỏ hơn chính chuỗi khối. Tôi cũng hạn chế sử dụng từ “thất bại trong cuộc sống” đối với các trường hợp tiền bị kẹt với số lượng đáng kể thời gian; không còn có thể sử dụng hệ thống nhưng có thể rút tiền gần như ngay lập tức không được tính là lỗi sinh tồn.

  • Kênh truyền hình (bao gồm các kênh trạng thái, mạng sét): 1 trên 1 niềm tin cho sự sống động (đối tác của bạn có thể tạm thời đóng băng tiền của bạn, mặc dù tác hại của điều này có thể được giảm thiểu nếu bạn chia tiền giữa nhiều đối tác), N/2 của niềm tin lớn-N cho an toàn (một cuộc tấn công 51% vào blockchain có thể đánh cắp tiền của bạn)
  • huyết tương (giả sử nhà điều hành tập trung): 1 trên 1 niềm tin cho sự sống động (nhà điều hành có thể tạm thời đóng băng tiền của bạn), N/2 niềm tin lớn-N cho sự an toàn (tấn công 51% chuỗi khối)
  • huyết tương (giả sử nhà điều hành bán phi tập trung, ví dụ: DPOS): N/2 của độ tin cậy N nhỏ cho sự sống động, N/2 của độ tin cậy N lớn cho sự an toàn
  • tổng hợp lạc quan: 1 trên 1 hoặc N/2 của độ tin cậy N nhỏ đối với sự sống động (tùy thuộc vào loại nhà điều hành), N/2 của độ tin cậy N lớn đối với sự an toàn
  • tổng hợp ZK: 1 of small-N trust for liveness (nếu nhà điều hành không bao gồm giao dịch của bạn, bạn có thể rút tiền và nếu nhà điều hành không bao gồm khoản rút tiền của bạn ngay lập tức, họ không thể tạo thêm lô và bạn có thể tự rút tiền với sự trợ giúp của bất kỳ nút của hệ thống tổng số); không có rủi ro thất bại an toàn
  • tổng hợp ZK (với tăng cường rút ánh sáng): không có rủi ro hỏng hóc sinh động, không có rủi ro hỏng hóc an toàn

Cuối cùng, có một câu hỏi về động cơ khuyến khích: tác nhân mà bạn đang tin tưởng có cần phải rất vị tha để hành động như mong đợi, chỉ vị tha một chút hay đủ lý trí? Tìm kiếm bằng chứng gian lận “theo mặc định” hơi vị tha, mặc dù mức độ vị tha của nó phụ thuộc vào mức độ phức tạp của phép tính (xem tình thế tiến thoái lưỡng nan của người xác minh) và có nhiều cách để sửa đổi trò chơi để làm cho trò chơi trở nên hợp lý.

Hỗ trợ những người khác rút tiền từ tổng số ZK là hợp lý nếu chúng tôi thêm một cách để thanh toán vi mô cho dịch vụ, do đó, có có thật không ít có lý do để lo ngại rằng bạn sẽ không thể thoát khỏi một tổng số với bất kỳ mục đích sử dụng quan trọng nào. Trong khi đó, những rủi ro lớn hơn của các hệ thống khác có thể được giảm bớt nếu chúng ta đồng ý với tư cách là một cộng đồng không chấp nhận các chuỗi tấn công 51% đã lùi quá xa trong lịch sử hoặc các khối kiểm duyệt quá lâu.

Kết luận: khi ai đó nói rằng một hệ thống “phụ thuộc vào niềm tin”, hãy hỏi họ chi tiết hơn về ý nghĩa của họ! Chúng có nghĩa là 1 của 1, hay 1 của N, hay N/2 của N? Họ yêu cầu những người tham gia này phải có lòng vị tha hay chỉ có lý trí? Nếu vị tha, đó là một khoản chi nhỏ hay một khoản chi lớn? Và điều gì sẽ xảy ra nếu giả định bị vi phạm – bạn chỉ cần đợi vài giờ hoặc vài ngày hay bạn có tài sản bị mắc kẹt mãi mãi? Tùy thuộc vào các câu trả lời, câu trả lời của riêng bạn về việc bạn có muốn sử dụng hệ thống đó hay không có thể rất khác nhau.

Thanh Thuy

Leave a Reply

Your email address will not be published. Required fields are marked *