Vấn đề chi tiêu gấp đôi là một vấn đề tiềm ẩn trong hệ thống tiền kỹ thuật số, có nghĩa là cùng một khoản tiền được trả cho hai người được trả tiền đồng thời. Nếu không có biện pháp đối phó thích hợp, chỉ giao thức không thể giải quyết hoàn toàn vấn đề này, xét cho cùng, người dùng không có cách nào để xác minh xem số tiền họ nhận được đã được trả cho người khác hay chưa.
Trong lĩnh vực tiền kỹ thuật số, cần đảm bảo rằng các đơn vị tiền tệ cụ thể không thể bị sao chép. Nếu Alice có thể nhận được 10 đơn vị tiền tệ, sao chép và dán chúng 10 lần và sau đó tự mình có 100 đơn vị tiền tệ thì toàn bộ hệ thống sẽ sụp đổ. Tương tự như vậy, nếu cô ấy có thể gửi cùng lúc 10 đơn vị tiền tệ cho Bob và Carol thì hệ thống cũng sẽ không hoạt động. Do đó, phải có cơ chế ngăn chặn điều này xảy ra để đảm bảo tiền tệ kỹ thuật số hoạt động bình thường.
Cách tiếp cận tập trung dễ thực hiện hơn giải pháp phi tập trung, thường yêu cầu 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át hành các đơn vị tiền tệ. eCash của David Chaum giải quyết vấn đề chi tiêu gấp đôi thông qua cách tiếp cận tập trung.
Các ngân hàng có thể sử dụng chữ ký mù để phát hành tài sản kỹ thuật số tiền mặt giả cho người dùng (có thể thực hiện các giao dịch ngang hàng ẩn danh). Điều này được trình bày chi tiết trong bài báo "Kỹ thuật chữ ký mù cho các khoản thanh toán không thể theo dõi" năm 1982 của nhà mật mã học David Chaum.
Trong trường hợp này, nếu người dùng Dan muốn nhận 100 USD tiền mặt kỹ thuật số, trước tiên anh ta phải thông báo cho ngân hàng. Nếu có số dư trong tài khoản của anh ta, một số ngẫu nhiên sẽ được tạo ra (nhiều hơn nếu mệnh giá nhỏ hơn). Giả sử năm số ngẫu nhiên được tạo ra, mỗi số trị giá 20 USD. Để ngăn các ngân hàng theo dõi các đơn vị tiền tệ cụ thể, Dan đã gây nhầm lẫn tình huống này bằng cách thêm một yếu tố gây mù vào mỗi số ngẫu nhiên.
Sau đó, anh ta đưa dữ liệu cho ngân hàng, ngân hàng sẽ trừ số dư 100 USD từ tài khoản của anh ta và ký vào tin nhắn, chứng minh năm thông tin. Mỗi thông tin có thể là được chuộc lại với giá 20 đô la. Tại thời điểm này, Dan có thể sử dụng tiền kỹ thuật số do ngân hàng phát hành. Anh ta đến nhà hàng của Erin dùng bữa và chi 40 USD.
Dan có thể loại bỏ yếu tố gây mù và tiết lộ số ngẫu nhiên liên quan đến mỗi "tiền giấy" tiền kỹ thuật số. Một mã định danh duy nhất cho một loại tiền tệ đơn vị (gần tương đương với một số sê-ri). Anh ta tiết lộ hai trong số những con số ngẫu nhiên cho Erin, người phải đổi tiền ngay lập tức với ngân hàng để ngăn Dan trả tiền cho những người buôn bán khác. Ngân hàng sẽ xác minh xem chữ ký có hợp lệ hay không và nếu đúng sẽ gửi 40 USD vào tài khoản của Erin.
Những "tiền giấy" đã sử dụng sẽ bị tiêu hủy ngay lập tức. Nếu Erin muốn sử dụng số dư tài khoản theo cách tương tự thì phải có thêm tiền giấy cấp. .
Cơ chế Chaumian eCash cực kỳ có giá trị đối với chuyển khoản cá nhân. Tuy nhiên, bản thân cơ chế eCash không có lực cản, vì ngân hàng là các nút tập trung nên một khi hệ thống gặp trục trặc, mọi người sẽ phải gánh chịu. Bản thân tiền giấy do ngân hàng phát hành không có giá trị; giá trị của chúng hoàn toàn đến từ việc ngân hàng sẵn sàng đổi tiền giấy lấy đô la Mỹ. Khách hàng là đối tượng của ngân hàng và phải dựa vào uy tín của ngân hàng để vận hành nguồn vốn. Đây chính xác là vấn đề mà tiền điện tử hướng tới giải quyết.
Việc tránh vấn đề chi tiêu gấp đôi trong một hệ sinh thái không có cơ chế giám sát sẽ khó khăn hơn. Những người tham gia có quyền lực ngang nhau phải phối hợp với nhau theo cùng 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 một cách liêm chính.
Đổ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. Satoshi Nakamoto đã đề xuất một cấu trúc dữ liệu chưa từng có hiện nay được gọi là blockchain.
Chuỗi khối thực sự chỉ là một cơ sở dữ liệu với một số thuộc tính độc đáo. 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 các bản sao cơ sở dữ liệu của riêng họ với nhau. Bằng cách này, toàn bộ mạng có thể kiểm tra lịch sử giao dịch kể từ khối gốc. Vì blockchain có thể xem công khai nên việc phát hiện và ngăn chặn gian lận sẽ dễ dàng hơn, chẳng hạn như xác định các giao dịch chi tiêu gấp đôi đã cố gắng.
Khi người dùng xuất bản một giao dịch, giao dịch đó không được thêm ngay vào chuỗi khối và phải được khai thác trước khi khối có thể được tải. Do đó, chỉ khi khối được đưa vào chuỗi thì người nhận thanh toán mới có thể xác nhận rằng giao dịch là hợp lệ. Nếu không, người nhận sẽ có nguy cơ mất tiền nếu người gửi thanh toán cùng một mã thông báo ở nơi khác.
Sau khi giao dịch được xác nhận, quyền sở hữu mã thông báo sẽ được chỉ định cho người dùng mới và được toàn bộ mạng xác minh, do đó, mã thông báo có thể không còn nữa còn được sử dụng Hoa đôi. Vì lý do này, nhiều người khuyên nên đợi nhiều lần xác nhận trước khi chấp nhận khoản thanh toán hợp lệ. Mỗi khối tiếp theo sẽ tăng đáng kể số lượng công việc cần thiết để sửa đổi hoặc viết lại chuỗi (chẳng hạn như trong trường hợp tấn công 51%).
Hãy quay lại tình huống nhà hàng. Dan quay lại nhà hàng và lần này nhận thấy nhãn dán trên cửa sổ có nội dung "Cửa hàng này hỗ trợ thanh toán bằng Bitcoin". Anh ấy không thể quên bữa ăn cuối cùng của mình và gọi lại món ăn tương tự, trị giá 0,005 Bitcoin.
Erin cho Dan xem địa chỉ công khai, đây là địa chỉ chuyển khoản. Thông báo về giao dịch của Dan về cơ bản là một tin nhắn có chữ ký thông báo rằng 0,005 Bitcoin mà anh sở hữu hiện thuộc sở hữu của Erin. Không đi sâu vào chi tiết, bất kỳ ai nhìn thấy giao dịch đã ký của Dan đều có thể xác nhận rằng mã thông báo thực sự là của anh ấy và do đó Dan có quyền gửi chúng.
Tuy nhiên, như đã đề cập trước đó, giao dịch chỉ có hiệu lực sau khi được tải vào khối và được xác nhận. Việc nhận một giao dịch chưa được xác nhận cũng giống như nhận 40 USD tiền điện tử trước đây. Nếu giao dịch đó không được chuyển thành tiền mặt ngay lập tức qua ngân hàng, người gửi có thể tiêu số tiền đó ở nơi khác. 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.
Bitcoin được thiết kế cẩn thận để ngăn chặn cuộc tấn công chi tiêu gấp đôi, ít nhất là liệu việc sử dụng giao thức có như mong đợi hay không. Nghĩa là, nếu ai đó đang chờ giao dịch nhận được xác nhận khối, người gửi sẽ không thể dễ dàng đảo ngược giao dịch. Chỉ bằng cách “đảo ngược” chuỗi khối thì giao dịch mới có thể được đảo ngược, điều này đòi hỏi lượng sức mạnh băm khổng lồ.
Tuy nhiên, một số cuộc tấn công chi tiêu gấp đôi đặc biệt nhắm mục tiêu vào những người dùng chấp nhận giao dịch chưa được xác nhận. Ví dụ: với các giao dịch mua nhỏ, người bán không muốn đợi cho đến khi giao dịch được đưa vào khối. Các nhà hàng thức ăn nhanh bận rộn có thể không thể chờ đợi miễn là mạng lưới xử lý từng giao dịch. Do đó, nếu người bán đã bật thanh toán "tức thời", họ có thể gặp phải vấn đề chi tiêu gấp đôi. Ai đó có thể đặt một chiếc bánh mì kẹp thịt và trả tiền, sau đó gửi ngay số tiền tương tự về địa chỉ của họ. Miễn là phí xử lý của giao dịch sau cao hơn, nó có thể được xác nhận trước, khiến giao dịch trước đó trở nên vô hiệu.
Hiện có ba cuộc tấn công chi tiêu gấp đôi phổ biến:
Tấn công 51%: Một thực thể hoặc tổ chức duy nhất quản lý để kiểm soát hơn 50% tốc độ băm để xóa hoặc sửa đổi thứ tự của giao dịch. Kiểu tấn công này cực kỳ khó xảy ra trên mạng Bitcoin nhưng nó đã 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 công bố liên tiếp bằng cách 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 khoản thanh toán khác bằng cách xác thực một giao dịch có lợi cho chúng. Ví dụ: gửi tiền đến địa chỉ mà anh ta kiểm soát. Một cuộc tấn công chủng tộc thường liên quan đến việc người nhận 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 và đưa nó vào khối, nhưng không công bố nó lên mạng ngay lập tức . Thay vào đó, anh ta trả cùng một mã thông báo vào một giao dịch khác trước khi xuất bản khối đã khai thác trước đó, do đó khoản thanh toán bị vô hiệu. Điều kiện cần thiết cho một cuộc tấn công Fenney là các sự kiện xảy ra theo một thứ tự cụ thể và thành công còn phụ thuộc vào việc người nhận có chấp nhận giao dịch chưa được xác nhận hay không.
Như chúng ta có thể thấy, người bán có thể giảm thiểu rủi ro đáng kể bằng cách kiên nhẫn chờ đợi xác nhận khối , để tránh trở thành nạn nhân của việc chi tiêu gấp đôi.
Người dùng có thể sử dụng các cuộc tấn công chi tiêu gấp đôi để giả mạo hệ thống tiền điện tử ngang hàng và sử dụng cùng một khoản tiền nhiều lần để tìm kiếm những khoản lợi bất chính. Trước đây, vì phải giải quyết tốt vấn đề này nên sự phát triển của lĩnh vực này bị đình trệ.
Tuy nhiên, may mắn thay, việc sử dụng chữ ký mù đã trở thành một giải pháp bắt mắt trong các giải pháp tài chính tập trung. Sau đó, sự phát triển của cơ chế bằng chứng công việc và công nghệ chuỗi khối đã sinh ra Bitcoin, một dạng tiền tệ phi tập trung mạnh mẽ, từ đó mang lại nguồn cảm hứng cho hàng nghìn dự án tiền điện tử.