Nguyên lý cơ bản của Blockchain
Bây giờ bạn đã hiểu tại sao các hệ thống phân tán về cơ bản là khó và tại sao Bài toán Byzantine Generals có vẻ không thể giải quyết, hãy khám phá cách blockchain thực sự hoạt động.
Đột phá đến từ việc kết hợp hai đổi mới chính: cơ chế đồng thuận mới và việc sử dụng khéo léo các hệ mật mã nguyên thủy.
Cơ chế Đồng thuận
Các nhà khoa học máy tính thực sự đã giải quyết Bài toán Byzantine Generals về mặt toán học trong những năm 1980, cho thấy để chịu được f kẻ phản bội, bạn cần ít nhất 3f+1
tổng số người tham gia.
Hãy xem xét trường hợp cổ điển của một kẻ phản bội trong số bốn tướng. Nếu tướng chỉ huy là kẻ phản bội, anh ta có thể nói với hai tướng "tấn công" và một tướng "rút lui". Nếu các tướng chỉ tuân theo mệnh lệnh của họ, kế hoạch sẽ thất bại. Giải pháp yêu cầu một vòng giao tiếp bổ sung nơi tất cả các tướng báo cáo mệnh lệnh họ nhận được cho nhau.
Vòng giao tiếp bổ sung này tiết lộ sự lừa dối của chỉ huy. Mỗi tướng trung thành thấy rằng "tấn công" là mệnh lệnh đa số (hai so với một) và hành động tương ứng. Bởi vì tất cả các tướng trung thành đạt được cùng một kết luận, sự đồng thuận được đạt được và kẻ phản bội bị đánh bại.
Giải pháp toán học đằng sau điều này hoạt động, nhưng không thực tế:
- Bạn phải biết chính xác tất cả những ai là người tham gia trước
- Nhiều vòng tin nhắn giữa mọi cặp người tham gia
- Độ phức tạp giao tiếp tăng theo cấp số nhân
- Trong một hệ thống không cần phép, kẻ tấn công có thể tạo ra vô số danh tính giả
Để giải quyết vấn đề này, thay vì dựa trên danh tính, blockchain dựa trên thứ gì đó đắt đỏ để làm giả: công việc tính toán hoặc tiền đặt cược.
Proof of Work (POW)
Trong các hệ thống POW, để đề xuất những gì sẽ xảy ra tiếp theo, bạn phải chứng minh rằng bạn đã thực hiện công việc tính toán đắt đỏ:
- Thợ mỏ thu thập các giao dịch đang chờ xử lý vào một "khối"
- Thợ mỏ phải tìm một số ngẫu nhiên (gọi là "nonce") mà khi kết hợp với dữ liệu khối và được mã băm, tạo ra kết quả bắt đầu bằng nhiều số không
- Thợ mỏ đầu tiên tìm thấy số này làn truyền giải pháp của họ đến mạng
- Nhừng người khác có thể ngay lập tức xác minh giải pháp là đúng và chấp nhận khối mới
Điều này hoạt động vì việc tìm nonce có thể yêu cầu hàng nghìn tỷ lần đoán ngẫu nhiên, nhưng việc xác minh giải pháp chỉ mất vài mili giây.
Mỗi khối cũng tham chiếu đến hash của khối trước đó, tạo ra một chuỗi. Để viết lại lịch sử, kẻ tấn công sẽ cần làm lại tất cả công việc tính toán tiếp theo trong khi các thợ mỏ trung thực tiếp tục mở rộng chuỗi thực.
Giả định bảo mật là chi phí tấn công nhiều hơn về điện năng so với những gì kẻ tấn công có thể thu được.
Proof of Stake
Trong các hệ thống POS, thay vì đốt điện năng, những người tham gia đặt tiền của chính họ vào rủi ro:
- Người tham gia khóa các token cryptocurrency làm tài sản thế chấp
- Giao thức ngẫu nhiên chọn các validator để đề xuất khối, được cân nhắc theo stake của họ
- Các validator được chọn đề xuất khối, và các validator khác bỏ phiếu chấp nhận hoặc từ chối
- Hành vi trung thực kiếm được phần thưởng; hành vi không trung thực dẫn đến "slashing," nơi một phần token đã stake bị tịch thu hoặc tước đoạt. Mức phạt chính xác thay đổi theo mạng và mức độ nghiêm trọng của vi phạm.
Điều này hoạt động vì các validator có "lợi ích trong trò chơi". Tấn công mạng sẽ phá hủy giá trị của các token đã stake của họ (thông qua slashing). Ngoài ra, không giống như Proof of Work, Proof of Stake có thể cung cấp tính thống nhất cuối cùng kinh tế. Một khi một khối được hoàn thiện bởi đa số tuyệt đối các validator, việc đảo ngược nó sẽ yêu cầu kẻ tấn công phải chứng minh phá hủy một lượng vốn khổng lồ, làm cho việc đảo ngược trở nên cực kỳ đắt đỏ.
Bài toán Ba khía cạnh của Blockchain
Cũng như các hệ thống phân tán đối mặt với Định lý CAP, blockchain đối mặt với sự đánh đổi bất khả thi riêng của chúng. Bài toán Ba khía cạnh của Blockchain nói rằng đồng thuận blockchain có thể tối ưu hóa tối đa hai trong ba thuộc tính sau:
- Bảo mật: Khả năng chống lại tấn công và kiểm duyệt
- Khả năng mở rộng: Thông lượng giao dịch cao
- Phi tập trung: Không có điểm kiểm soát tập trung
Bitcoin chọn bảo mật và phi tập trung hơn khả năng mở rộng. Các hệ thống thanh toán truyền thống như Visa chọn khả năng mở rộng và bảo mật hơn phi tập trung. Thách thức đang diễn ra là tìm cách đạt được cả ba đồng thời.
Hệ mật mã nguyên thủy
Các cơ chế đồng thuận giải quyết vấn đề "ai quyết định", nhưng làm thế nào chúng ta đảm bảo bản thân dữ liệu đáng tin cậy?
Đây là nơi các hệ mật mã nguyễn thủy xuất hiện: các công cụ toán học đã được thử nghiệm trong thực chiến trong nhiều thập kỷ.
Blockchain dựa vào ba công cụ mật mã chính hoạt động cùng nhau để tạo ra một hệ thống bất biến, có thể xác minh:
Hàm Hash
Hãy tưởng tượng bạn cần xác minh rằng một tài liệu khổng lồ không bị thay đổi, nhưng bạn chỉ có thể gửi một mẩu thông tin nhỏ để chứng minh điều đó. Đây chính xác là những gì hàm hash thực hiện.
Một hàm hash nhận bất kỳ đầu vào nào (dù là từ "Hello," toàn bộ tác phẩm của Shakespeare, hay một khối chứa hàng nghìn giao dịch) và tạo ra một đầu ra có kích thước cố định phục vụ như một dấu vân tay kỹ thuật số duy nhất.
Hàm hash có ba thuộc tính chính:
- Xác định: Cùng một đầu vào luôn tạo ra cùng một đầu ra.
- Không thể đảo ngược: Hàm dễ tính toán theo một hướng, nhưng không khả thi về mặt tính toán để đảo ngược. Cho một hash, bạn không thể dễ dàng tìm đầu vào gốc ngoại trừ bằng brute force hoặc bảng tra cứu.
- Hiệu ứng Tuyết lở: Một thay đổi nhỏ trong đầu vào (như viết hoa một chữ cái) dẫn đến một hash đầu ra hoàn toàn khác.
Hãy xem xét những hash SHA-256 này, chúng minh họa hiệu ứng tuyết lở:
SHA-256("Hello") = 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Chú ý cách thay đổi chỉ việc viết hoa một chữ cái tạo ra một hash hoàn toàn khác.
Mặc dù việc tính toán hash từ bất kỳ đầu vào nào là tầm thường, nhưng việc đảo ngược quá trình này là không thể về mặt tính toán. Cho một hash, bạn không thể tìm ra đầu vào gốc là gì vì điều này sẽ mất thời gian lâu hơn tuổi của vũ trụ đối với một hàm hash an toàn.
Trong blockchain, hash được sử dụng cho tính toàn vẹn. Mỗi khối chứa hash của khối trước đó, tạo ra một chuỗi không thể phá vỡ. Nếu ai đó sửa đổi một giao dịch từ tuần trước, họ sẽ thay đổi hash của khối đó. Vì khối tiếp theo tham chiếu đến hash cũ, việc sửa đổi sẽ phá vỡ chuỗi. Để sửa chữa điều này, họ cần tính toán lại hash của mọi khối tiếp theo trong khi mạng tiếp tục thêm các khối mới, đây là một trò chơi đuổi bắt thực tế không thể.
Chữ ký số
Xác thực truyền thống dựa vào các bí mật chia sẻ như mật khẩu, nhưng blockchain hoạt động mà không có cơ quan đáng tin cậy hoặc kênh an toàn để chia sẻ bí mật. Vì lý do này, chúng sử dụng chữ ký số, cho phép xác thực mà không tiết lộ bất kỳ thông tin bí mật nào.
Chữ ký số sử dụng mật mã bất đối xứng dựa vào các mối quan hệ toán học dễ tính toán theo một hướng nhưng gần như không thể đảo ngược. Khi bạn tạo chữ ký số, bạn tạo ra hai số có liên quan toán học gọi là private key và public key; private key phải được giữ bí mật trong khi public key có thể được chia sẻ tự do.
- Private key có thể được sử dụng để tạo chữ ký số cho một giao dịch cụ thể
- Chữ ký là duy nhất cho cả private key của bạn và nội dung giao dịch chính xác.
- Bất kỳ ai cũng có thể sử dụng public key của bạn để xác minh rằng chữ ký chỉ có thể được tạo bởi ai đó có private key tương ứng.
Không có private key của bạn, việc tạo chữ ký hợp lệ là không thể về mặt tính toán, ngay cả khi có quyền truy cập vào hàng triệu chữ ký trước đó. Để ngăn kẻ tấn công phát lại một giao dịch cũ, mỗi chữ ký phải bao gồm một mẩu dữ liệu duy nhất, thường là một bộ đếm đơn giản gọi là "nonce", đảm bảo mọi chữ ký đều duy nhất.
Điều này tạo ra "không thể từ chối": một khi bạn đã ký một giao dịch, bạn không thể tuyên bố rằng bạn không ủy quyền cho nó. Bằng chứng toán học là không thể bác bỏ.
Trong blockchain, đây là cách ví hoạt động. "Ví" của bạn không lưu trữ cryptocurrency; các đồng tiền tồn tại như các mục trên blockchain. Thay vào đó, ví lưu trữ private key và giúp tạo chữ ký số để chứng minh bạn có thể chi tiêu những đồng tiền đó. Về cơ bản chúng là trình quản lý chữ ký số.
Cây Merkle
Làm thế nào bạn xác minh rằng một giao dịch cụ thể tồn tại trong một khối chứa hàng nghìn giao dịch khác mà không cần tải xuống toàn bộ khối?
Cây Merkle tổ chức dữ liệu trong một cây nhị phân nơi mỗi lá đại diện cho một giao dịch, và mỗi node cha chứa hash của hai con của nó. Điều này tiếp tục lên cây cho đến khi bạn đạt đến một root hash duy nhất đại diện cho toàn bộ tập dữ liệu.
Vì lý do này, để chứng minh bất kỳ giao dịch nào tồn tại trong cây, bạn chỉ cần giao dịch và "đường dẫn Merkle": các hash anh em cần thiết để tái tạo root. Điều này có nghĩa là đối với một cây có một triệu giao dịch, bạn chỉ cần khoảng 20 hash để chứng minh sự bao gồm.
Trong blockchain, cây Merkle làm cho việc xác minh giao dịch trở nên cực kỳ dễ dàng chỉ với vài kilobyte bằng chứng. Đảm bảo bảo mật vẫn giống hệt: nếu đường dẫn Merkle xác minh đúng, bạn có thể chắc chắn về mặt toán học rằng giao dịch đã được bao gồm trong khối đó.
Việc tạo ra một Hệ thống Không cần sự tin cậy
Đồng thuận và các hệ mật mã nguyễn thủy hoạt động cùng nhau để tạo ra một hệ thống "không cần tin cậy". Lần đầu tiên trong lịch sử, sự tin tưởng được đặt vào toán học chứ không phải con người:
- Hàm hash đảm bảo rằng bất kỳ sự can thiệp nào với dữ liệu lịch sử đều trở nên rõ ràng ngay lập tức.
- Chữ ký số chứng minh ủy quyền mà không yêu cầu bất kỳ trung gian đáng tin cậy nào để xác minh danh tính.
- Cây Merkle làm cho việc xác minh các tuyên bố phức tạp trở nên có thể mà không cần tải xuống lượng dữ liệu khổng lồ.
Khi kết hợp với các cơ chế đồng thuận, những công cụ này tạo ra một hệ thống nơi mọi thành viên tham gia có thể độc lập xác minh toàn bộ lịch sử của hệ thống chỉ bằng tài nguyên tính toán của riêng họ. Không có cơ quan đáng tin cậy, không có bí mật chia sẻ, không có điểm thất bại trung tâm.
Đây là lý do tại sao blockchain đại diện cho một sự thay đổi cơ bản như vậy. Các hệ thống truyền thống đạt được bảo mật bằng cách kiểm soát quyền truy cập và hạn chế sự tham gia. Blockchain đạt được bảo mật bằng cách làm cho việc xác minh trở nên rẻ và phổ quát trong khi làm cho gian lận trở nên đắt đỏ và rõ ràng.
Hiểu những nguyên lý này là rất quan trọng vì chúng định nghĩa những gì blockchain có thể và không thể làm. Chúng giải thích tại sao các giao dịch blockchain không thể đảo ngược (chi phí kinh tế để đảo ngược một giao dịch đã hoàn thiện được thiết kế để cực kỳ cao), tại sao các hệ thống blockchain có thể hoạt động mà không có cơ quan trung ương (mọi người có thể xác minh mọi thứ một cách độc lập), và tại sao hệ thống vẫn an toàn ngay cả khi hoàn toàn mở cho sự tham gia công cộng.