Chi tiêu gấp đôi là gì?

Chi tiêu gấp đôi là một vấn đề tiềm ẩn trong hệ thống tiền kỹ thuật số, nơi cùng một khoản tiền được gửi đến hai người nhận cùng một lúc. Trong trường hợp không có các biện pháp đối phó thích hợp, một giao thức không giải quyết được vấn đề về cơ bản sẽ dẫn đến thất bạ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 chi tiêu vào nơi khác.

Khi nói đến tiền kỹ thuật số, điều cần thiết là phải đảm bảo rằng các đơn vị cụ thể không thể bị trùng lặp. Toàn bộ hệ thống sẽ bị xâm phạm nếu Alice có thể nhận được 10 đơn vị, sao chép và dán chúng 10 lần và kết thúc với 100 đơn vị. Tương tự như vậy, một hệ thống như vậy không thể hoạt động nếu nó có thể gửi cùng lúc 10 đơn vị giống nhau cho Bob và Carol. Để 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ế nào để tránh chi tiêu gấp đôi?

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 đáng kể so với các giải pháp thay thế phi tập trung. Điều này thường liên quan đến một người giám sát quản lý hệ thống và kiểm soát việc phát hành và phân phối các đơn vị. Một ví dụ điển hình về giải pháp tập trung cho vấn đề chi tiêu gấp đôi là eCash của David Chaum.

Để phát hành cho người dùng một tài sản kỹ thuật số mô phỏng tiền (có thể sử dụng để thực hiện trao đổi ngang hàng, ẩn danh), ngân hàng có thể sử dụng chữ ký mù, như chi tiết của nhà mật mã học David Chaum trong bài báo Blind Signatures for Untraceable Payments năm 1982 của ông.

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 kỹ thuật số, trước tiên anh ta phải thông báo cho ngân hàng. Nếu họ có số dư trong tài khoản, họ sẽ tạo một số ngẫu nhiên (hoặc một số, đối với các mệnh giá nhỏ). Giả sử anh ta đưa ra năm số, mỗi số được gán giá trị là 20 USD. Để ngăn ngân hàng phát hiện ra các đơn vị cụ thể, Dan xáo trộn các số ngẫu nhiên bằng cách thêm hệ số gây mù cho mỗi đơn vị.

Sau đó, anh ta đưa dữ liệu này cho ngân hàng, ngân hàng sẽ ghi nợ tài khoản của anh ta 100 đô la và ký các tin nhắn xác nhận rằng mỗi đồng tiền trong số năm đồng xu có thể đổi được 20 đô la. Bây giờ Dan có thể tiêu số 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 với giá 40 đô la.

Dan có thể loại bỏ yếu tố gây mù để hiển thị số ngẫu nhiên được liên kết với mỗi “tiền kỹ thuật số”, đóng vai trò là mã định danh duy nhất cho mỗi đơn vị (giống như số sê-ri). Anh ta tiết lộ hai chiếc cho Erin, người bây giờ phải đổi chúng ngay lập tức với ngân hàng để ngăn Dan tiêu chúng cho một thương gia khác. Ngân hàng sẽ xác minh rằng chữ ký là hợp lệ và nếu mọi thứ đều ổn, họ sẽ ghi có 40 đô la vào tài khoản của Erin.

Những chiếc vé đã qua sử dụng giờ đây về cơ bản là vô dụng và phải phát hành nhiều hơn nếu Erin muốn chi tiêu số dư mới của mình theo cách tương tự.

Hệ thống eCash của Chaumian có thể hữu ích cho việc chuyển tiền cá nhân. Nhưng nó không thể phục hồi vì ngân hàng là trung tâm của sự thất bại. Bản thân một tờ tiền được phát hành không có giá trị gì vì giá trị của nó chỉ đến từ việc ngân hàng sẵn sàng đổi nó lấy đô la. Khách hàng phụ thuộc vào ngân hàng và phải dựa vào thiện chí của ngân hàng để tiền có thể hoạt động. Đây chính xác là vấn đề mà tiền điện tử muốn giải quyết.


Cách tiếp cận phi tập trung

Khó khăn hơn để đảm bảo rằng tiền không thể được chi tiêu hai lần trong một hệ sinh thái mà không có người giám sát. Những người tham gia có quyền lực ngang nhau phải phối hợp xung quanh một bộ quy tắc 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.

Sự đổi mới lớn nhất được trình bày trong sách trắng Bitcoin là giải pháp cho vấn đề chi tiêu gấp đôi. Mặc dù không được đề cập như vậy nhưng Satoshi đã đề xuất cấu trúc dữ liệu hiện được gọi là blockchain.

Blockchain thực chất chỉ là một cơ sở dữ liệu với một số thuộc tính độc đáo nhất định. Những người tham gia mạng (được gọi là nút) chạy phần mềm chuyên dụng, cho phép họ đồng bộ hóa bản sao cơ sở dữ liệu của họ với các đồng nghiệp của họ. Kết quả là toàn bộ mạng có thể kiểm tra lịch sử giao dịch và truy tìm lại khối gốc. Bởi vì blockchain được cung cấp công khai nên rất dễ phát hiện và ngăn chặn hoạt động gian lận, chẳng hạn như các giao dịch cố gắng chi tiêu gấp đôi.

Khi người dùng phát một giao dịch, nó không được thêm ngay vào blockchain mà trước tiên nó phải được đưa vào một khối thông qua việc khai thác. Do đó, người nhận chỉ nên coi giao dịch là hợp lệ sau khi khối của họ được thêm vào chuỗi. Nếu không, họ có nguy cơ mất tiền vì người gửi có thể chi tiêu số tiền tương tự ở nơi khác.

