Hướng dẫn về chi tiêu hai lần dành cho người mới bắt đầu
HomeArticles

Hướng dẫn về chi tiêu hai lần dành cho người mới bắt đầu

Trung cấp
4mo ago
7m

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.

Để phát hành cho người dùng một tài sản kỹ thuật số giống như tiền mặt (có khả năng trao đổi ẩn danh và ngang hàng), ngân hàng có thể sử dụng chữ ký mù – như mô tả chi tiết của nhà mật mã học David Chaum trong bài báo Chữ ký mù cho các khoản thanh toán không thể theo dõi 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 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.

Sự đổi mới lớn nhất được trình bày trong sách trắng về Bitcoin là cách thức để giải quyết vấn đề chi tiêu hai lần.Mặc dù không được gọi bằng cái tên như ngày nay, Satoshi đã đề xuất cấu trúc dữ liệu hiện được biết đến rộng rãi như là blockchain.

Một blockchain 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 trên mạng (được gọi là các 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 đẳng (peer). Kết quả là toàn bộ mạng có thể kiểm tra lịch sử của các giao dịch có từ khối nguyên thủy (genesis). Bằng cách để blockchain ở chế độ công khai, thật dễ dàng để phát hiện và ngăn chặn hoạt động lừa đảo, chẳng hạn như các giao dịch cố gắng chi tiêu hai lần.

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

Sau khi giao dịch được xác nhận, người gửi không thể chi tiêu các đồng tiền một lần nữa, vì quyền sở hữu được gán 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, nhiều người khuyên nên chờ đợi nhiều người xác nhận trước khi chấp nhận thanh toán là hợp lệ. Mỗi khối tiếp theo làm tăng đáng kể số lượng nỗ lực cần thiết để sửa đổi hoặc viết lại chuỗi (có thể xảy ra trong cuộc tấn công 51%).

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. 

Erin đưa cho anh ta một địa chỉ công khai để anh ấy chuyển tiền. Dan truyền giao dịch, về cơ bản là một thông điệp đã ký để xác nhận rằng 0,005 BTC thuộc quyền sở hữu của Dan bây giờ sẽ là của Erin. Bất kỳ ai thấy được giao dịch đã ký của Dan đều có thể xác minh rằng anh ta thực sự đã chủ sở hữu các đồng tiền, và do đó có quyền gửi chúng.

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 đề.

Tuy nhiên, thật may mắn là việc sử dụng chữ ký mù đã đề xuất một giải pháp thú vị 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ệ blockchain đã dẫn đến sự ra đời của Bitcoin như một hình thức đồng tiền phi tập trung đầy sức mạnh – điều này đã gợi cảm hứng cho hàng ngàn dự án tiền mã hóa khác.