Định nghĩa dễ hiểu về Blockchain
Sau một thời giandài làm việc với Blockchain, tôi nhận ra rằng không phải ai cũng hiểu rõ Blockchain là gì, ưu nhược điểm của nó như thế nào, ... từ đó hoặc là không tin vào Blockchain, hoặc là thần thánh hóa lợi ích của Blockchain.
Mọi người có thể rất dễ dàng tìm đọc các bài giải nghĩa Blockchain trên mạng, nhưng theo tôi thì đọc những bài như thế hơi mang tính hàn lâm, khó hiểu và khó mường tượng được nếu chưa thật sự biết Blockchain là gì.
Do đó, hôm nay tôi quyết định ngồi viết một bài giải nghĩa Blockchain theo cách dễ hiểu nhất có thể, hy vọng ai đó sẽ cần.
Blockchain là gì?
Nói nôm na, Blockchain là một sổ cái phân tán ghi lại các giao dịch một cách an toàn, minh bạch, chống giả mạo. Blockchain là một chuỗi (chain) các khối (block) kết nối với nhau bằng thuật toán mật mã, trong các khối là các giao dịch như đã nói ở trên.
Giờ chúng ta cùng phân tích từng thành phần trong định nghĩa cơ bản ở trên:
- Sổ cái phân tán: Hãy tưởng tượng có N quyển sổ ghi lại thu chi của CLB bóng bàn nội dung được sao chép y hệt nhau, được lưu giữ bởi nhiều người khác nhau trong CLB. Mỗi khi có giao dịch (thu/chi), tất cả các quyển sổ đó đều ghi thêm nội dung mới vào.
- An toàn, minh bạch, chống giả mạo: Khi xuất hiện một giao dịch mới, việc cho phép ghi vào sổ được kiểm soát bằng các quy tắc nhất định, đảm bảo tính chính xác (thu/chi từ đúng nguồn, nội dung phù hợp quy tắc CLB, ..), khi ghi vào sổ, tất cả các bản copy khác đều được ghi lại, ở mỗi quyển sổ, chủ nhân nắm giữ quyển sổ cũng tiến hành kiểm tra tính chính xác một cách độc lập. Điều này đảm bảo dữ liệu ghi vào có tính chính xác, không bị giả mạo. Do có tới N quyển sổ, ai cũng có thể tạo thêm một bản sao y hệt, kiểm tra, nên dữ liệu trong sổ là công khai, minh bạch. Khi có một sửa chữa trong 1 quyển sổ, các quyển còn lại thuộc sở hữu của người khác không bị can thiệp, có thể dùng để đối soát xác minh, nên khả năng giả mạo dữ liệu qúa khứ là rất khó.
Nếu đào sâu hơn một chút, chúng ta sẽ có một câu hỏi khác: Tại sao lại là chuỗi các khối, mà không phải như một dòng chảy liên tục của các giao dịch nối tiếp nhau?
Câu trả lời nằm ở sự hợp lý của hệ thống. Trước tiên, hãy tìm hiểu về cách vận hành của Blockchain khi nhận các giao dịch, bằng cách tưởng tượng Blockchain như một phòng giao dịch khách hàng của một ngân hàng truyền thống, bạn và những người dùng khác là khách hàng.
Khi tạo một giao dịch, bạn sẽ gửi giao dịch đó đến quầy thủ tục. Tiếp đó, giao dịch viên sau khi xác nhận thông tin cần phải chuyển lệnh giao dịch đó đến kiểm soát viên ký nhận trước khi hệ thống xử lý chính thức. Nếu số lượng người dùng lớn, số lượng giao dịch lớn, giao dịch viên liên tục phải di chuyển từ vị trí ngồi đến bàn kiểm soát viên để xử lý từng giao dịch một thì sẽ mất thời gian, nên cô ấy đã chuẩn bị một cặp tài liệu, và định sẵn là các lệnh chuyển tiền sẽ được cho vào đó, cứ 5 phút một lần, cô ấy sẽ chuyển cặp tài liệu đó đến kiểm soát viên, trong quá trình kiểm soát viên kiểm tra, xác nhận đống giấy tờ đó, cô ấy có thể về chỗ để nhận những giao dịch khác cho vào cặp hồ sơ tiếp theo.
Lúc này, cặp hồ sơ của cô giao dịch viên chính là block, chứa các lệnh giao dịch là transaction. Thời gian 5 phút giữa hai lần chuyển đi là block time - thời gian giữa 2 block liên tiếp nhau.
Khi hiểu được quy trình xử lý trên rồi, chúng ta nghĩ sâu hơn nữa về mặt hệ thống. Do blockchain là mạng phi tập trung, tức là dữ liệu được phân phối ở rất nhiều máy chủ, nhiều nơi trên thế giới. Dữ liệu truyền đi trên internet luôn có độ trễ, nếu các giao dịch được đẩy lên blockchain một cách tức thì có thể xảy ra tình huống một giao dịch tạo trước lại đến sau giao dịch khác (giao dịch trước tạo ra ở server xa hơn, giao dịch sau gần như ngay sau đó nhưng ở server gần đích hơn). Như vậy thì tính toàn vẹn và đúng đắn có thể bị sai lệch (VD: Giao dịch A: chuyển 100$ từ X -> Y, Giao dịch B: chuyển 50$ từ Y -> Z. Nếu B xảy ra trước A thì giao dịch lỗi do không đủ số tiền cần có ở tài khoản Y). Do đó, để đảm bảo các giao dịch cũ đã được đồng bộ tới các node khác trong mạng lưới Blockchain, các giao dịch được đẩy vào khối (block) rồi chuyển đi.
Tuy nhiên, số lượng giao dịch trong một block cũng có giới hạn, nguyên nhân nằm ở 2 điểm:
- Độ lớn dữ liệu truyền đi cần được giới hạn để hạn chế lỗi và đảm bảo thời gian trong quá trình đồng bộ tới các node khác
- Khi nhận được giao dịch, các node sẽ phải xác minh lại tính đúng đắn của từng giao dịch, nếu khối lượng quá lớn, thời gian xác minh có thể vượt quá thời gian nhận block tiếp theo -> các node nhanh chóng bị tụt lại phía sau và mạng bị phá vỡ.
Cơ bản một số thông tin là như vậy, tôi định viết thêm về cơ chế tính toán Block time trên Bitcoin, nhưng có vẻ như bài viết đã rất là dài rồi, để bài sau nhé.
Cảm ơn các bạn đã dành thời gian theo dõi, bài viết hơi dài nhưng để nói về Blockchain thì có lẽ cần x100 lần như thế này mới đủ mất.
Vậy nhé, chào trân trọng!