Skip to main content

Tại sao không thể có tấn công Flash Loan trên Cardano?

Ngày 27 tháng 11 năm 2023 - Chia sẻ bài viết này trên Twitter | FacebookTelegram

Nhiều vụ hack trên nền tảng Ethereum đã sử dụng các khoản vay flash (vay nhanh). Kẻ tấn công có thể vay một số tiền khổng lồ mà không cần thế chấp, sử dụng số tiền đó để kiếm lợi nhuận và sau đó hoàn trả khoản vay trong cùng một giao dịch. Trong bài viết này, chúng tôi sẽ giải thích lý do tại sao chúng ta không thấy kiểu tấn công này trong DeFi của Cardano. Bạn sẽ hiểu một trong những ưu điểm của mô hình UTxO.

Nguyên tắc của các khoản vay nhanh

Khoản vay nhanh là khoản vay được vay và hoàn trả trong cùng một giao dịch. Đó là một cách để có thể kiếm được lợi nhuận đáng kể mà không phải mạo hiểm với tiền của chính mình.

Hầu hết chúng ta đều quen thuộc với các khoản vay thông thường. Người cho vay cho Người đi vay vay tiền để cuối cùng được trả lại đầy đủ. Một khoản vay thường phải được trả đều đặn trong khoảng thời gian vài tháng hoặc nhiều năm. Thông thường, Người cho vay yêu cầu Người đi vay phải thế chấp tài sản để đảm bảo rằng nếu Người đi vay không thể trả khoản vay thì Người cho vay vẫn có thể lấy lại được tiền của họ. Đây là khoản vay có bảo đảm.

Các khoản vay flash không có bảo đảm vì không cần tài sản thế chấp. Việc thiếu tài sản thế chấp này không có nghĩa là Người cho vay sẽ không lấy lại được tiền. Thay vì đưa ra tài sản thế chấp, Người đi vay cần phải trả lại tiền ngay. Điều này có thể được đảm bảo bằng một hợp đồng thông minh.

Một khoản vay nhanh là ngay lập tức. Bằng cách tận dụng tính tự động của các giao dịch trên Ethereum, các khoản vay nhanh cho phép người dùng thực hiện nhiều hành động trong một giao dịch, miễn là thời gian giao dịch không vượt quá thời gian khối.

Khái niệm về tính tự động này rất quan trọng đối với hoạt động của các khoản vay nhanh. Hợp đồng thông minh cho khoản vay nhanh thường bao gồm việc vay vốn, thực hiện một số hoạt động (như chênh lệch giá hoặc thanh lý) và sau đó hoàn trả khoản vay, tất cả chỉ trong một giao dịch. Nếu khoản vay không được hoàn trả khi kết thúc giao dịch, toàn bộ giao dịch sẽ bị đảo ngược và coi như khoản vay chưa từng xảy ra. Điều này đảm bảo rằng Người cho vay không bị mất tiền, ngay cả khi khoản vay không được thế chấp.

Nói cách khác, tính tự động đảm bảo tính chất tất cả hoặc không có gì của giao dịch.

Tốt nhất là giải thích bằng một ví dụ. Giả sử chúng ta có ba bên tham gia: giao thức cho vay (A), Người đi vay (B) và giao thức đích C. Ba hành động này diễn ra trong một giao dịch duy nhất: Vay, Hành động và Trả nợ.

  • Vay: Người vay (B) bắt đầu giao dịch bằng cách vay tiền từ giao thức cho vay (A). Điều này ghi NỢ số dư của A và ghi CÓ số dư của B.
  • Hành động: Người đi vay (B) sau đó sử dụng số tiền đã vay này để tương tác với một giao thức khác C. Điều này có thể nhằm mục đích chênh lệch giá, thanh lý hoặc bất kỳ hoạt động nào khác có thể mang lại lợi nhuận. Việc này sẽ ghi NỢ số dư của B và ghi CÓ số dư của C.
  • Hoàn trả: Cuối cùng, Người đi vay (B) hoàn trả khoản vay theo giao thức cho vay (A), cộng với mọi khoản phí hoặc lãi. Điều này ghi NỢ số dư của B và ghi CÓ số dư của A.

Khi giao dịch kết thúc, có vẻ như số tiền chưa được vay.

Hợp đồng thông minh trên Ethereum có thể là các chương trình tự trị phức tạp có thể thực hiện nhiều hoạt động và tương tác với các hợp đồng khác. Điều này cho phép thực hiện các tương tác phức tạp giữa nhiều hợp đồng thông minh trong một giao dịch duy nhất, đây là yêu cầu chính để thực hiện khoản vay nhanh. Cũng lưu ý rằng trong giao dịch cho vay nhanh, có nhiều số dư liên quan. Mỗi số dư có thể được ghi NỢ và ghi CÓ nhiều lần trong một giao dịch.

Nhiều khái niệm trong số này về cơ bản khác với sự đơn giản của tập lệnh Plutus và mô hình UTxO. Đây là lý do tại sao chưa có cuộc tấn công flash loan nào vào Cardano.

