VNREBATES

Double Spending (Chi tiêu hai lần) là gì?

22.04.2023, 10:30 13 phút đọc

Double spend 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. Vậy, làm sao để ngăn ngừa Double Spend?

Chúng ta hãy cùng xem xét ví dụ sau:

An muốn mua chiếc xe máy của Bình với giá 10 triệu đồng. An trả cho Bình số tiền mặt tương ứng. Khi Bình nhận được số tiền mặt này, An không có cách nào để sử dụng lại số tiền này cho một số giao dịch khác, vì tiền mặt là vật chất hữu hình này hiện đang thuộc quyền sở hữu của Bình, và An hay bất cứ ai khác không thể tái tạo hay sao chép được nó.

Bây giờ, nếu An trả số tiền đó cho Bình dưới dạng tiền số thì điều gì sẽ xảy ra?

Double spend la gi

Do định dạng của tiền để thanh toán là định dạng kỹ thuật số, nên về cơ bản, đây là một tệp nhị phân được lưu trữ ở đâu đó trên thiết bị ví vật lý của An. Sau khi An đưa tập tin này (tiền kỹ thuật số) cho Bình, anh ta cũng có thể đưa một bản sao của tập tin đó Chung (một người bán xe máy hoặc điện thoại khác để mua những thứ này). Trong trường hợp này cả Bình và Chung đều nghĩ rằng họ đã nhận được tiền mà không có bất kỳ phương tiện nào để xác thực và do đó họ sẽ giao hàng cho An.

Đây được gọi là lặp chi (double spending) trong đó người gửi chi tiêu cùng một khoản tiền tại nhiều nơi để nhận được các dịch vụ hoặc hàng hóa từ nhiều nhà cung cấp khác nhau.

Xem thêm:

1. Chi tiêu hai lần (Double Spend) là gì?

Double spend 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ị mất giá trị do không được tin dùng vì 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 A có thể nhận được 10 đồng tiền, copy và paste 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ó thể gửi cùng lúc 10 đồng cho cả BC. 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.

Nếu hai giao dịch có khoá riêng tư kèm số dư tài khoản giống nhau hoàn toàn nhưng được gửi vào hai địa chỉ khác nhau trong mạng lưới Bitcoin thì giao dịch nào đến trước sẽ được chấp nhận trước và giao dịch còn lại thì không.

Một lỗ hổng có trong hệ thống Bitcoin có thể dẫn đến Double Spend chính là Tấn công 51% (51% Attack).

2. Double Spend trong Bitcoin

double-spending-la-gi-2

Bitcoin được thiết kế cẩn thận để ngăn chặn các cuộc tấn công Double spend, ít nhất là khi giao thức được sử dụng giố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ó. Để hoàn tác, 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 Double spend 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 đợi 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 Double spend. Ví dụ đơn giản nếu như thế giới này đều có thể sử dụng Bitcoin để thanh toán: Một người có thể đặt hàng một bánh mì kẹp thịt, trả tiền, sau đó ngay lập tức gửi cùng một khoản tiền đến địa chỉ khác 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 đó. Vậy là người đó có thể mua bánh mỳ mà không cần trả tiền.

Có ba phương pháp phổ biến để thực hiện Double spend:

  • Tấn công 51% (51% Attack): 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: 2 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 gồm 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 Double spend.

double-spending-la-gi-1

Xem thêm: Cách đặt Auto Stop Loss and Take Profit bằng EA trên MT4 đơn giản

3. Làm thế để ngăn chặn Double Spend?

3.1. 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 đề Double spend 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 (ví dụ, A) 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 cần có số dư trong tài khoản của mình, sau đó A 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ử A 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, A 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 đó, A chuyển dữ liệu này cho ngân hàng, ghi nợ tài khoản của mình số tiền 100 đô 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ờ A 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 B và trả 40 đô la tiền ăn uống.

A 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 B, người này phải ngay lập tức đổi chúng với ngân hàng để ngăn A chi tiêu chúng với một người 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ó vào tài khoản của B 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, nếu thất bại thì khả năng phục hồi 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.

3.2. 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 Double spend 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 đề Double spend. 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 Double spend.

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. Nếu không, 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 trường hợp 51% Attack).

Hãy quay trở lại kịch bản xảy ra ở nhà hàng. A 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ổ. A gọi món lần trước 1 lần nữa, với giá 0,005 BTC.

B đưa cho anh ta một địa chỉ công khai để A chuyển tiền. A 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 A bây giờ sẽ là của B. Bất kỳ ai thấy được giao dịch đã ký của A đề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 B 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 A.

Xem thêm: Hướng dẫn lập trình Robot Forex cho người không biết viết code

4. TỔNG KẾT

Double spend 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.

Theo dõi VnRebates để cập nhật tin tức ForexChứng khoánTiền điện tử mới nhất.

VnRebates – Hoàn tiền mọi giao dịch tài chính

👉 Cập nhật Phương pháp trading mới và hiệu quả nhất trên thế giới bằng 4 Khóa học video miễn phí
Risk Disclaimer: Bài viết thể hiện quan điểm và góc nhìn của cá nhân tác giả, chỉ có giá trị tham khảo về mặt thông tin, kiến thức và không có giá trị pháp lý về khuyến nghị đầu tư hay thay thế cho việc tư vấn tài chính nào tương đương. Bài viết không đảm bảo bất kỳ khoản lợi nhuận nào hay giảm thiểu rủi ro đầu tư nào cho chính độc giả. VnRebates không chịu trách nhiệm hay liên quan đến khoản đầu tư của độc giả khi sử dụng thông tin từ bài viết này. Bản quyền thuộc về đóng góp của tác giả.