Nội dung
Chi tiêu hai lần là gì?
Chi tiêu hai lần là một vấn đề có thể xảy ra trong hệ thống tiền kỹ thuật số, trong đó cùng một khoản tiền được chi cho hai người nhận cùng một lúc. Nếu không có bất kỳ biện pháp đối phó thích hợp nào, một giao thức không giải quyết được vấn đề về cơ bản sẽ bị hủy hoại – người dùng không có cách nào để xác minh rằng số tiền họ nhận được chưa được sử dụng ở nơi khác.
Khi nói đến tiền kỹ thuật số, việc đảm bảo rằng các đơn vị tiền không bị nhân đôi là điều tối quan trọng. Toàn bộ hệ thống sẽ bị hủy hoại nếu Alice có thể nhận được 10 đồng tiền, sao chép và dán chúng 10 lần, sau đó sở hữu 100 đồng tiền. Tương tự, hệ thống cũng sẽ không thể hoạt động nếu cô ấy có thể gửi cùng lúc 10 đồng cho cả Bob và Carol. Vì vậy, để tiền kỹ thuật số hoạt động, phải có cơ chế để ngăn chặn hành vi này.
Làm thế để ngăn chặn chi tiêu hai lần?
Cách tiếp cận tập trung
Cách tiếp cận tập trung dễ thực hiện hơn so với các giải pháp thay thế phi tập trung. Cách tiếp cận này thường bao gồm việc một giám sát viên quản lý hệ thống và kiểm soát việc phát hành và phân phối các đồng tiền. Một ví dụ điển hình về giải pháp tập trung cho vấn đề chi tiêu hai lần là vấn đề tiền mặt điện tử (eCash) của David Chaum.
Trong bối cảnh như vậy, nếu một người dùng (hãy gọi anh ta là Dan) muốn nhận 100 đô la tiền mặt kỹ thuật số, anh ta phải thông báo trước cho ngân hàng. Với điều kiện anh ta có số dư trong tài khoản của mình, sau đó anh ta sẽ tạo một số ngẫu nhiên (hoặc nhiều số cho các đồng tiền có mệnh giá nhỏ hơn). Giả sử anh ta tạo ra năm số, mỗi số được gán một giá trị là 20 đô la. Để ngăn ngân hàng theo dõi các đồng tiền, Dan che giấu các số ngẫu nhiên bằng cách thêm một yếu tố gây mù cho mỗi đồng tiền.
Sau đó, anh ta chuyển dữ liệu này cho ngân hàng, ghi nợ tài khoản của anh ta số tiền100 đô la và ký các tin nhắn xác nhận rằng mỗi thông tin trong số năm thông tin có thể được quy đổi thành 20 đô la. Bây giờ Dan có thể chi tiêu các khoản tiền do ngân hàng phát hành. Anh ta đến nhà hàng của Erin và mua một bữa ăn trị giá 40 đô la.
Dan có thể loại bỏ yếu tố gây mù để lộ số ngẫu nhiên liên quan đến từng ”hóa đơn” tiền kỹ thuật số, hóa đơn này có chức năng như một mã định danh duy nhất cho mỗi đồng tiền (giống như số sê-ri). Anh ta tiết lộ hai số trong đó cho Erin, người này phải ngay lập tức đổi chúng với ngân hàng để ngăn Dan chi tiêu chúng với một thương gia khác. Ngân hàng sẽ kiểm tra xem các chữ ký có hợp lệ không và nếu mọi thứ có vẻ chính xác, nó sẽ ghi cộng vào tài khoản của Erin 40 đô la.
Các hóa đơn đã được sử dụng sẽ được đốt cháy và phải phát hành thêm các hóa đơn khác nếu Erin muốn sử dụng số dư mới của mình theo cách tương tự.
Thiết lập Chaumian eCash có thể có ý nghĩa quan trọng đối với các phương thức chuyển khoản riêng tư. Tuy nhiên, khả năng phục hồi của nó không tốt vì ngân hàng là điểm thất bại trung tâm. Bản thân hóa đơn được phát hành không có giá trị gì, vì nó chỉ có giá trị khi ngân hàng sẵn sàng đổi nó lấy đô la. Khách hàng hoàn toàn phụ thuộc vào quyền lực của ngân hàng, và phải dựa vào sự thiện chí của nó để có tiền. Đây chính xác là vấn đề mà tiền mã hóa sẽ giải quyết.
Cách tiếp cận phi tập trung
Đảm bảo rằng các khoản tiền không thể được chi tiêu hai lần trong một hệ sinh thái không có người giám sát sẽ khó khăn hơn. Những người tham gia có quyền lực ngang bằng nhau phải phối hợp quanh một bộ quy tắc giúp ngăn chặn gian lận và khuyến khích tất cả người dùng hành động trung thực.
Hãy quay trở lại kịch bản xảy ra ở nhà hàng. Dan trở lại nhà hàng và lần này nhận thấy nhãn dán Bitcoin được chấp nhận ở đây trên cửa sổ. Anh ấy rất thích bữa ăn lần trước, nên gọi món đó lần nữa. Nó có giá 0,005 BTC.
Tuy nhiên, như đã đề cập, giao dịch chỉ có hiệu lực nếu được bao gồm trong một khối đã được xác nhận. Chấp nhận các giao dịch chưa được xác nhận cũng giống như chấp nhận $40 trong eCash từ ví dụ trước mà không cần ngay lập tức gửi tiền vào ngân hàng – điều đó cho phép người gửi chi tiêu ở nơi khác. Vì vậy, chúng tôi khuyên Erin nên đợi ít nhất có 6 xác nhận khối (khoảng một giờ) trước khi chấp nhận thanh toán của Dan.
Chi tiêu hai lần trong Bitcoin
Bitcoin được thiết kế cẩn thận để ngăn chặn các cuộc tấn công chi tiêu hai lần, ít nhất là khi giao thức được sử dụng như mong đợi. Nghĩa là, nếu các cá nhân chờ đợi các giao dịch được xác nhận trong một khối, không có cách nào dễ dàng để người gửi hoàn tác nó. Để làm như vậy, họ sẽ cần phải “đảo ngược” các blockchain, điều này đòi hỏi một sức mạnh băm rất lớn và không thể thực hiện được.
Tuy nhiên, có một số ít các cuộc tấn công chi tiêu hai lần nhằm vào các bên chấp nhận các giao dịch chưa được xác nhận. Chẳng hạn, đối với các giao dịch mua giá trị thấp, người giao dịch có thể không muốn đợi các giao dịch được đưa vào một khối. Một nhà hàng thức ăn nhanh bận rộn có lẽ không thể chấp nhận thời gian mạng xử lý mỗi hóa đơn. Vì vậy, nếu một doanh nghiệp cho phép thanh toán “tức thời” , họ có rủi ro gặp gian lận chi tiêu hai lần. Ai đó có thể đặt hàng một bánh mì kẹp thịt, trả tiền cho nó, sau đó ngay lập tức gửi cùng một khoản tiền đến địa chỉ của họ. Với mức phí cao hơn, giao dịch mới này có thể sẽ được xác nhận trước, và do đó sẽ vô hiệu hóa giao dịch trước đó.
Có ba phương pháp phổ biến để thực hiện chi tiêu hai lần:
- Tấn công 51%: khi một thực thể hoặc tổ chức kiểm soát hơn 50% tỷ lệ băm, điều này cho phép họ loại trừ hoặc sửa đổi thứ tự giao dịch. Một cuộc tấn công như vậy rất khó xảy ra đối với Bitcoin, nhưng đã xảy ra trong các mạng khác.
- Tấn công cuộc đua: hai giao dịch xung đột được truyền đi liên tiếp, sử dụng cùng một khoản tiền – nhưng chỉ có một giao dịch được xác nhận. Mục tiêu của kẻ tấn công là vô hiệu hóa một giao dịch bằng cách chỉ xác nhận giao dịch có lợi cho anh ta (ví dụ: gửi cùng một khoản tiền đến địa chỉ mà anh ta kiểm soát). Các cuộc tấn công cuộc đua yêu cầu người nhận chấp nhận một giao dịch chưa được xác nhận là thanh toán.
- Tấn công Finney: kẻ tấn công khai thác trước một giao dịch thành một khối mà không truyền nó lên mạng ngay lập tức. Thay vào đó, anh ta tiêu cùng một khoản tiền đó trong một giao dịch khác, và chỉ khi đó mới truyền khối được khai thác trước đó, điều này có thể làm mất hiệu lực giao dịch. Các cuộc tấn công Finney một chuỗi các sự kiện cụ thể xảy ra và cũng phụ thuộc vào sự chấp nhận của người nhận đối với các giao dịch chưa được xác nhận.
Như chúng ta có thể thấy, việc chờ xác nhận khối sẽ giảm đáng kể rủi ro trở thành nạn nhân của chi tiêu hai lần.
Kết luận
Chi tiêu hai lần cho phép người dùng đánh lừa hệ thống tiền mã hóa để kiếm lợi nhuận bằng cách sử dụng cùng một khoản tiền nhiều lần. Thông thường, việc thiếu các giải pháp thích hợp cho vấn đề sẽ cản trở quá trình phát triển của vấn đề.