Trang chủ > Phân tán > Nội dung chính

Tìm hiểu về hệ thống phân tánđá gà trực tiếp app, vấn đề tướng quân và blockchain


Gần đâykeo 88, chủ đề về chuỗi khối đang rất nóng. Có người muốn dùng nó để thay đổi thế giới, có người lại muốn lợi dụng nó để lừa đảo.

Tuy nhiênbxh ngoai hang anh, hôm nay chúng ta chỉ tập trung phân tích về mặt kỹ thuật. Theo góc nhìn kỹ thuật, blockchain là một công nghệ liên quan đến hệ thống phân tán. Vậy nó có mối liên hệ gì với các khái niệm khác nhau của hệ thống phân tán? Hôm nay, trong bài viết này, chúng ta sẽ nhân cơ hội này cùng nhau thảo luận về những vấn đề cốt lõi và các khái niệm chính của hệ thống phân tán. Cuối cùng, chúng tôi sẽ cố gắng duy trì mạch tư duy logic nhất quán để cùng tìm hiểu sâu hơn về công nghệ Hệ thống phân tán không chỉ đơn giản là việc chia sẻ tài nguyên giữa nhiều máy tính mà còn là sự kết nối giữa các phần tử để tạo ra một mạng lưới hoạt động hiệu quả. Blockchain đóng vai trò như một cơ sở dữ liệu phi tập trung, nơi mỗi nút đều có bản sao đầy đủ của chuỗi khối. Điều này giúp đảm bảo tính minh bạch và an toàn thông tin. Khi nói về blockchain, không thể bỏ qua vai trò của đồng thuận. Đây là cơ chế giúp tất cả các nút trong mạng đạt được sự đồng ý về trạng thái hiện tại của hệ thống. Các thuật toán đồng thuận như Proof of Work (PoW) hay Proof of Stake (PoS) đã làm thay đổi cách chúng ta nghĩ về bảo mật và quản lý dữ liệu. Bên cạnh đó, một yếu tố quan trọng khác trong blockchain là tính bất biến (immutability). Khi dữ liệu đã được ghi vào blockchain, nó gần như không thể thay đổi. Điều này mang lại sự tin cậy cao cho nền tảng này, đặc biệt trong lĩnh vực tài chính và giao dịch. Vậy nên, khi tìm hiểu về blockchain, chúng ta không chỉ khám phá một công nghệ mới mẻ mà còn đi sâu vào những khái niệm nền tảng của hệ thống phân tán. Hy vọng qua bài viết hôm nay, các bạn sẽ có cái nhìn rõ ràng hơn về mối quan hệ giữa blockchain và hệ thống phân tán.

Hệ thống phân tán và vấn đề nhất quán

Hệ thống được hỗ trợ bởi công nghệ blockchainkeo 88, chẳng hạn như mạng Bitcoin hay Ethereum, xét về mặt kỹ thuật là một hệ thống phân tán rất. Do đó, trước tiên chúng ta sẽ bắt đầu bằng cách tìm hiểu về hệ thống phân tán. Một hệ thống phân tán là một mạng lưới các máy tính kết nối với nhau thông qua internet, trong đó mỗi máy tính đều có khả năng hoạt động độc lập nhưng vẫn phối hợp chặt chẽ để thực hiện các nhiệm vụ cụ thể. Điều này khác biệt hoàn toàn so với các hệ thống tập trung truyền thống, nơi mà tất cả dữ liệu và quyền kiểm soát đều nằm ở một điểm duy nhất. Trong trường hợp của mạng Bitcoin hoặc Ethereum, mỗi nút (node) trong hệ thống đều có bản sao đầy đủ của chuỗi khối (blockchain), giúp duy trì tính minh bạch và an ninh cho toàn bộ mạng lưới. Chính sự phân tán này đã tạo nên sức mạnh và độ tin cậy của nền tả

Đối với các kỹ sư công nghệkeo 88, đặc biệt là những người làm việc trong lĩnh vực phát triển máy chủ, hầu như ai cũng thường xuyên phải làm việc với hệ thống phân tán. Khi quy mô của dịch vụ ngày càng mở rộng, nó chắc chắn sẽ phát triển thành một hệ thống phân tán phức tạp. Tiêu biểu nhất có thể kể đến các cơ sở dữ liệu phân tán, chúng thường được thiết kế để lưu trữ dữ liệu theo một cách nào đó trên nhiều nút khác nhau, đảm bảo tính nhất quán của dữ liệu ngay cả khi hệ thống hoạt động ở trạng thái sẵn sàng cao. Ngoài ra, không chỉ dừng lại ở việc lưu trữ dữ liệu, các hệ thống phân tán này còn mang đến khả năng mở rộng linh hoạt, cho phép doanh nghiệp xử lý khối lượng lớn giao dịch cùng lúc mà vẫn duy trì hiệu suất ổn định. Đây chính là yếu tố quan trọng giúp các tổ chức hiện đại có thể vận hành trơn tru trong thời đại số hóa ngày nay.