Tại sao không có cuộc tấn công Flash Loan trên Cardano?

Mục đích và chức năng của các tập lệnh xác thực trên Cardano và hợp đồng thông minh trên Ethereum là khác nhau và điều này ảnh hưởng đến việc triển khai các khoản vay nhanh.

Các tập lệnh xác thực trên Cardano được sử dụng để xác định xem có thể chi tiêu UTxO hay không. Họ làm điều này bằng cách kiểm tra xem các điều kiện nhất định có được đáp ứng hay không. Nếu các điều kiện không được đáp ứng, giao dịch sẽ không được xác thực và UTXO vẫn chưa được sử dụng.

Một trong những lý do khác giúp Cardano có tính bảo mật cao hơn là mô hình UTxO.

Mỗi UTxO là một đối tượng riêng biệt, độc lập với môi trường xung quanh. Mô hình UTxO không có khái niệm về số dư, giống như mô hình dựa trên tài khoản được Ethereum sử dụng.

Một hoặc nhiều UTxO có thể là đầu vào của một giao dịch mà chúng chỉ có thể được sử dụng một lần và hoàn toàn. Các UTxO đầu ra mới sẽ được tạo từ các UTxO đầu vào.

Giao dịch Cardano có thể được coi là một chức năng đơn giản tiêu thụ UTxO đầu tạo ra UTxO đầu ra. UTxO tham gia giao dịch là bất biến và có thể đảm bảo quyền truy cập độc quyền. Trong giao dịch, đảm bảo rằng giá trị của tất cả UTxO đầu vào giống với giá trị của tất cả UTxO đầu ra (đây cũng là điều kiện của hợp đồng thông minh thực hiện các khoản vay nhanh).

Trong Ethereum, các giao dịch có trạng thái, nghĩa là chúng có thể thay đổi trạng thái của hệ thống. Đây là điều kiện tiên quyết cần thiết cho các tương tác phức tạp giữa nhiều hợp đồng thông minh trong một giao dịch, đây là yêu cầu chính để thực hiện khoản vay nhanh.

Mô hình UTxO không có trạng thái. Trong quá trình xác thực giao dịch, tập lệnh chỉ có quyền truy cập vào UTxO đầu vào, Context giao dịch, Datum và Redeemer. Ví dụ: tập lệnh không có thể tương tác với các UTxO khác trong hệ thống.

Sự khác biệt chính giữa Cardano và Ethereum là không thể di chuyển UTxO nhiều lần đến các địa chỉ khác nhau trong quá trình xác thực tập lệnh Plutus. Hơn nữa, Cardano hỗ trợ xâu chuỗi các hợp đồng thông minh trong một giao dịch. Chúng có thể được xâu chuỗi trong một loạt các giao dịch.

Cardano xử lý đồng thời các hoạt động trong một giao dịch. Một giao dịch Cardano đơn lẻ thể hiện một hoạt động xảy ra đồng thời chứ không phải theo chuỗi. Điều này có nghĩa là khái niệm truyền thống về các khoản vay nhanh trên Ethereum, nơi tiền được vay và hoàn trả trong một giao dịch, không chuyển trực tiếp sang Cardano do những hạn chế này.

Không thể tạo các khoản vay nhanh trên Cardano vì cần phải sử dụng nhiều giao dịch để vay tiền, sử dụng tiền và hoàn trả các hoạt động tiền. Theo thiết kế, Cardano không cho phép người dùng tạo các khoản vay flash.

Bằng cách nào đó có thể tạo một khoản vay nhanh trên Cardano không?

Logic của tập lệnh trình xác thực sẽ phải như sau: cho phép UTxO này được sử dụng với điều kiện nó được sử dụng trở lại cùng một địa chỉ tập lệnh. Tuy nhiên, điều này không có ý nghĩa. UTxO không thể được mượn tạm thời trong một giao dịch. Đối tác sẽ không thể sử dụng UTxO.

Lời kết

Trong bài viết, chúng tôi nói về các khoản vay flash một cách tiêu cực vì chúng thường được sử dụng để tấn công. Công bằng mà nói thì các khoản vay nhanh là một công cụ mạnh mẽ dành cho các nhà giao dịch có kỹ năng và kiến ​​thức kỹ thuật cần thiết. Điều tương tự cũng có thể nói với Ethereum. Đối với một số trường hợp sử dụng, điều thuận lợi là các nhà phát triển có thể xâu chuỗi các hợp đồng thông minh trong một giao dịch.

Nền tảng hợp đồng thông minh là công cụ và chúng có thể được sử dụng để xây dựng các dịch vụ tài chính hữu ích hoặc bị tin tặc khai thác. Mục tiêu của toàn bộ ngành là tạo ra một nền tảng như vậy để có thể tạo ra các dịch vụ an toàn và đáng tin cậy. Cardano được thiết kế an toàn, nhưng một số thứ tốn nhiều công sức và phức tạp hơn khi thực hiện so với Ethereum. Đây luôn luôn là tìm kiếm sự cân bằng phù hợp.

Nguồn bài viết tại đây


Picture

Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới