Chi tiêu hai lần là nguy cơ một đồng tiền số bị dùng để trả cho hai giao dịch khác nhau. Vì mọi thứ trên máy tính đều có thể sao chép, một tệp đại diện cho tiền cũng có thể bị sao ra và gửi đi hai lần. Trước Bitcoin, mọi hệ thống tiền số giải bài toán này bằng cách đặt một bên trung gian giữ sổ và kiểm tra từng giao dịch. Bitcoin là hệ thống đầu tiên được sử dụng rộng rãi giải bài toán này mà không cần bên trung gian, bằng sổ cái công khai, chuỗi khối có dấu thời gian và bằng chứng công việc.
Bài viết này đi từ bản chất của bài toán đến cách Bitcoin giải, và những giới hạn của lời giải đó. Hiểu bài toán chi tiêu hai lần là chìa khoá để hiểu vì sao Bitcoin được thiết kế như hiện nay.
Vì sao tiền số khác tiền mặt
Tờ tiền giấy có một tính chất tự nhiên: khi bạn đưa nó cho người bán, bạn không còn nó nữa. Vật lý đã giải bài toán chi tiêu hai lần thay bạn. Không ai cần kiểm tra sổ sách khi bạn trả tiền mặt.
Dữ liệu số thì khác. Một tấm ảnh gửi đi vẫn còn nguyên trên máy bạn. Nếu tiền số chỉ là một chuỗi bit, không có gì ngăn bạn gửi cùng chuỗi bit đó cho người thứ hai, người thứ ba.
Vì vậy, mọi hệ thống tiền số cần một cách để biết một đồng tiền đã được tiêu hay chưa. Câu hỏi là ai giữ thông tin đó, và vì sao mọi người tin.
Đây không phải chi tiết kỹ thuật nhỏ, mà là bài toán trung tâm. Giải được nó là có tiền số, không giải được thì chỉ có bản sao chép vô hạn.
Lời giải kinh điển: bên trung gian
Cách giải quen thuộc là có một bên trung gian giữ sổ cái duy nhất. Ngân hàng, ví điện tử, công ty thẻ đều làm như vậy: mỗi khi bạn chuyển tiền, họ kiểm tra số dư, ghi nợ bạn, ghi có người nhận, và từ chối nếu bạn không đủ tiền.
Lời giải này hiệu quả, nhanh, quen thuộc. Nhưng nó có chi phí: mọi người phải tin bên trung gian. Bên trung gian có thể mắc lỗi, bị tấn công, bị yêu cầu đóng băng tài khoản, thu phí, hoặc đơn giản là ngừng hoạt động.
Những hệ thống tiền số trước Bitcoin, kể cả những hệ thống rất tinh vi về mật mã, đều dựa vào một máy chủ trung tâm để chống chi tiêu hai lần. Khi công ty vận hành sụp đổ hay bị đóng cửa, hệ thống biến mất theo.
Câu hỏi mà Bitcoin đặt ra là: có thể chống chi tiêu hai lần mà không cần tin bất kỳ bên nào không.
Bước một: công khai mọi giao dịch
Sách trắng Bitcoin bắt đầu từ một nhận xét đơn giản: cách duy nhất để xác nhận một giao dịch chưa từng xảy ra trước đó là biết tất cả các giao dịch. Nếu không có bên trung gian, thì mọi người tham gia phải cùng biết.
Vì vậy, Bitcoin công khai mọi giao dịch. Mỗi giao dịch được phát tán đến toàn mạng, và mỗi nút đầy đủ giữ một bản sao của toàn bộ lịch sử.
Khi nhận một giao dịch mới, nút kiểm tra: lượng bitcoin mà giao dịch này chi tiêu đã được chi tiêu trước đó chưa. Nếu rồi, giao dịch bị từ chối.
Nhưng công khai thôi chưa đủ. Nếu hai giao dịch mâu thuẫn được phát tán gần như cùng lúc, các nút ở những nơi khác nhau có thể nhận chúng theo thứ tự khác nhau. Cần một cách để cả mạng thống nhất thứ tự.
Bước hai: dấu thời gian bằng chuỗi khối
Lời giải của Bitcoin là một máy chủ dấu thời gian phân tán. Giao dịch được gom thành khối, mỗi khối mang dấu vân tay của khối trước. Thứ tự các khối trong chuỗi chính là thứ tự thời gian được mạng lưới công nhận.
Nếu hai giao dịch mâu thuẫn, giao dịch nằm trong khối được chấp nhận trước là giao dịch được tính. Giao dịch kia trở thành không hợp lệ vì nó chi tiêu thứ đã bị chi tiêu.
Nhưng ai được quyền tạo khối? Nếu ai cũng tạo được tuỳ ý, kẻ gian chỉ việc tạo một chuỗi khối riêng có thứ tự có lợi cho mình.
Đây là chỗ bằng chứng công việc xuất hiện.
Bước ba: bằng chứng công việc
Để tạo một khối hợp lệ, thợ đào phải tìm một giá trị làm cho dấu vân tay của khối nhỏ hơn ngưỡng do độ khó quy định. Việc này chỉ có thể làm bằng cách thử rất nhiều lần, tốn điện và phần cứng thật.
Các nút tuân theo một quy tắc: chuỗi hợp lệ có tổng công việc tích luỹ lớn nhất là chuỗi đúng. Thường gọi nôm na là chuỗi dài nhất, nhưng chính xác là chuỗi nặng nhất về công việc.
Muốn đảo ngược một giao dịch đã nằm trong khối, kẻ gian phải tạo lại khối đó và mọi khối sau nó, rồi vượt qua chuỗi chính đang tiếp tục được cả mạng lưới kéo dài. Sách trắng tính toán rằng nếu kẻ gian nắm ít hơn một nửa sức mạnh tính toán, xác suất đuổi kịp giảm theo cấp số nhân khi số khối phía sau tăng lên.
Đây là lý do người ta chờ thêm vài xác nhận cho những giao dịch giá trị lớn: mỗi khối thêm vào làm việc viết lại đắt hơn và khó hơn rất nhiều.
Giới hạn của lời giải
Lời giải của Bitcoin không loại bỏ hoàn toàn khả năng chi tiêu hai lần, mà biến nó thành một bài toán xác suất và chi phí. Một giao dịch chưa có xác nhận nào vẫn có thể bị thay thế. Một giao dịch có một xác nhận vẫn có xác suất nhỏ bị đảo ngược nếu xảy ra tái tổ chức chuỗi.
Nếu một bên nắm hơn một nửa sức mạnh tính toán, họ có thể viết lại lịch sử gần đây, kiểu tấn công gọi là năm mươi mốt phần trăm. Với mạng Bitcoin hiện nay, chi phí cho việc này cực kỳ lớn. Với những chuỗi nhỏ dùng bằng chứng công việc, các cuộc tấn công như vậy đã từng xảy ra.
Lời giải cũng có cái giá: điện năng tiêu thụ, thời gian chờ xác nhận, giới hạn số giao dịch mỗi khối. Đây là những đánh đổi được bàn trong các danh mục khai thác và mở rộng.
Không có lời giải hoàn hảo. Bitcoin chọn đánh đổi tốc độ và năng lượng để lấy việc không cần tin bên trung gian.
Những điểm cần nhớ về chi tiêu hai lần
Bản chất bài toán Dữ liệu số sao chép được, nên cần cơ chế biết một lượng tiền đã được tiêu hay chưa.
Lời giải truyền thống Bên trung gian giữ sổ duy nhất, nhanh nhưng phải tin bên đó.
Công khai giao dịch Mọi giao dịch Bitcoin được phát tán và mỗi nút đầy đủ giữ toàn bộ lịch sử.
Thứ tự bằng chuỗi khối Khối nối nhau bằng dấu vân tay, thứ tự trong chuỗi là thứ tự được công nhận.
Chuỗi nặng nhất Nút chọn chuỗi hợp lệ có tổng công việc lớn nhất, không đơn thuần là nhiều khối nhất.
Xác nhận Mỗi khối thêm vào sau giao dịch là một xác nhận, làm việc đảo ngược khó hơn.
Giao dịch chưa xác nhận Vẫn có thể bị thay thế; không nên coi là đã hoàn tất.
Tái tổ chức chuỗi Đôi khi vài khối cuối bị thay bằng nhánh khác nặng hơn, giao dịch trong đó trở lại hàng chờ.
Tấn công năm mươi mốt phần trăm Bên nắm đa số sức mạnh tính toán có thể viết lại lịch sử gần đây.
Chi phí tấn công Với mạng lớn, chi phí phần cứng và điện cho tấn công cực kỳ cao so với lợi ích.
Chuỗi nhỏ dễ tổn thương Các chuỗi bằng chứng công việc ít người đào từng bị tấn công chi tiêu hai lần.
Lời nhắc chống lừa đảo Ảnh chụp giao dịch không phải là bằng chứng; hãy kiểm tra trạng thái và số xác nhận trên chuỗi.
Vì sao điều này quan trọng với người dùng
Hiểu bài toán chi tiêu hai lần giúp bạn hiểu những điều tưởng chừng nhỏ: vì sao giao dịch cần thời gian xác nhận, vì sao nhiều dịch vụ chờ nhiều khối mới ghi nhận, vì sao phí giao dịch ảnh hưởng đến tốc độ.
Nó cũng giúp nhận ra lừa đảo. Kẻ gian có thể gửi một giao dịch chưa xác nhận, hoặc ảnh chụp màn hình giả, rồi đòi bạn giao hàng ngay. Giao dịch chưa xác nhận thì chưa chắc chắn.
Cuối cùng, nó giúp đánh giá những lời quảng cáo về các blockchain khác. Một chuỗi hứa xác nhận tức thì, phí bằng không, hãy hỏi: họ đã đánh đổi điều gì để chống chi tiêu hai lần.
Như mọi bài trên trang, đây là kiến thức về cơ chế, không phải hướng dẫn giao dịch.
Câu hỏi thường gặp
Chi tiêu hai lần là gì?
Là việc dùng cùng một lượng tiền số cho hai giao dịch khác nhau, khả thi vì dữ liệu số sao chép được nếu không có cơ chế ngăn chặn.
Bitcoin chống chi tiêu hai lần thế nào?
Bằng sổ cái công khai, chuỗi khối xác định thứ tự giao dịch, và bằng chứng công việc làm cho việc viết lại lịch sử rất tốn kém.
Vì sao cần chờ nhiều xác nhận?
Mỗi khối thêm vào làm cho việc đảo ngược giao dịch khó hơn và đắt hơn theo cấp số nhân.
Giao dịch chưa xác nhận có an toàn không?
Chưa. Nó vẫn có thể bị thay thế bởi giao dịch khác chi tiêu cùng lượng bitcoin.
Chuỗi dài nhất có phải chuỗi nhiều khối nhất không?
Chính xác là chuỗi hợp lệ có tổng công việc tích luỹ lớn nhất, không đơn thuần là nhiều khối nhất.