Thực tếbxh ngoai hang anh, vấn đề nhất quán ( consensus problem Đây là một vấn đề cốt lõi mà hệ thống phân tán cần phải giải quyết. Một hệ thống phân tán thường được cấu thành từ nhiều nút có vị trí ngang hàngkeo 88, và sự tương tác giữa các nút giống như khi một nhóm người cùng thảo luận về một vấn đề nào đó. Hãy tưởng tượng một tình huống cụ thể hơn: ví dụ ba người đang bàn bạc xem trưa nay nên ăn gì. Người thứ nhất nói rằng gần đây có một quán lẩu mới mở, nghe nói rất ngon; nhưng người thứ hai lại phản đối, cho rằng ăn lẩu sẽ tốn quá nhiều thời gian, tốt nhất nên uống cháo cho tiện; còn người thứ ba thì nói rằng quán cháo mà người thứ hai đề xuất đã từng đi hôm qua, đồ ăn ở đó tệ lắm, thà đi ăn tại McDonald's còn hơn. Cuối cùng, cả ba người không thể thống nhất được ý kiến với nhau, và họ vẫn chưa đi đến quyết định cuối cùng. Trong hệ thống phân tán, điều này tương tự như việc các nút cần phải đồng ý với nhau về một trạng thái hoặc quyết định duy nhất. Tuy nhiên, không phải lúc nào mọi nút cũng sẽ đưa ra lựa chọn giống nhau, và đôi khi chúng sẽ gặp phải tình trạng "bế tắc" tương tự như trong trường hợp trên. Đây chính là lý do tại sao vấn đề đồng thuận (consensus problem) lại trở thành một thách thức lớn đối với các nhà phát triển hệ thống phân tán. Để giải quyết vấn đề này, các thuật toán đồng thuận mạnh mẽ như Paxos hay Raft đã được sáng tạo ra, giúp đảm bảo rằng dù có bao nhiêu nút thất bại hay có sự khác biệt ý kiến, toàn bộ hệ thống vẫn có thể đạt được sự thống nhất cuối cùng.

Thôi thì chúng ta hãy bầu một người lãnh đạođá gà trực tiếp app, người đó nói gì, chúng ta sẽ làm theo, như vậy mọi người sẽ không còn tranh cãi nữa.

Ba người này chắc bị làm sao rồi nhỉ... Chỉ là chuyện ăn uống mà cũng phải cãi nhau dữ vậy?

Vì vậybxh ngoai hang anh, những người thông minh đã tạo ra giao thức đồng thuận (consensus protocol), chẳng hạn như Paxos, Raft và Zab mà chúng ta thường nghe. Điều này giống như khi một nhóm người cùng thảo luận vấn đề. Nếu dùng thuật ngữ của Paxos, mỗi nút trong hệ thống có thể đưa ra đề xuất của mình (gọi là proposal, chứa giá trị cụ thể), và mục tiêu cuối cùng của giao thức là tất cả các nút đạt được sự đồng thuận về cùng một proposal dựa trên một số quy tắc nhất định. Nhưng làm thế nào để quyết định lấy đề xuất của ai? Một quy tắc đơn giản có thể là: đề xuất nào được đưa ra trước sẽ được ưu tiên, còn các đề xuất sau đó sẽ bị loại bỏ. Tuy nhiên, trong một hệ thống phân tán, tình huống phức tạp hơn nhiều so với việc một nhóm người ngồi lại để bàn bạc. Trong đó, vấn đề trễ mạng (network latency) khiến việc sắp xếp toàn bộ các sự kiện xảy ra theo thứ tự trở nên khó khăn. Hãy tưởng tượng một ví dụ đơn giản: giả sử cả nút A và B đều gửi proposal của mình đến nút X và Y gần như cùng lúc. Tuy nhiên, do độ trễ khác nhau khi di chuyển qua mạng, kết quả cuối cùng là X nhận được proposal từ A trước, rồi sau đó nhận từ B; trong khi Y lại nhận được proposal từ B trước, tiếp theo là từ A. Kết quả là, X và Y sẽ không thể thống nhất được thứ tự nào diễn ra trước giữa A và B. Đây chỉ là một trong vô số tình huống phức tạp mà các giao thức đồng thuận như Paxos hoặc Raft phải đối mặt và giải quyết để đảm bảo rằng mọi nút trong hệ thống luôn đồng bộ và nhất quán.

Ngoài rakeo 88, nếu tính đến khả năng các nút ngừng hoạt động hoặc thông điệp bị mất, tình hình sẽ trở nên phức tạp hơn. Việc một nút ngừng hoạt động có thể được xem như là một trường hợp đặc biệt của việc mất thông điệp, tương đương với việc tất cả các thông điệp gửi đến nút đó đều bị mất. Điều này thường xảy ra khi mạng lưới phải đối mặt với sự cố kỹ thuật hoặc tải quá mức, dẫn đến sự gián đoạn không chỉ ở riêng một nút mà còn ảnh hưởng đến toàn bộ hệ thống. Khi đó, các nút khác trong mạng phải tự điều chỉnh để tiếp tục duy trì kết nối và xử lý dữ liệu một cách hiệu quả nhất. CAP Dưới góc độ khung lý thuyếtđá gà trực tiếp app, tình trạng mà các nút không thể giao tiếp với nhau được gọi là "phân chia mạng" (network partitioning), tương ứng với chữ P trong khái niệm CAP. Tại sao cả sự sụp đổ của nút và mất mát thông điệp đều có thể quy về trường hợp phân chia mạng? Điều này xuất phát từ thực tế rằng các tình huống này trên thực tế không thể phân biệt rõ ràng. Ví dụ, khi một số nút trở nên không liên lạc được, đối với các nút khác, việc gửi tin nhắn cho chúng sẽ không nhận được bất kỳ phản hồi nào. Nguyên nhân thực sự có thể là do đường truyền giữa chúng bị gián đoạn, hoặc các nút đích đã ngừng hoạt động, hoặc các tin nhắn bị trì hoãn vô thời hạn. Tóm lại, có những nút trong hệ thống không thể liên lạc được nữa, do đó chúng không thể tham gia vào quá trình ra quyết định, nhưng cũng không có nghĩa là chúng sẽ không bao giờ có thể kết nối lại sau này. Điều cần lưu ý ở đây là, dù các nút đó tạm thời không khả dụng, chúng vẫn có thể hoạt động trở lại nếu vấn đề kỹ thuật được khắc phục. Điều này nhấn mạnh tầm quan trọng của khả năng xử lý các tình huống bất ngờ trong hệ thống phân tán, để đảm bảo tính liên tục và ổn định của toàn bộ cơ sở hạ tầng. Đồng thời, nó cũng đặt ra yêu cầu cao hơn đối với thiết kế kiến trúc hệ thống nhằm tối ưu hóa hiệu suất và giảm thiểu tác động tiêu cực từ các sự cố bất ngờ.

Để làm rõ hơn về vấn đề nàyđá gà trực tiếp app, hãy tưởng tượng rằng một số nút trong mạng lưới đã ngừng hoạt động. Khi điều đó xảy ra, các nút còn lại sẽ phải tiếp tục hoạt động mà không có sự tham gia của những nút bị lỗi. Liệu chúng có thể vẫn đạt được sự thống nhất đối với một đề xuất hay không? Ngay cả khi đạt được sự đồng thuận, khi các nút đã bị hỏng kia được khôi phục và quay trở lại hệ thống (ở thời điểm này, chúng có thể hoàn toàn không biết gì về những gì các nút khác đã thống nhất), liệu chúng có gây ra xung đột hoặc đưa ra ý kiến phản đối đối với kết quả đã được xác định trước đó, dẫn đến sự hỗn loạn trong hệ thống? Tất cả những câu hỏi này đều là những thách thức mà giao thức đồng thuận phân tán cần phải giải quyết một cách triệt để. Mỗi vấn đề này đòi hỏi sự tinh vi trong thiết kế thuật toán, bởi vì bất kỳ sự nhầm lẫn nào cũng có thể gây ra hậu quả nghiêm trọng đối với tính ổn định và hiệu suất của toàn bộ hệ thống. Điều này nhấn mạnh tầm quan trọng của việc đảm bảo rằng mọi nút trong mạng lưới đều hoạt động theo một quy tắc chung và hiểu rõ về trạng thái hiện tại của hệ thống. Đồng thời, các giao thức cần phải có khả năng tự động điều chỉnh và khắc phục các tình huống bất thường một cách nhanh chóng và chính xác.

Chúng tôi không có đủ không gian ở đây để thảo luận chi tiết về cách thức thực hiện cụ thể của các giao thức này. Tuy nhiênbxh ngoai hang anh, những ai quan tâm có thể tìm đọc thêm trong các bài báo khoa học liên quan. Thực tế cho thấy rằng, Mỗi giao thức đều mang trong mình một hệ thống phức tạp và độc đáo, đòi hỏi người nghiên cứu cần có sự kiên nhẫn cũng như kiến thức sâu rộng. Không chỉ dừng lại ở lý thuyết, việc áp dụng chúng vào thực tiễn còn là thách thức lớn đối với các nhà phát triển phần mềm và kỹ sư mạng. Những tiến bộ gần đây trong lĩnh vực công nghệ đã mở ra cánh cửa cho nhiều khả năng mới, nhưng đồng thời cũng đặt ra yêu cầu cao hơn đối với tính ổn định và hiệu quả của các giao thức hiện tại. Hiểu bản chất của vấn đề quan trọng hơn nhiều so với hiểu câu trả lời cho vấn đề đó Tóm lạibxh ngoai hang anh, điều quan trọng là chúng ta cần nhận ra rằng đã có sẵn một số thuật toán đồng thuận phân tán, có khả năng giải quyết các vấn đề mà chúng ta vừa thảo luận. Những thuật toán này đảm bảo rằng trong một mạng lưới phi tập trung, các nút có thể đạt được sự thống nhất cuối cùng đối với một đề xuất. Hơn nữa, tất cả các giao thức này đều có tính năng chịu lỗi nhất định. Nói chung, miễn là phần lớn các nút (hoặc một nhóm đủ lớn - quorum) vẫn hoạt động bình thường và có thể trao đổi thông tin với nhau, thì việc đạt được sự thống nhất về đề xuất sẽ luôn có thể thực hiện được. Điều thú vị là, những giao thức này không chỉ đơn giản dựa vào số lượng lớn nhất của nút hoạt động, mà còn thiết kế theo cách tối ưu hóa hiệu suất, cho phép mạng lưới duy trì sự ổn định ngay cả khi có một số lượng nhỏ nút gặp vấn đề. Điều này tạo nên một hệ thống đáng tin cậy hơn trong các tình huống thực tế.

Vấn đề Lính

tất cả các nút đều đáng tin cậy

Vấn đề các tướng lĩnh Byzantine Leslie Lamport Được đưa rakeo 88, tức là tác giả của Paxos. Đồng thời, Lamport cũng là người chiến thắng giải Turing năm 2013.

Câu chuyện này bắt đầu như sau (và tất nhiênkeo 88, đó là câu chuyện do Lamport nghĩ ra). Quân đội của Đế chế Byzantine đã tiến đến gần thành phố của kẻ thù và chia quân ra để đóng trại. Mỗi một đội quân đều do một vị tướng Byzantine chỉ huy. Để thống nhất kế hoạch chiến đấu, mỗi vị tướng cần gửi thông điệp qua các sứ giả đến những tướng lĩnh khác. Tuy nhiên, trong số các vị tướng có thể đã xuất hiện những tên phản bội. Những vị tướng phản bội này không ngần ngại làm bất kỳ điều gì để cản trở các tướng lĩnh trung thành đạt được sự đồng thuận về kế hoạch tác chiến. Họ có thể cấu kết với nhau, cố tình truyền tải tin tức sai lệch hoặc thậm chí giữ im lặng hoàn toàn, khiến cho mọi nỗ lực phối hợp trở nên vô ích. Trong thế giới phức tạp của các cuộc chiến tranh, sự phản bội không chỉ gây nguy hiểm cho chiến lược mà còn có thể thay đổi vận mệnh của cả một quốc gia. Vì vậy, các vị tướng trung thành phải tìm cách vượt qua những trở ngại do chính đồng đội của mình đặt ra, để đảm bảo rằng họ vẫn có thể đưa ra quyết định đúng đắn trong những thời khắc quan trọng.

Hãy tưởng tượng một tình huống đơn giản như sau. Giả sử có năm vị tướng quânđá gà trực tiếp app, họ phải bỏ phiếu để quyết định là nên tấn công hay rút lui. Hai trong số đó cho rằng nên tấn công, hai người khác lại muốn rút lui, và khi đó số phiếu đã ngang nhau, 2:2. Vị tướng thứ năm, đáng tiếc thay, lại là kẻ phản bội. Ông ta nói với hai vị tướng đầu tiên rằng họ nên tấn công, nhưng với hai vị tướng còn lại, ông ta lại khuyên họ nên rút lui. Kết quả là hai vị tướng đầu tiên quyết định tấn công, trong khi hai vị tướng kia lại chọn cách rút lui. Rõ ràng, không có một kế hoạch chiến lược nào đạt được sự thống nhất giữa họ. Điều này cho thấy rằng, trong những tình huống quan trọng, việc có một kẻ phản bội có thể gây ra hậu quả nghiêm trọng, làm xói mòn niềm tin và phá vỡ sự phối hợp cần thiết giữa các bên. Chính sự lưỡng lự và bất đồng ý kiến đã khiến mọi nỗ lực trở nên vô ích, dẫn đến kết cục bi thảm hơn cả việc chỉ dựa vào bản năng cá nhân.

Vấn đề này rõ ràng phức tạp hơn nhiều so với vấn đề đồng thuận trong môi trường đáng tin cậy mà chúng ta đã thảo luận ở chương trước. Để giải quyết vấn đề nàybxh ngoai hang anh, mục tiêu của chúng ta là tìm ra một thuật toán có khả năng đảm bảo rằng ngay cả khi có kẻ phản bội cố tình cản trở, chúng ta vẫn có thể đạt được các mục tiêu sau đây:

  • A Tất cả các tướng quân trung thành đều nhận được cùng một kế hoạch tác chiến nhất quán. Ví dụ như tất cả đều quyết định tấn côngbxh ngoai hang anh, hoặc tất cả đều quyết định rút lui, thay vì có những người cho rằng nên tiến công trong khi số khác lại muố Điều này đảm bảo sự đồng lòng và tránh những mâu thuẫn trong việc đưa ra quyết định quan trọng trên chiến trường.
  • B Một vị tướng trung thành không chỉ nhận được cùng một kế hoạch chiến đấu mà còn phải đảm bảo rằng kế hoạch đó là hợp lý (khả thi). Ví dụđá gà trực tiếp app, nếu ban đầu kế hoạch tấn công rõ ràng là lựa chọn tốt hơn trong tình huống chiến đấu, nhưng do sự cản trở của kẻ phản bội, cuối cùng lại quyết định rút lui toàn bộ. Điều này đồng nghĩa với việc nỗ lực của chúng ta đã thất bại. Một kế hoạch chiến lược dù hoàn hảo đến đâu cũng cần dựa trên cơ sở thực tế và hợp lý, nếu không, mọi nỗ lực đều có thể tan thành mây khói.

Dường như mục tiêu A trên đây khá rõ ràngđá gà trực tiếp app, ít nhất là với một thuật toán cụ thể, việc xác định liệu mục tiêu này có đạt được hay không cũng trở nên đơn giản. Tuy nhiên, mục tiêu B lại khiến người ta cảm thấy bối rối, không biết bắt đầu từ đâu. Việc đánh giá xem một kế hoạch chiến lược có "hợp lý" hay không vốn dĩ đã rất khó để định nghĩa rõ ràng. Ngay cả khi không có sự phản bội từ bất kỳ ai, các tướng lĩnh trung thành cũng chưa chắc đã có thể tạo ra một kế hoạch hoàn hảo. Điều này liên quan đến một vấn đề quan trọng trong nghiên cứu khoa học: nếu một vấn đề không thể được định nghĩa một cách rõ ràng bằng ngôn ngữ hình thức, thì việc nghiên cứu nó cũng sẽ gặp nhiều khó khăn, và chính vấn đề đó sẽ không thể đạt được mức độ của một ngành khoa học thực thụ. Lamport trong công trình nghiên cứu về vấn đề các tướng Byzantine đã có một đóng góp nổi bật khi khéo léo chuyển đổi một vấn đề tưởng chừng mơ hồ thành một dạng toán học có thể được mô tả chính xác bằng ngôn ngữ toán học. Bây giờ chúng ta cùng tìm hiểu cách ông ấy thực hiện điều này. Trước hết, cần hiểu rằng mục tiêu B không chỉ đơn giản là một vấn đề đạo đức hay tâm lý, mà còn là một thách thức lớn đối với logic và cấu trúc toán học. Để đưa ra một giải pháp khả thi, Lamport đã phân tích sâu hơn về bản chất của sự hợp lý trong hành động. Ông nhận ra rằng, thay vì cố gắng giải quyết tất cả các yếu tố phức tạp ngay lập tức, điều quan trọng là phải tách biệt từng phần nhỏ trong vấn đề và xử lý từng bước một. Từ đó, ông đã xây dựng một hệ thống toán học chặt chẽ dựa trên lý thuyết đồ thị và lý thuyết số học, giúp chuyển đổi các khái niệm trừu tượng như "hợp lý" và "phản bội" thành những biểu thức có thể tính toán. Quá trình này bắt đầu bằng cách đặt ra một giả định cơ bản: dù có tồn tại những kẻ phản bội, vẫn luôn có một số lượng nhất định các tướng lĩnh trung thành, và họ có thể phối hợp với nhau để đạt được kết quả tối ưu. Tiếp theo, Lamport sử dụng lý thuyết đồ thị để biểu diễn mối quan hệ giữa các tướng lĩnh, nơi mỗi nút đại diện cho một cá nhân, và mỗi cạnh thể hiện sự tin cậy lẫn nhau. Với cấu trúc này, ông có thể xác định rõ ràng các trường hợp xấu nhất khi có sự phản bội xảy ra và đưa ra phương án khắc phục. Sau đó, ông tiếp tục mở rộng phạm vi nghiên cứu bằng cách áp dụng lý thuyết số học vào vấn đề. Bằng cách này, ông biến vấn đề "hợp lý" từ một khái niệm trừu tượng thành một bài toán toán học cụ thể, nơi các giải pháp có thể được kiểm chứng một cách chính xác. Qua đó, ông không chỉ giải quyết được vấn đề ban đầu, mà còn mở ra cánh cửa cho nhiều ứng dụng khác trong các lĩnh vực như bảo mật thông tin và an ninh mạng. Như vậy, thông qua việc áp dụng những công cụ toán học tiên tiến, Lamport đã thành công trong việc biến một vấn đề khó hiểu thành một câu hỏi có thể được giải quyết một cách khoa học. Đây không chỉ là một bước đột phá trong lý thuyết toán học, mà còn là một minh chứng cho sức mạnh của tư duy logic trong việc giải quyết các thách thức phức tạp trong cuộc sống thực tế.

đề xuất chiến lược

Bạn có thể tự hỏi liệu kế hoạch chiến lược cuối cùng đạt được từ cách này có thực sự là tối ưu nhất hay khôngkeo 88, nhưng đây chắc chắn là điều tốt nhất mà chúng ta có thể làm. Hiện tại, chúng ta vẫn giả định rằng không có kẻ phản bội nào trong hàng ngũ tướng quân. Chúng ta nhận thấy rằng những yêu cầu đối với mục tiêu A và B có thể được "duỗi mềm" một chút: thay vì tập trung vào việc các tướng quân có đạt được thỏa thuận về một kế hoạch chiến lược cuối cùng hay không, và liệu kế hoạch đó có "hợp lý" hay không, chúng ta chỉ cần quan tâm đến việc liệu tất cả các tướng quân có nhận được đúng những đề xuất chiến đấu hoàn toàn giống nhau, tức v(1), v(2), …, v(n). Nếu mọi tướng quân đều nhận được những đề xuất chiến đấu như nhau, họ sẽ dễ dàng đạt được một kế hoạch thống nhất bằng cách sử dụng cùng một phương pháp tổng hợp. Còn về việc kế hoạch cuối cùng có phải là tốt nhất hay không, điều đó phụ thuộc vào nhiều yếu tố mang tính chủ quan, và chúng ta không cần bận tâm đến vấn đề này. Chúng ta có thể tự an ủi rằng dù sao đi nữa, kết quả cuối cùng đã đạt được sự đồng thuận giữa các tướng quân, điều này đã vượt qua thử thách lớn nhất của mọi chiến lược. Tuy nhiên, nếu muốn cải thiện hơn nữa, chúng ta cần xem xét kỹ lưỡng từng khía cạnh nhỏ nhất trong quá trình ra quyết định. Chẳng hạn, có thể cần thêm một số biện pháp để kiểm tra tính khả thi của từng đề xuất trước khi đưa ra quyết định cuối cùng. Nhưng cho đến thời điểm hiện tại, kế hoạch này dường như đã đáp ứng đầy đủ các tiêu chí cơ bản mà chúng ta đặt ra.

Bây giờ chúng ta xét trường hợp trong đội quân xuất hiện một tên phản bội. Theo dòng suy nghĩ trước đóđá gà trực tiếp app, chúng ta vẫn mong muốn mỗi vị tướng nhận được cùng một đề xuất chiến lược y(1), y(2), ..., y(n). Giờ hãy cùng xem xét kỹ hơn một giá trị cụ thể, y(i), trong mô tả trước đây, nó đại diện cho đề xuất chiến lược từ vị tướng thứ i. Nếu vị tướng thứ i là trung thành, thì định nghĩa này không có vấn đề gì. Tuy nhiên, nếu vị tướng thứ i là kẻ phản bội, thì sẽ có rắc rối. Tại sao vậy? Vì kẻ phản bội có thể làm bất cứ điều gì mình muốn. Nó có thể cố tình gửi các đề xuất khác nhau đến các vị tướng khác nhau để gây nhiễu quá trình xây dựng kế hoạch chiến đấu. Kết quả là, các vị tướng trung thành có thể nhận được những giá trị khác nhau của y(i) từ vị tướng thứ i. Điều này đồng nghĩa với việc định nghĩa y(i) như hiện tại là không ổn, và cần phải thay đổi.

Dù thế nào đi nữakeo 88, ngay cả khi có sự hiện diện của kẻ phản bội, chúng ta vẫn mong rằng mỗi vị tướng cuối cùng sẽ đưa ra quyết định dựa trên một đề xuất chiến lược hoàn toàn giống nhau. Những đề xuất này vẫn được ghi nhận là v(1), v(2), …, v(n). Tuy nhiên, ở đây, v(i) không còn chỉ đại diện cho đề xuất chiến lược từ vị tướng thứ i, mà là kết quả sau khi được xử lý qua một thuật toán đồng thuận mà chúng tôi thiết kế, và đó là những gì các vị tướng khác nhìn thấy cuối cùng. Chúng ta cần xem xét hai trường hợp khác nhau. Trước tiên, trong trường hợp đầu tiên, nếu vị tướng thứ i là trung thành, thì tự nhiên chúng ta mong rằng v(i) chính là đề xuất mà vị tướng thứ i đã gửi đi. Nói cách khác, chúng ta muốn đảm bảo rằng sau khi áp dụng thuật toán đồng thuận, nếu vị tướng thứ i là trung thành, thì đề xuất của họ sẽ được truyền đạt một cách chính xác đến tất cả các vị tướng khác mà không bị hành động của những kẻ phản bội làm nhiễu loạn. Đây là điều kiện tiên quyết để có thể xây dựng một kế hoạch tác chiến "hợp lý". Tiếp theo, trong trường hợp thứ hai, nếu vị tướng thứ i là kẻ phản bội, thì hắn có khả năng gửi những thông điệp khác nhau đến từng vị tướng. Khi đó, chúng ta không thể chỉ dựa vào lời nói của hắn, mà thay vào đó, chúng ta cần sử dụng thuật toán đồng thuận để các vị tướng trao đổi thông tin đầy đủ với nhau, rồi dựa trên những gì mà các vị tướng trung thành khác chuyển tiếp, tổng hợp lại để đưa ra một v(i). Điều này có thể là tấn công hay rút lui không quan trọng, điều cốt yếu là phải đảm bảo rằng tất cả các vị tướng đều nhận được cùng một giá trị v(i). Chỉ khi đó, các vị tướng mới có thể tổng hợp tất cả các v(1), v(2), …, v(n) và đạt được một kế hoạch tác chiến cuối cùng hoàn toàn thống nhất.

Dựa trên phân tích ở trênbxh ngoai hang anh, chúng ta nhận ra rằng trong cả hai tình huống này, điều quan trọng là chỉ cần tập trung vào cách đề xuất của vị tướng thứ i — vị tướng duy nhất — được truyền đạt đến các tướng khác. Cuối cùng, trọng tâm đã được làm rõ! Đến đây, vấn đề ban đầu có thể được thu gọn thành một bài toán nhỏ hơn. Bài toán con này mới thực sự là: Leslie Lamport Bài toán Tướng Byzantine

Một tướng chính gửi lệnh cho n-1 phó tướngkeo 88, làm thế nào để đảm bảo hai điều kiện sau:

  • (IC1) Tất cả các phó tướng trung thành cuối cùng đều nhận được cùng một lệnh.
  • (IC2) Nếu tướng chính trung thànhđá gà trực tiếp app, thì tất cả các phó tướng trung thành đều nhận được lệnh từ tướng chính.

Điều này thực tế tương ứng với hai tình huống mà chúng ta đã thảo luận trước đó. Nếu vị tướng chủ lực là người trung thànhbxh ngoai hang anh, thì điều kiện IC2 đảm bảo rằng lệnh được truyền đạt một cách chính xác, và trong trường hợp này, điều kiện IC1 cũng tự động được đáp ứng. Ngược lại, nếu vị tướng chủ lực là kẻ phản bội, thì điều kiện IC2 trở nên không còn ý nghĩa nữa, nhưng điều kiện IC1 vẫn đảm bảo rằng, dù kẻ phản bội có gửi những mệnh lệnh khác nhau đến từng phó tướng, các phó tướng vẫn có thể đạt được sự nhất trí cuối cùng về mệnh lệnh cần tuân theo.

Có hai điểm có thể khiến người ta bối rối ở đây.

Bài toán Tướng Byzantine

Thứ haibxh ngoai hang anh, khi vị tướng chỉ huy là kẻ phản bội, ông ta có thể gửi các lệnh khác nhau cho từng phó tướng. Làm thế nào để các phó tướng có thể nhận được cùng một lệnh cuối cùng? Đây chính là vấn đề mà thuật toán cần giải quyết. Thực ra, điều này cũng khá dễ hiểu (chúng ta đã đề cập đến ý tưởng này trước đó). Vì vị tướng có thể gửi các lệnh khác nhau cho các phó tướng, nên các phó tướng không thể chỉ đơn giản áp dụng lệnh từ tướng chỉ huy mà họ nhận được. Thay vào đó, họ cũng phải xem xét các lệnh mà những phó tướng khác truyền đạt lại từ tướng chỉ huy. Sau đó, một phó tướng sẽ tổng hợp tất cả các lệnh được chuyển tiếp bởi các phó tướng khác (bao gồm cả lệnh trực tiếp từ tướng chỉ huy), từ đó có thể thu thập thông tin toàn diện hơn và đưa ra phán đoán thống nhất (trong thực tế, đây là quá trình lặp đi lặp lại liên tục). Trong tình huống này, sự đồng thuận giữa các phó tướng phụ thuộc vào việc họ có thể loại bỏ các lệnh bất thường hoặc mâu thuẫn, dựa trên số lượng lớn thông tin họ thu thập được. Thuật toán giúp đảm bảo rằng dù có sự hiện diện của kẻ phản bội, các phó tướng vẫn có thể đưa ra quyết định giống nhau, duy trì sự ổn định và hiệu quả trong hoạt động chung. Điều này đặc biệt quan trọng trong các hệ thống phân tán, nơi không thể đảm bảo rằng mọi thông tin đều chính xác hoặc an toàn tuyệt đối.

Bài toán tướng quân Byzantine

Ở đây chúng ta chỉ đề cập đến kết luận của thuật toán mà bài báo đưa ra.

Sử dụng mô hình tin nhắn khác nhaukeo 88, Vấn đề Lính có các giải pháp khác nhau.

  • Nếu các tướng quân truyền tải thông điệp qua hình thức tin nhắn miệng (oral messages)đá gà trực tiếp app, nghĩa là khi tin nhắn được chuyển tiếp, nó có thể bị thay đổi hoặc làm sai lệch, thì để đối phó với m tên phản bội, cần ít nhất 3m+1 vị tướng (trong đó ít nhất 2m+1 vị tướng phải trung thành). Điều này cho thấy rằng trong một hệ thống như vậy, số lượng tướng trung thành cần vượt xa số lượng kẻ phản bội để đảm bảo thông điệp ban đầu không bị bóp méo hay thao túng. Một hệ thống an toàn đòi hỏi sự cân bằng tinh tế giữa số lượng các bên tham gia và độ tin cậy của họ.
  • Nếu các tướng quân sử dụng tin nhắn đã được ký (signed messages)bxh ngoai hang anh, tức là sau khi tin nhắn được phát đi, nó sẽ không thể bị làm giả, và bất kỳ sự thay đổi nào cũng sẽ bị phát hiện, thì để đối phó với m vị tướng phản bội, cần ít nhất m+2 vị tướng, nghĩa là có ít nhất 2 vị tướng trung thành (nếu chỉ có 1 vị tướng trung thành, rõ ràng vấn đề này sẽ không có ý nghĩa). Trường hợp này thực tế tương đương với việc không đặt giới hạn nào cho số lượng tướng quân trung thành.

Khả năng chịu lỗi (fault tolerance)

vấn đề tướng quân Byzantine

Thực tếbxh ngoai hang anh, cách nhìn này có chút vấn đề. Trong bài toán Người tướng, bên cạnh những kẻ phản bội, những người còn lại được gọi là trung thành. Tuy nhiên, từ ngữ trung thành thực chất ẩn chứa một ý nghĩa: họ là những người có thể hoạt động bình thường (tức bạn có thể liên tục giao tiếp với họ qua tin nhắn). Tại sao lại như vậy? Chúng ta đều hiểu rằng, một kẻ phản bội có thể làm bất cứ điều gì, không chỉ gửi thông điệp sai mà còn có thể hoàn toàn không gửi thông điệp nào cả. Không gửi thông điệp thì giống như việc không thể hoạt động đúng cách, hay nói cách khác, xảy ra lỗi. Do đó, không chỉ hành vi ác ý cố ý cần được xem xét, mà cả lỗi đơn giản cũng nên được coi là hành vi của kẻ phản bội. Đối với các tướng quân khác, sự khác biệt giữa hai trường hợp này là không rõ ràng. Vấn đề lớn hơn ở đây là khi chúng ta phân loại, nếu bỏ qua khả năng lỗi kỹ thuật, thì việc chỉ dựa vào hành vi để nhận diện kẻ phản bội sẽ trở nên khó khăn. Một hệ thống an toàn cần phải tính đến cả hai trường hợp này để đảm bảo tính chính xác và đáng tin cậy trong việc ra quyết định. Điều này đặt ra thách thức lớn cho việc thiết kế thuật toán giải quyết bài toán này, đặc biệt trong môi trường mạng máy tính hoặc hệ thống phân tán nơi sự cố kỹ thuật là điều không thể tránh khỏi.

tướng quân Byzantine

Vấn đề thách đố của các tướng và các thuật toán đồng thuận như Paxos có mối quan hệ như thế nào? Chúng ta có thể xem xét từ góc độ mức độ khả năng chịu lỗi. Cụ thểkeo 88, vấn đề của các tướng đại diện cho một thách thức về mặt lý thuyết trong việc đạt được sự đồng thuận khi tồn tại các nút không tin cậy hoặc có lỗi. Trong khi đó, Paxos và các thuật toán tương tự tìm cách giải quyết vấn đề này bằng cách thiết lập các cơ chế kiểm soát để đảm bảo tính nhất quán trong hệ thống phân tán, ngay cả khi một số nút gặp trục trặc. Các thuật toán đồng thuận như Paxos thường được coi là mạnh hơn về mặt khả năng chịu lỗi so với các giải pháp đơn giản hơn. Điều này có nghĩa là chúng có thể hoạt động ổn định ngay cả khi có nhiều nút thất bại hoặc truyền tải dữ liệu không chính xác. Tuy nhiên, sự phức tạp đi kèm cũng tăng lên, đòi hỏi phải có sự cân bằng tinh tế giữa hiệu suất và độ tin cậy. Vì vậy, khi đánh giá các thuật toán này, chúng ta cần xem xét nhu cầu cụ thể của hệ thống, từ đó chọn ra giải pháp phù hợp nhất.

Thường thì khi thiết kế một hệ thống máy tínhbxh ngoai hang anh, từ một con chip nhỏ bé cho đến một mạng phân tán phức tạp, việc cân nhắc đến khả năng chịu lỗi là điều không thể thiếu. Việc này giúp đảm bảo rằng hệ thống vẫn có thể hoạt động ổn định ngay cả khi xảy ra các sự cố như lỗi phần cứng hay phần mềm, góp phần gia tăng độ tin cậy và hiệu quả của toàn bộ hệ thống. fault tolerance ). Tuy nhiênbxh ngoai hang anh, tùy thuộc vào bản chất khác nhau của lỗi, có thể chia thành hai loại lớn:

  • Lỗi Byzantine (Byzantine fault) là một vấn đề mà trong đóbxh ngoai hang anh, những người quan sát khác nhau có thể nhận thấy các biểu hiện không đồng nhất. Một số người có thể nhìn thấy tình huống này theo cách này, trong khi những người khác lại hiểu nó theo cách hoàn toàn khác biệt. Chính sự bất nhất này tạo ra thách thức lớn trong việc xác định thực tế chính xác đang diễn ra.
  • Lỗi không thuộc trường phái Byzantine (non-Byzantine fault) có thể hiểu đơn giản là những lỗi không nằm trong phạm vi của các loại lỗi trước đó. Nếu đặt theo cách nhìn từ nghĩa đenđá gà trực tiếp app, nó bao gồm tất cả các vấn đề hoặc sự cố khác không liên quan đến lỗi Byzantine, tức là các lỗi mà các hệ thống phân tán thường gặp phải khi các nút trong mạng không nhất quán hoặc có hành vi không đáng tin cậy. Những lỗi này không liên quan đến việc các nút cố tình gửi thông tin sai lệch hay mâu thuẫn, mà chỉ đơn giản là do các vấn đề kỹ thuật hoặc trục trặc phần cứng/mạng lưới.

