Blockchain ghi một giao dịch bằng cách để rất nhiều máy tính độc lập cùng kiểm tra giao dịch đó, gom nó với các giao dịch khác thành một khối, rồi nối khối ấy vào khối trước bằng một "dấu vân tay" mật mã gọi là mã băm (hash). Sửa một dòng cũ là dấu vân tay đổi, kéo theo đứt mọi mắt xích phía sau, nên kẻ gian phải làm lại toàn bộ phần việc đó nhanh hơn cả mạng lưới, hoặc thuyết phục được đa số mạng lưới đứng về phía mình.
Đó là toàn bộ ý nghĩa của chữ "không thể sửa" mà người ta hay nói. Thật ra không phải là không sửa được, mà là sửa thì quá tốn và quá lộ, nên trên một mạng lớn chẳng ai tỉnh táo lại đi thử. Phần dưới đây đi theo một giao dịch từ lúc bấm nút Gửi cho tới khi nó nằm yên trong sổ cái.
Bấm nút Gửi thì chuyện gì xảy ra?
Thử hình dung mình chuyển một ít tài sản số cho bạn. Ứng dụng ví không "chuyển đồng xu" theo kiểu app ngân hàng trông như đang chuyển tiền. Nó soạn một mẩu tin ngắn, đại ý: địa chỉ này trao cho địa chỉ kia số lượng này, kèm một khoản phí cho người ghi sổ. Rồi nó ký mẩu tin ấy bằng khoá riêng (private key) của mình. Chữ ký là một phép toán mà ai cũng kiểm được bằng địa chỉ công khai, nhưng không ai giả được nếu không có khoá.
Mẩu tin đã ký được gửi tới vài máy tính trong mạng, gọi là nút (node). Trước khi chuyển tiếp, mỗi nút kiểm hai việc: chữ ký có hợp lệ không, và địa chỉ gửi có đủ số dư không. Sai một trong hai là nút bỏ luôn. Đúng cả hai thì nút chuyền cho các nút hàng xóm, và chỉ vài giây sau giao dịch đã lan ra hàng nghìn máy chưa từng biết mình là ai.
Giao dịch hợp lệ nằm chờ trong một "phòng đợi" thường gọi là mempool, giống hàng người xếp trước quầy bưu điện. Ai được quyền viết trang sổ kế tiếp, tuỳ mạng là thợ đào (miner) hay người xác thực (validator), sẽ nhặt giao dịch từ hàng chờ này. Lúc mạng đông, họ thường ưu tiên giao dịch trả phí cao hơn, nên cùng một lần chuyển mà sáng chủ nhật vắng vẻ tốn ít, còn lúc thị trường hoảng loạn lại tốn gấp mấy lần.
Các giao dịch được chọn sẽ đóng vào một khối. Trong khối có mã băm của khối liền trước, chính chi tiết đó biến các khối thành một chuỗi. Khi mạng chấp nhận khối, giao dịch của mình có một xác nhận (confirmation). Mỗi khối mới chồng lên lại thêm một xác nhận. Sàn và người bán thường chờ vài xác nhận mới coi khoản tiền là xong, vì khối mới nhất là khối dễ bị thay nhất nếu hai bên tạo khối tạm thời lệch nhau.
Để ý những việc đã không xảy ra: không có máy chủ trung tâm nào duyệt, không ai kiểm tên tuổi, và khi giao dịch đã vào khối thì không có nút "huỷ". Điểm cuối cùng là điều làm nhiều người bất ngờ nhất, và cũng là lý do cả chuyên mục này dành nhiều chỗ cho khoá, địa chỉ và các chiêu lừa.
Mấy thuật ngữ blockchain hay gặp, mỗi cái một dòng
Mã băm (hash). Dấu vân tay có độ dài cố định của bất kỳ dữ liệu nào. Đổi một dấu phẩy ở đầu vào là dấu vân tay khác hẳn, nên sửa lén là lộ ngay.
Khối (block). Một lô giao dịch kèm phần đầu khối có ghi mã băm của khối trước. Phần đầu khối chính là sợi chỉ khâu các trang sổ lại với nhau.
Nút (node). Máy tính giữ một bản sổ cái và kiểm luật. Có nút tạo khối, nhưng phần đông chỉ làm việc kiểm tra.
Chữ ký số. Bằng chứng, tạo ra bằng khoá riêng, rằng chủ địa chỉ đã đồng ý đúng mẩu tin này. Không bê chữ ký sang mẩu tin khác dùng lại được.
Mempool. Phòng chờ của các giao dịch hợp lệ chưa vào khối. Mỗi nút thấy một phòng chờ hơi khác nhau, không phải một danh sách duy nhất.
Đồng thuận (consensus). Bộ luật quyết định ai viết khối kế tiếp và cả mạng theo bản chuỗi nào khi có bất đồng.
Xác nhận. Mỗi khối được thêm sau khối chứa giao dịch của mình. Càng nhiều xác nhận càng khó đảo ngược.
Phí giao dịch. Khoản trả cho bên tạo khối để giao dịch được đưa vào. Phí phụ thuộc độ đông của mạng chứ không phụ thuộc số tiền mình chuyển.
Tính chung cuộc (finality). Thời điểm giao dịch được coi là vĩnh viễn. Có mạng đạt được sau một mốc cố định, có mạng chỉ làm cho việc đảo ngược ngày càng khó dần.
Vì sao không ai sửa được sổ cái?
Nhớ lại kiểu hụi, kiểu quỹ tiết kiệm trong xóm ngày trước, nhưng thêm một luật: ai cũng giữ một cuốn sổ giống hệt nhau. Tối nào người giữ quỹ cũng đọc các khoản trong ngày, mọi người cùng chép, và cuối trang ai cũng ghi thêm một mã ngắn tính từ nội dung trang đó cộng với mã cuối trang hôm qua. Nếu tháng sau có người tẩy một dòng cũ, mã trong sổ người đó lệch từ trang ấy trở đi. Cả xóm nhìn qua là biết cuốn nào bị sửa.
Blockchain làm đúng việc đó, chỉ là bằng máy tính và toán học mạnh hơn nhiều. Mã băm của mỗi khối phụ thuộc vào nội dung khối và mã băm khối trước. Muốn sửa một giao dịch cũ thì phải tính lại khối đó cùng mọi khối phía sau, rồi còn phải làm sao để cả mạng chọn bản viết lại của mình thay cho bản họ đang có.
Khó tới đâu thì tuỳ cơ chế đồng thuận. Với bằng chứng công việc (proof of work), tạo một khối phải đốt sức máy thật, nên viết lại lịch sử nghĩa là phải có sức máy lớn hơn tất cả những người trung thực cộng lại. Với bằng chứng cổ phần (proof of stake), người tạo khối phải khoá một khoản tài sản của chính mạng đó làm tiền cọc, gian lận là có thể mất cọc. Cả hai thiết kế đều làm cho việc trung thực trở thành lựa chọn rẻ nhất, thay vì trông vào lòng tin.
Nói cho đủ: mạng nhỏ, ít người tham gia thì dễ bị tấn công hơn mạng lớn rất nhiều, và đã có những vụ thật sự viết lại lịch sử trên các chuỗi nhỏ. Vì vậy chữ "blockchain" tự nó không phải lời bảo đảm. Quy mô, độ phân tán và cách thưởng phạt của từng mạng cụ thể mới là thứ quyết định.
Proof of work và proof of stake khác nhau ở đâu?
Hai cơ chế đồng thuận phổ biến nhất cùng giải một bài toán theo hai cách. Không cái nào hơn hẳn về mọi mặt, mỗi bên chịu một loại chi phí khác nhau.
| Khía cạnh | Bằng chứng công việc | Bằng chứng cổ phần |
|---|---|---|
| Ai viết khối | Thợ đào cạnh tranh bằng sức máy | Người xác thực được chọn theo tỉ lệ tiền cọc đã khoá |
| Muốn tham gia phải bỏ ra gì | Máy chuyên dụng và tiền điện | Nắm giữ và khoá tài sản của mạng |
| Cái gì ngăn gian lận | Viết lại lịch sử cần sức máy lớn hơn phần đông trung thực | Người xác thực làm bậy có thể bị trừ một phần tiền cọc |
| Bị chê nhiều nhất ở | Tốn điện | Ảnh hưởng dễ dồn về tay người nắm nhiều |
| Khi nào giao dịch coi như xong | Dần dần, khi có thêm khối chồng lên | Thường ở một mốc kiểm định rõ ràng, tuỳ thiết kế |
Mạng dùng cơ chế nào thì bài học cho người dùng bình thường vẫn vậy: chờ đủ số xác nhận bên nhận yêu cầu, đừng coi giao dịch là xong chỉ vì ví báo "đã gửi".
Những điều blockchain không hề bảo đảm
Dữ liệu là đúng sự thật. Blockchain lưu trung thành mọi thứ được gửi lên. Ai đó ghi một thông tin sai thì giờ nó thành thông tin sai được lưu vĩnh viễn.
Ai đứng sau một địa chỉ. Chuỗi chỉ biết khoá, không biết người. Một cái tên thân quen trong app chat không chứng minh được địa chỉ đó là của người ấy.
Gửi nhầm thì lấy lại được. Chuyển nhầm địa chỉ thì thường chẳng có tổng đài nào đảo lại cho. Chỉ người nhận mới gửi trả được.
Sự riêng tư. Phần lớn blockchain công khai đều minh bạch. Ai cũng lần theo được dòng tiền giữa các địa chỉ, và chỉ cần một địa chỉ bị gắn với danh tính là nhiều lịch sử giao dịch của mình lộ theo.
Phí rẻ. Phí trôi theo nhu cầu. Ngày vắng chuyển gần như không mất gì, ngày mạng kẹt có thể tốn hơn hẳn.
Tốc độ. Có mạng xác nhận trong vài giây, có mạng mất nhiều phút. Bên nhận còn có thể chờ thêm vài xác nhận mới làm tiếp.
Dự án là đàng hoàng. Một token chạy trên blockchain chắc chắn vẫn có thể do những người tính chuyện ôm tiền biến mất phát hành. Sổ cái thì chuẩn, con người thì chưa chắc.
Pháp lý rõ ràng. Quy định về tài sản số khác nhau giữa các nước và ở Việt Nam vẫn đang thay đổi. Trước khi dựa vào bất kỳ giả định nào, nên tra văn bản hiện hành hoặc hỏi luật sư.
Tự xem tận mắt mà không tốn đồng nào
Không cần mua gì cũng xem được blockchain chạy ra sao. Mạng công khai lớn nào cũng có trang tra cứu khối (block explorer), hiện các khối và giao dịch ngay khi chúng tới. Tìm một khối gần đây rồi nhìn từng phần: danh sách giao dịch, mã băm của khối, và mã băm của khối trước mà nó trỏ về. Đặt hai mã băm cạnh nhau là hiểu ngay chữ "chuỗi" nghĩa là gì.
Nhiều mạng còn có mạng thử nghiệm (testnet), nơi tài sản không có giá trị gì và chỉ để tập. Lập trình viên dùng nó để thử cho an toàn, người mới học cũng dùng được. Một ví thử cho phép mình gửi, chờ xác nhận và đọc chính giao dịch của mình trên trang tra cứu mà không có đồng tiền thật nào bị đem ra mạo hiểm.
Có một lời dặn áp dụng cả ở đây: chỉ dùng trang tra cứu và công cụ thử mà mình tự gõ địa chỉ quen thuộc để vào, đừng bấm từ quảng cáo hay đường link người lạ gửi. Trang tra cứu giả, trang "thử nghiệm" giả sinh ra chính là để dụ người mới tò mò kết nối ví thật.
Nếu học để phục vụ công việc, chẳng hạn để đánh giá sản phẩm "ứng dụng blockchain" mà một nhà cung cấp chào, thì tự tay xem như vầy đáng giá hơn mọi bài thuyết trình. Mình sẽ nhanh chóng thấy phần nào thật sự nằm trên chuỗi, còn phần nào chỉ là cơ sở dữ liệu bình thường được dán thêm nhãn blockchain.
Câu hỏi thường gặp
Giao dịch blockchain có đảo ngược được không?
Thông thường là không. Khi giao dịch đã vào khối và đủ xác nhận, chỉ người nhận mới có thể tự nguyện gửi trả lại.
Vì sao giao dịch cứ nằm ở trạng thái "đang chờ" rất lâu?
Thường là do phí đặt thấp so với độ đông của mạng nên bên tạo khối cứ ưu tiên giao dịch khác. Một số ví cho phép thay bằng giao dịch phí cao hơn, xem hướng dẫn của chính ví đó.
Blockchain có phải là Bitcoin không?
Không. Bitcoin là một mạng dùng blockchain. Ý tưởng sổ cái dùng chung, nối bằng mã băm còn được nhiều mạng khác và cả một số hệ thống nội bộ của doanh nghiệp sử dụng.
Blockchain có biết tên mình không?
Bản thân chuỗi chỉ lưu địa chỉ, không lưu tên. Nhưng sàn có xác minh danh tính, hay một bài đăng công khai gắn mình với một địa chỉ, đều có thể nối danh tính của mình với lịch sử giao dịch trên chuỗi.
Bao nhiêu xác nhận là đủ?
Tuỳ mạng và tuỳ giá trị giao dịch, thường bên nhận sẽ quy định. Cứ theo con số dịch vụ nhận tiền công bố, đừng theo mẹo truyền miệng trên diễn đàn.