Sau khi giao dịch được xác nhận, các đơn vị không thể được sử dụng hai lần vì quyền sở hữu được chỉ định cho người dùng mới và toàn bộ mạng có thể xác minh điều này. Vì lý do này mà nhiều người khuyên bạn nên đợi một số xác nhận trước khi coi khoản thanh toán là hợp lệ. Mỗi khối tiếp theo sẽ làm tăng đáng kể nỗ lực cần thiết để sửa đổi hoặc viết lại chuỗi (điều này có thể xảy ra trong cuộc tấn công 51%).

Hãy quay trở lại kịch bản nhà hàng. Dan quay lại nhà hàng và lần này, có một nhãn dán Bitcoin được chấp nhận trên cửa sổ. Anh ấy rất thích bữa ăn lần trước nên anh ấy gọi món lần nữa. Nó tiêu tốn của anh ta 0,005 BTC.

Erin chỉ cho anh ta một địa chỉ công cộng mà anh ta nên gửi tiền đến. Dan phát đi giao dịch, về cơ bản là một thông báo đã được ký cho biết rằng 0,005 BTC mà Dan sở hữu giờ là của Erin. Không cần nhiều chi tiết, bất kỳ ai trình bày giao dịch đã ký của Dan đều có thể xác minh rằng anh ta thực sự sở hữu số tiền và do đó có quyền gửi chúng.

Tuy nhiên, như đã đề cập, giao dịch chỉ hợp lệ nếu nó được đưa vào một khối được xác nhận. Việc chấp nhận các giao dịch chưa được xác nhận cũng giống như việc chấp nhận 40 đô la tiền điện tử từ ví dụ trước mà không cần rút tiền ngay lập tức từ ngân hàng, điều này cho phép người gửi chi tiêu ở nơi khác trong thời gian chờ đợi. Do đó, Erin nên đợi ít nhất 6 xác nhận khối (khoảng một giờ) trước khi chấp nhận thanh toán từ Dan.


Chi tiêu gấp đôi và 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 gấp đôi, ít nhất là khi giao thức được sử dụng như dự định. Nghĩa là, nếu mọi người đang chờ các giao dịch được xác nhận trong một khối thì không có cách nào dễ dàng để người gửi hủy chúng. Để làm được điều này, họ sẽ phải “đảo ngược” blockchain, vốn đòi hỏi một lượng sức mạnh băm không thực tế.

Tuy nhiên, một số cuộc tấn công chi tiêu gấp đôi nhắm vào các bên chấp nhận giao dịch chưa được xác nhận. Ví dụ: đối với các giao dịch mua có giá trị thấp, nhà 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 đủ khả năng để chờ mạng xử lý mọi giao dịch mua. Vì vậy, nếu một doanh nghiệp cho phép thanh toán “ngay lập tức”, nó sẽ tự mở ra khả năng chi tiêu gấp đôi. Ai đó có thể đặt một chiếc bánh hamburger, trả tiền và sau đó gửi ngay số tiền tương tự đến địa chỉ của họ. Với mức phí cao hơn, giao dịch mới này có nguy cơ được xác nhận trước và do đó làm mất hiệu lực của giao dịch trước đó.

Có ba phương pháp phổ biến để chi tiêu gấp đôi:

  • Tấn công 51%: Khi một thực thể hoặc tổ chức giành quyền kiểm soát hơn 50% tỷ lệ băm, cho phép nó loại trừ hoặc thay đổ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 trên các mạng khác.

  • Tấn công chủng tộc: hai giao dịch xung đột được phát 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 khoản thanh toán bằng cách chỉ xác thực giao dịch có lợi cho chúng (ví dụ: gửi cùng số tiền đến địa chỉ mà chúng kiểm soát). Các cuộc tấn công chủng tộc buộc người nhận phải chấp nhận thanh toán bằng một giao dịch chưa được xác nhận.

  • Tấn công Finney: kẻ tấn công khai thác trước một giao dịch trong một khối mà không phát nó lên mạng ngay lập tức. Thay vào đó, anh ta sử dụng số tiền tương tự trong một giao dịch khác và chỉ phát sóng khối đã khai thác trước đó của mình, điều này có thể làm mất hiệu lực thanh toán. Các cuộc tấn công Finney yêu cầu một chuỗi sự kiện cụ thể và người nhận cũng phải chấp nhận các giao dịch chưa được xác nhận.

Như chúng ta có thể thấy, một thương gia chờ xác nhận khối sẽ giảm đáng kể khả năng trở thành nạn nhân của chi tiêu gấp đôi.


Để kết luận

Chi tiêu gấp đôi cho phép người dùng thao túng hệ thống tiền điện tử cho mục đích riêng của họ, sử dụng cùng một khoản tiền nhiều lần. Theo truyền thống, việc thiếu các giải pháp thích hợp cho vấn đề đã ngăn cản sự tiến bộ hơn nữa.

Tuy nhiên, may mắn thay, việc sử dụng chữ ký mù mang lại một giải pháp hấp dẫn cho các hệ thống tài chính tập trung. Sau đó, việc tạo ra các cơ chế bằng chứng công việc và công nghệ chuỗi khối đã tạo ra Bitcoin, một dạng tiền tệ phi tập trung, từ đó truyền cảm hứng cho hàng nghìn dự án tiền điện tử khác.