Hai loại lỗi này không dễ hiểu như tên gọi của chúng.

vấn đề các tướng Byzantine

Hãy cùng tìm hiểu thêm về các lỗi không phải. Trong một bài báo về Paxosbxh ngoai hang anh, tác giả Lamport cũng đã sử dụng thuật ngữ non-Byzantine (xem...). Tuy nhiên, để hiểu rõ hơn về khái niệm này, chúng ta cần biết rằng các lỗi không phải đề cập đến những vấn đề có thể xảy ra trong hệ thống phân tán mà không yêu cầu tất cả các nút trong mạng hoạt động hoàn hảo như nhau. Điều quan trọng là, khi nói về non-Byzantine faults, chúng ta đang ám chỉ rằng các lỗi đơn giản như mất kết nối hoặc thời gian truyền tín hiệu chậm hơn dự kiến là điều có thể xảy ra và cần được xử lý. So với lỗi, nơi các nút có thể hành xử bất thường hoặc cố tình sai lệch thông tin, các lỗi non-Byzantine thường dễ quản lý hơn trong các hệ thống phân tán cơ bản. Điều này làm cho việc thiết kế các giao thức như Paxos trở nên linh hoạt hơn trong nhiều kịch bản thực tế. Paxos Made Simple Tuy nhiênkeo 88, cách đặt tên cho thuật ngữ này thực sự khiến người ta cảm thấy hơi khó hiểu. Trong hệ thống phân tán, nếu một nút bị sập hoặc mạng lưới không hoạt động, tất cả đều có thể dẫn đến việc một số nút không thể hoạt động được nữa. Các nút khác trên hệ thống không thể phân biệt rõ ràng hai tình huống này. Đối với chúng, nó chỉ đơn giản là nhận ra rằng một nút nào đó đang tạm thời không thể liên lạc được (tức là đã quá thời gian chờ nhận tin nhắn). Liệu nguyên nhân là do chính nút đó gặp vấn đề, hay mạng lưới không thông suốt, hay thậm chí là do tin nhắn bị trì hoãn nghiêm trọng, thì cũng không thể xác định được. Thêm vào đó, sau một khoảng thời gian, nút đó có thể tự khắc phục vấn đề hoặc được can thiệp bởi con người. Nói cách khác, đối với các nút gặp lỗi, chúng ta sẽ không nhận được bất kỳ thông báo lỗi nào từ nó mà chỉ đơn thuần không nhận được tin nhắn. Ngược lại, nếu chúng ta nhận được tin nhắn từ nó, thì có thể khẳng định rằng tin nhắn đó là đáng tin cậy và chính xác.

Vấn đề các tướng Byzantine

khả năng chịu lỗi Byzantine Byzantine fault tolerance "BFT rút gọn",

Bài toán Tướng quân Byzantine

  • The absence of a message can be detected.

Giả định này yêu cầu rằng nếu một vị tướng phản bội không gửi bất kỳ thông điệp nào (có thể do tin nhắn bị mất)đá gà trực tiếp app, thì điều đó hoàn toàn có thể được phát hiện. Rõ ràng, điều này chỉ có thể dựa vào cơ chế timeout, đồng thời phụ thuộc vào việc các nút trong mạng đạt được sự đồng bộ hóa đồng hồ ở mức độ nhất định, tức là chênh lệch giữa các đồng hồ không vượt quá một giá trị tối đa. Thực chất, đây là một mô hình đồng bộ (synchronous model). Trong khi đó, hệ thống Paxos không đặt ra giả định mạnh mẽ như vậy; nó hoạt động dựa trên mô hình bất đồng bộ (asynchronous model) và không yêu cầu bất kỳ chuẩn mực cụ thể nào đối với đồng hồ hệ thống. Trong bài viết trước của tôi về [đây], tôi đã đề cập đến... Khóa phân tán dựa trên Redis có an toàn không? Khóa phân tán dựa trên Redis có an toàn không (phần dưới)

Cụ thể mà nóikeo 88, theo những gì được trình bày trong bài báo về Paxos, thiết kế của Paxos được xây dựng dựa trên mô hình hệ thống phi đồng bộ (asynchronous) và không phải là hệ thống Byzantine (non-Byzantine). Điều này có nghĩa rằng:

  • Các nút có thể hoạt động ở bất kỳ tốc độ nào và có thể gặp lỗi hoặc khởi động lại bất cứ lúc nào. Tuy nhiênkeo 88, trong quá trình thực hiện thuật toán, những biến cần được ghi nhận và lưu trữ thì sau khi khởi động lại, phải có khả năng khôi phục lại giá trị ban đầu của chúng. Điều này đảm bảo tính ổn định và liên tục của toàn bộ hệ thống, ngay cả khi các nút gặp vấn đề kỹ thuật.
  • Tin nhắn có thể bị trì hoãn trong khoảng thời gian tùy ýbxh ngoai hang anh, có thể bị trùng lặp (duplicated), có thể bị mất (lost), nhưng tuyệt đối không được hỏng hóc (corrupted). Hơn nữa, ngay cả khi có sự cố xảy ra, hệ thống cần phải đảm bảo tính toàn vẹn của dữ liệu và duy trì khả năng hoạt động ổn định.

Điều đầu tiên ở trên thực chất là yêu cầu dữ liệu phải được lưu trữ một cách bền vững trong cơ sở dữ liệuđá gà trực tiếp app, đồng thời đảm bảo rằng quá trình ghi dữ liệu xuống ổ đĩa không xảy ra bất kỳ lỗi Byzan nào (chúng ta vừa mới nhắc đến điều này). Tuy nhiên, trong thực tế, do những vấn đề như mất điện đột ngột hay bộ nhớ đệm của ổ đĩa, lỗi Byzan vẫn có thể xảy ra (dù xác suất rất thấp), vì vậy điều này buộc các kỹ sư phải thực hiện một số xử lý đặc biệt trong thiết kế hệ thống. Cụ thể hơn, để đối phó với tình huống này, các nhà phát triển thường áp dụng các phương pháp như tạo bản sao dữ liệu hoặc sử dụng cơ chế kiểm tra tính toàn vẹn dữ liệu. Điều này giúp hệ thống có khả năng phục hồi nhanh chóng và chính xác nếu xảy ra lỗi trong quá trình lưu trữ. Đồng thời, việc tối ưu hóa phần cứng cũng đóng vai trò quan trọng, chẳng hạn như sử dụng ổ SSD thay vì HDD thông thường để giảm thiểu rủi ro lỗi liên quan đến phần cứng.

Điều thứ hai ở phía trênbxh ngoai hang anh, khi thông điệp bị hỏng, được coi là một lỗi kiể Do đó, Paxos yêu cầu không được phép xảy ra tình trạng hỏng thông điệp. Trong trường hợp sử dụng giao thức TCP để truyền tải thông điệp, có thể cho rằng đây là điều hoàn toàn khả thi và có thể đạt được. Giao thức TCP nổi tiếng với khả năng đảm bảo tính nguyên vẹn của dữ liệu, nghĩa là nó sẽ kiểm tra và loại bỏ bất kỳ phần nào bị hỏng trong quá trình truyền dẫn. Điều này giúp loại trừ rủi ro về lỗi Byzantine trong việc truyền tải thông tin giữa các nút trong hệ thống Paxos. Ngoài ra, nhờ vào cơ chế xác thực kết nối trước khi gửi dữ liệu, TCP cũng giúp ngăn chặn các cuộc tấn công hoặc can thiệp từ bên ngoài, góp phần tăng cường độ tin cậy cho hệ thống nói chung.

Tướng quân Byzantine

Chuỗi khối

Trong thực tếđá gà trực tiếp app, không nhiều hệ thống cần phải đạt được khả năng chịu lỗi BFT (Byzantine Fault Tolerance) ngoại trừ những hệ thống đòi hỏi độ tin cậy cực kỳ cao. Một ví dụ điển hình là hệ thống điều khiển trên các máy bay của Boeing, nơi mọi chi tiết đều phải hoạt động chính xác trong mọi tình huống. Hay như hệ thống của tàu vũ trụ SpaceX Dragon, nơi bất kỳ sai sót nhỏ nào cũng có thể dẫn đến hậu quả nghiêm trọng. Những hệ thống này không chỉ yêu cầu hiệu suất tuyệt đối mà còn cần phải dự phòng mọi kịch bản xấu nhất có thể xảy ra (xem thêm). https://www.weusecoins.com/bitcoin-byzantine-generals-problem/ )。

Vấn đề Tướng Quân Byzantine

Tướng lĩnh Byzantine

Hãy lấy mạng lưới Bitcoin làm ví dụbxh ngoai hang anh, hoạt động cốt lõi của nó chính là thực hiện các giao dịch Bitcoin, tức là chủ sở hữu của một số lượng Bitcoin nhất định sẽ chuyển giao tài sản của mình cho người khác. Đầu tiên, chủ sở hữu cần khởi tạo một giao dịch (transaction), họ phải ký tên giao dịch đó bằng khóa riêng tư (private key) của mình trước khi gửi yêu cầu giao dịch đến các nút thợ mỏ (miner node). Thợ mỏ sẽ thu thập tất cả các giao dịch mà họ nhận được và gói chúng vào một khối (block). Sau đó, họ tiến hành thực hiện một loạt phép tính phức tạp với độ khó cao để tìm ra một giá trị nonce, đảm bảo rằng khi kết hợp giá trị này cùng các thông tin khác trong khối và thực hiện hàm băm (hash), kết quả đạt được sẽ thỏa mãn các yêu cầu đã đặt ra. Đây là bước quan trọng đối với toàn bộ mạng lưới blockchain, được gọi là bằng chứng công việc (Proof of Work). Tiếp theo, thợ mỏ sẽ phát tán khối này trên toàn hệ thống, để các thợ mỏ khác kiểm tra tính hợp lệ của khối. Việc xác minh không chỉ bao gồm việc kiểm tra chữ ký của giao dịch (sử dụng khóa công khai - public key của chủ sở hữu Bitcoin), mà còn kiểm tra tính đúng đắn của bằng chứng công việc. Nếu quá trình xác minh thành công, khối mới sẽ được thêm vào chuỗi blockchain dài nhất hiện tại. Trong trường hợp có nhiều khối được tạo ra gần như đồng thời, các thợ mỏ sẽ chọn khối có tổng giá trị giao dịch lớn hơn hoặc khối có độ phức tạp cao hơn để thêm vào chuỗi chính thức. Điều này giúp duy trì sự ổn định và tính minh bạch của mạng lưới Bitcoin. Đồng thời, việc duy trì cơ chế này cũng đảm bảo rằng bất kỳ ai muốn thay đổi lịch sử giao dịch trong blockchain sẽ cần phải kiểm soát phần lớn sức mạnh tính toán của toàn hệ thống, điều này làm tăng tính an ninh và chống lại các cuộc tấn công từ bên ngoài. Chính vì vậy, Bitcoin không chỉ là một loại tiền tệ kỹ thuật số mà còn là một hệ thống phân tán hoàn toàn phi tập trung, nơi mà mọi quyết định đều dựa trên sự đồng thuận của cộng đồng thợ mỏ và người dùng toàn cầu.

Nếu hai thợ mỏ gần như cùng lúc hoàn thành việc đóng gói khối và chứng minh công việcbxh ngoai hang anh, họ có thể đều sẽ phát tán khối đó ra mạng lưới. Khi điều này xảy ra, chuỗi khối sẽ phân nhánh (fork). Tuy nhiên, các thợ mỏ sẽ tiếp tục tạo ra các khối mới và nối chúng vào chuỗi hiện tại dài nhất. Do đó, cuối cùng, nhánh nào trở nên dài hơn sẽ được đa số các nút thợ mỏ công nhận. Qua đó, blockchain không thực sự là một dãy mà giống như một cây. Chúng ta biết rằng trong cấu trúc dữ liệu dạng cây, chỉ có duy nhất một đường đi từ nút gốc đến nút lá. Vì vậy, chuỗi blockchain hiện tại đang hoạt động thực chất là đường đi dài nhất từ nút gốc đến nút lá trong cây đó. Miễn là một khối nằm trên chuỗi dài nhất, nó sẽ được coi là hợp lệ, và tất cả các giao dịch bên trong khối đó sẽ được cố định lại (được công nhận bởi đa số các nút). Điều này giúp đảm bảo tính toàn vẹn của hệ thống và ngăn chặn các giao dịch bị thay đổi hoặc xóa bỏ sau khi đã được xác nhận.

Chúng ta chỉ mới đề cập sơ lược về cách thức hoạt động của công nghệ blockchain mà thôi. Nếu bạn muốn tìm hiểu thêm về các chi tiết cụ thểkeo 88, hãy thử nghiên cứu trang wiki chính thức của Ethereum, có thể truy cập tại địa chỉ sau:

https://github.com/ethereum/wiki/wiki

Bây giờ chúng ta bắt đầu thảo luận về mối liên hệ giữa công nghệ chuỗi khối và Vấn đề Lính.

Trước đâyđá gà trực tiếp app, khi chúng ta thảo luận về Vấn đề Lính, đã rút ra được kết luận sau:

  • Nếu sử dụng tin nhắn bằng lời nóibxh ngoai hang anh, thì ít nhất cần hơn 2/3 tướng phải trung thành.
  • Nếu sử dụng tin nhắn ký hiệukeo 88, thì không có yêu cầu nào đối với số lượng tướng trung thành.

Dựa trên phần giới thiệu trước đóđá gà trực tiếp app, tin nhắn mà chúng ta sử dụng trong blockchain nên là tin nhắn đã được ký. Điều này thể hiện rõ ràng ở chỗ: mỗi giao dịch trong một khối đều được ký, điều này đảm bảo rằng không ai có thể thay đổi nội dung của nó và cũng cho thấy rằng tin nhắn này chỉ có thể được tạo ra bởi người gửi ban đầu. Điều này thuộc về trường hợp thứ hai mà bạn đã đề cập, nhưng liệu blockchain có yêu cầu số lượng nút trung thành nhất định hay không? Tất nhiên là không như vậy. Ví dụ, trong mạng Bitcoin, quy định rằng các nút ác ý không được kiểm soát hơn 50% sức mạnh tính toán. Tại sao giữa hai trường hợp này lại dường như không phù hợp với nhau? Điều này xuất phát từ việc Bài toán Tướng quân chỉ tập trung vào một vấn đề nhỏ hơn. Nó quan tâm đến việc một tướng (được gọi là tướng chính) gửi lệnh tới tất cả các tướng khác (được gọi là phó tướng). Việc cuối cùng để tổng hợp tất cả các lệnh này đòi hỏi tất cả các tướng trung thành phải đạt được sự đồng thuận. Nếu số lượng tướng trung thành quá ít, bất kể kế hoạch chiến lược cuối cùng là gì, kế hoạch đó vẫn sẽ thất bại, vì các phản bội có thể không tuân theo kế hoạch đó. Điều này giống như trong mạng Bitcoin, quá trình lựa chọn chuỗi dài nhất tương đương với hành động tổng hợp tất cả các lệnh của các tướng (dựa trên bỏ phiếu đa số). Trong thực tế, việc áp dụng quy tắc 50% sức mạnh tính toán trong Bitcoin không phải là ngẫu nhiên. Nó liên quan trực tiếp đến cách mà hệ thống này giải quyết vấn đề an ninh trong môi trường phi tập trung. Khi nói đến việc bảo vệ mạng lưới khỏi các cuộc tấn công ác ý, việc giữ tỷ lệ phần trăm sức mạnh tính toán dưới mức 50% là một chiến lược hiệu quả để đảm bảo rằng không có bất kỳ nhóm nào có thể thao túng toàn bộ hệ thống. Đây là lý do tại sao trong khi bài toán Tướng quân chỉ nhấn mạnh vào khía cạnh đồng thuận giữa các nút, thì Bitcoin cần thêm một lớp bảo vệ bổ sung thông qua cơ chế proof-of-work và các quy tắc cụ thể để duy trì sự ổn định và minh bạch của mạng lưới.

Trong vấn đề Quân đoànkeo 88, một tên phản có thể gửi các lệnh khác nhau cho các tướng lĩnh. Nếu thuật toán không được thiết kế cẩn thận, điều này có thể dẫn đến việc không đạt được sự đồng thuận cuối cùng. Trong mạng lưới blockchain, hành vi tương tự sẽ tốn kém rất nhiều. Lý do là vì các nút thợ mỏ khi phát tán khối thông tin phải trải qua quá trình chứng minh công sức (proof-of-work). Nếu một thợ mỏ cố gắng phát tán các khối không nhất quán, mỗi khối đó cũng sẽ yêu cầu chứng minh công sức riêng, khiến nó tiêu tốn một lượng lớn năng lực tính toán. Hơn nữa, không có lý do nào để khuyến khích điều đó, vì việc tạo ra nhiều nhánh phân tách (forks) như vậy chỉ làm xuất hiện những chuỗi ngắn hơn, không tạo ra chuỗi dài nhất mà toàn bộ mạng đang hướng tới.

Trong khung cảnh bài toán Tướng (Byzantine Generals Problem)đá gà trực tiếp app, cách nhìn nhận về cơ chế bằng chứng công sức (Proof of Work - PoW) như thế nào? Thực tế, nó giống như việc tăng chi phí cho kẻ phản bội, từ đó giảm đáng kể khả năng kẻ phản bội chiếm đa số. Có thể so sánh điều này với lịch sử giả định rằng vấn đề Tướng tồn tại thật: có thể tưởng tượng rằng chi phí để gián điệp của quân địch xâm nhập vào nhóm tướng sẽ rất cao. Do đó, ta có thể cho rằng số lượng kẻ phản bội trong nhóm tướng không quá nhiều. Tuy nhiên, khi áp dụng điều này lên mạng lưới máy tính, nếu thiếu cơ chế tương tự PoW, thì chi phí để trở thành một kẻ phản bội - tức là thợ mỏ bất lương - sẽ vô cùng thấp. Điều này có nguy cơ khiến số lượng thợ mỏ bất lương vượt xa số lượng thợ mỏ trung thành. Thêm vào đó, trong thế giới thực, những kẻ phản bội thường chỉ xuất hiện khi lợi ích họ thu được lớn hơn chi phí phải bỏ ra. Khi không có cơ chế PoW để làm tăng chi phí, những kẻ tham lam có xu hướng dễ dàng chọn con đường bất lương, đặc biệt trong môi trường mạng nơi mọi giao dịch đều ẩn danh và nhanh chóng. Điều này không chỉ đe dọa đến sự ổn định của hệ thống mà còn có thể dẫn đến sự sụp đổ của cả cơ chế hoạt động dựa trên sự đồng thuận. Do đó, PoW không chỉ là một công cụ kỹ thuật mà còn là một hàng rào bảo vệ, giúp duy trì sự cân bằng giữa các bên trong hệ thống phân tán. Nó như một lớp áo giáp, ngăn chặn những kẻ có ý đồ xấu từ việc phá hoại hệ thống từ bên trong. Trong thời đại của blockchain, đây là yếu tố quan trọng để đảm bảo rằng mạng lưới không bị thao túng bởi các phần tử bất lương, nhưng cũng cần phải cẩn trọng vì việc gia tăng chi phí này đôi khi lại gây ra những bất cập khác như việc tiêu tốn năng lượng khổng lồ.

Từ góc nhìn của kinh tế họcđá gà trực tiếp app, việc trở thành một thợ mỏ phản cũng không phải là một lựa chọn khôn ngoan nếu như vẫn cần đến cơ chế bằng chứng công việc. Bởi lẽ, nếu đã sở hữu sức mạnh tính toán khá mạnh mẽ, thì cách tốt nhất vẫn là kiếm lợi nhuận thông qua việc đào tiền tệ theo cách hợp lý hơn là đi ngược lại hệ thống. Tuy nhiên, đây là yếu tố nằm ngoài phạm vi kỹ thuật.

người nắm giữ lớn nothing at stake Tuy nhiênđá gà trực tiếp app, nếu nhìn từ góc độ của vấn đề Quân đoàn, điều này cũng đồng nghĩa với việc đã tăng lên đáng kể chi phí cho việc trở thành kẻ phản bội. Điều này giống như một điệp viên muốn thâm nhập vào hội đồng quản trị sẽ phải đối mặt với chi phí khá cao, vì trước tiên họ cần sở hữu một lượng lớn cổ phiếu. Và không chỉ vậy, việc duy trì vị trí trong môi trường đầy rẫy sự giám sát và nghi ngờ này cũng đòi hỏi những nỗ lực không nhỏ, khiến hành vi phản bội trở nên cực kỳ khó thực hiện và tốn kém hơn nhiều.

Blockchain thực chất là gì? Có người nói đó là sổ cái siêu an toàn mà không thể thay đổiđá gà trực tiếp app, có người lại cho rằng đó là hệ thống giao dịch phi tập trung, và cũng có người khẳng định đó là công cụ nền tảng để xây dựng tiền kỹ thuật số. Tuy nhiên, xét từ góc độ kỹ thuật, trước tiên nó là một **mạng lưới phân tán** mà trong đó các khối dữ liệu được liên kết với nhau bằng mật mã, tạo thành một chuỗi các thông tin không thể thay đổi và minh bạch. Mỗi khối trong chuỗi này chứa các giao dịch hoặc dữ liệu khác nhau, và khi một khối được thêm vào chuỗi, toàn bộ hệ thống sẽ phải xác nhận tính hợp lệ của nó thông qua sự đồng thuận từ nhiều nút mạ Chính điều này đã tạo ra khả năng bảo mật cao và loại bỏ nhu cầu trung gian truyền thống trong các giao dịch. Mạng phân tán đã giải quyết vấn đề Lính Trong một môi trường hoàn toàn mởkeo 88, tính nhất quán và bảo mật dữ liệu đã được thực hiện một cách xuất sắc. Tất cả các thuộc tính khác đều tự nhiên phát sinh và gắn liền với bản chất cốt lõi của công nghệ này. Từ khả năng chia sẻ thông tin không giới hạn đến việc bảo vệ dữ liệu trước các rủi ro an ninh mạng, mọi yếu tố đều được tích hợp một cách hài hòa. Công nghệ này không chỉ là nền tảng cho sự ổn định mà còn là chìa khóa dẫn dắt sự đổi mới trong thời đại số ngày nay. Với khả năng tối ưu hóa các nguồn lực, nó tạo ra một hệ thống linh hoạt và đáng tin cậy, đáp ứng mọi yêu cầu khắt khe nhất từ người dùng.


Trong bài viết hôm naykeo 88, chúng ta sẽ bắt đầu bằng vấn đề nhất quán trong hệ thống phân tán và dần đi sâu vào vấn đề tướng quân, trước khi cuối cùng liên hệ đế Các phần này được xây dựng một cách từ từ và logic, mặc dù được trình bày như một cuộc trò chuyện tự do, nhưng về mặt lý thuyết thì chúng vẫn được kết nối chặt chẽ với nhau. Hệ thống phân tán thường gặp phải nhiều thách thức trong việc đảm bảo dữ liệu đồng bộ giữa các máy chủ hoặc nút, và đây chính là điểm khởi đầu cho sự khám phá của chúng ta. Khi nói đến vấn đề tướng quân, chúng ta đang nói đến một tình huống phức tạp hơn nhiều, nơi mà không chỉ có lỗi kỹ thuật mà còn có cả yếu tố gian lận hoặc bất đồng ý kiến giữa các bê Cuối cùng, khi tìm hiểu về blockchain, chúng ta nhận ra rằng công nghệ này đã giải quyết rất nhiều vấn đề mà hệ thống phân tán truyền thống gặp phải. Blockchain không chỉ là một phương pháp lưu trữ dữ liệu an toàn mà còn là một mô hình mới để quản lý sự tin cậy giữa các bên. Chính vì vậy, dù bài viết này mang tính chất thảo luận tự do, nhưng nó vẫn tạo nên một chuỗi logic rõ ràng từ đầu đến cuối.

Cuối cùngbxh ngoai hang anh, blockchain, có phải là một cuộc cách mạng vĩ đại không? Tất nhiên rồi. Đặc biệt là hệ thống Bitcoin, đó là một sáng kiến thành công được hình thành từ sự kết hợp giữa công nghệ hệ thống phân tán và hoạt động của hệ thống tài chính. Với khả năng phi tập trung và tính minh bạch, nó đã mở ra cánh cửa cho một tương lai mới trong giao dịch và quản lý dữ liệu. Đây thực sự là bước tiến đáng chú ý trong thời đại kỹ thuật số hiện nay.

Công nghệ chuỗi khối liệu có làm thay đổi tương lai hay không? Hiện tạikeo 88, chúng ta chỉ có thể nói: Có khả năng.

(Kết thúc)

Các bài viết được chọn lọc khác


Bài viết gốckeo 88, vui lòng ghi rõ nguồn và bao gồm mã QR bên dưới! Nếu không, từ chối tái bản!
Liên kết bài viết: /0d5gryhk.html
Hãy theo dõi tài khoản Weibo cá nhân của tôi: Tìm kiếm tên "Trương Tiết Lệ" trên Weibo.
Tài khoản WeChat của tôi: tielei-blog (Trương Tiết Lệ)
Bài trước: Tại sao tương lai là của thực tế tăng cường?
Bài sau: Sai chính tả 100 đồng?