Hàm smart contract function và cách nhận biết lừa đảo

Những ý chính:

  • Các hàm smart contract (smart contract functions) là những tập lệnh chỉ dẫn cho blockchain. Chúng cho phép chúng ta phê duyệt các tương tác cụ thể giữa ví của mình với bên thứ ba, chẳng hạn như các nền tảng NFT và dịch vụ DeFi.
  • Nhiều người vẫn chưa thực sự hiểu cách diễn giải các hàm này. Vì vậy, họ xác nhận giao dịch dựa trên sự tin tưởng mà không thực sự kiểm tra nội dung mình đang ký. Chính “điểm mù” này là cơ hội rất lớn cho những kẻ lừa đảo.
  • Các vụ lừa đảo dựa trên việc phê duyệt smart contract độc hại đang gia tăng nhanh chóng. Chưa bao giờ việc hiểu rõ mình đang ký vào điều gì lại quan trọng đến vậy.

Hiện nay, các hàm smart contract chính là phương thức số một mà những kẻ lừa đảo sử dụng để chiếm đoạt crypto và NFT mà người dùng đã vất vả tích lũy được. Bạn có nghĩ đã đến lúc mình nên học cách đọc và hiểu chúng hay chưa?

Tương tác với smart contract là một phần không thể thiếu của Web3. Trên thực tế, smart contract vận hành nhiều ứng dụng và nền tảng crypto phổ biến nhất hiện nay, đồng thời quyết định cách ví của bạn tương tác với các nền tảng đó. Nói ngắn gọn, chúng đã mở ra cánh cửa dẫn đến một hình thức tự do kỹ thuật số hoàn toàn mới trong thế giới phi tập trung.

Tuy nhiên, đi kèm với sự tự do đó là một trách nhiệm rất lớn. Khi khám phá một lĩnh vực còn xa lạ, bạn thường không nhận thức hết được những rủi ro tiềm ẩn. Việc người mới cảm thấy choáng ngợp trước trải nghiệm người dùng (UX) phức tạp và lượng kiến thức về ví tiền mã hóa cần thiết là điều hoàn toàn tự nhiên.

Điều này, cùng với giá trị tài sản khổng lồ đang được lưu chuyển trên blockchain, đã khiến Web3 trở thành môi trường màu mỡ cho những kẻ lừa đảo và các tác nhân xấu hoạt động.

Nói thẳng ra, không phải mọi ứng dụng hay nền tảng blockchain mà bạn bắt gặp đều trung thực, và chắc chắn không phải tất cả đều có thiện chí. Mặc dù smart contract tự bản thân nó không phải là thứ nguy hiểm, nhưng việc tương tác với chúng luôn đi kèm một mức độ rủi ro nhất định.

Vậy điều gì sẽ xảy ra khi bạn tương tác với một smart contract độc hại?

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn tìm hiểu những hàm smart contract quan trọng mà bạn thường gặp khi tham gia Web3, ý nghĩa của chúng, đồng thời giúp bạn nhận diện các hàm smart contract độc hại khi bắt gặp chúng.

Tuy nhiên, trước khi đi sâu vào chi tiết, hãy bắt đầu từ những kiến thức cơ bản nhất: Hàm smart contract function thực chất là gì?

Hàm smart contract function là gì?

Nói một cách đơn giản, smart contract function là những đoạn mã cho phép smart contract thực hiện các hành động cụ thể. Việc “gọi một hàm” (calling a function) sẽ khởi tạo một tương tác nhất định giữa ví của bạn và nền tảng Web3 mà bạn đang sử dụng. Nói cách khác, khi bạn phê duyệt một hàm, Smart contract sẽ được phép thực hiện một tác vụ cụ thể liên quan đến ví của bạn.

Vì sao việc hiểu các hàm smart contract lại quan trọng đến vậy?

Mỗi khi tương tác với một ứng dụng blockchain, bạn đang tương tác với smart contract. Đó chính là lý do tại sao việc nhận biết một hàm smart contract độc hại lại vô cùng quan trọng. Bởi vì không phải nền tảng blockchain nào cũng đặt lợi ích của bạn lên hàng đầu. Thậm chí, nhiều kẻ lừa đảo sẵn sàng làm mọi cách để chiếm đoạt những tài sản kỹ thuật số mà bạn đã khó khăn mới sở hữu được.

Nói ngắn gọn: Một số smart contract có thể chứa các hàm được thiết kế đặc biệt để đánh cắp tài sản của bạn. Thông qua các hàm smart contract độc hại kết hợp với một chút kỹ thuật thao túng tâm lý (social engineering), những kẻ lừa đảo đã và đang chiếm đoạt vô số tài sản kỹ thuật số giá trị mỗi ngày.

Chính vì vậy, việc hiểu rõ những dấu hiệu cần cảnh giác là vô cùng cần thiết. Để có thể điều hướng Web3 một cách an toàn, có một số hàm smart contract quan trọng mà bạn nên làm quen, bao gồm: SetApprovalForAll, SafeTransferFrom và SendETH.

Mặc dù sự xuất hiện của các hàm này không đồng nghĩa với việc bạn đang tương tác với smart contract độc hại, nhưng điều quan trọng là phải biết trong trường hợp nào chúng xuất hiện là hợp lý.

Tuy nhiên, đó mới chỉ là phần khởi đầu. Nếu muốn trở thành một người dùng blockchain thực thụ, bạn sẽ còn cần tìm hiểu thêm rất nhiều hàm smart contract khác.

Nhưng trước tiên, hãy cùng khám phá những kiến thức nền tảng và cách mà kẻ xấu lợi dụng chúng để đánh cắp tài sản của người dùng.

SetApprovalForAll là gì?

SetApprovalForAll là một hàm mà bạn sẽ gặp khá thường xuyên khi tham gia Web3. Thông thường nhất, hàm này xuất hiện khi bạn niêm yết (list) NFT của mình trên một thị trường. Mục đích của nó rất đơn giản: Nó cho phép thị trường đó chuyển NFT từ ví của bạn sang ví của người mua bất cứ khi nào NFT được bán thành công.

Nghe có vẻ hợp lý phải không? Tuy nhiên, cơ chế này cũng kéo theo một số hệ quả đáng lưu ý. Mặc dù SetApprovalForAll là một hàm rất phổ biến, nhưng nó cũng là một trong những tương tác có mức độ rủi ro cao đối với người dùng vì phạm vi quyền hạn mà nó cấp là rất rộng.

Khi phê duyệt hàm này, bạn đang cho phép nền tảng đó truy cập vào toàn bộ NFT hoặc token ERC20 thuộc một smart contract nhất định trong ví của mình. Không chỉ vậy, đây còn là một thỏa thuận mở không giới hạn thời gian.

Điều đó có nghĩa là mọi token hoặc NFT tương lai thuộc smart contract đó được chuyển vào ví của bạn cũng tự động nằm trong phạm vi quyền truy cập đã cấp. Điều này giống như việc bạn ký sẵn một tờ séc trắng cho người khác.

Về cơ bản, bạn đang nói: “Tôi tin tưởng nền tảng này sẽ làm đúng những gì họ cam kết và chỉ hành động trong phạm vi mà tôi mong đợi.”

Chính vì thế, SetApprovalForAll là một trong những công cụ bị lợi dụng nhiều nhất trong các vụ lừa đảo crypto. Do đó, điều tối quan trọng là phải biết khi nào việc ký hàm này là an toàn và khi nào nó có thể là dấu hiệu của một smart contract độc hại.

Cách phát hiện hàm SetApprovalForAll độc hại

Thông thường, bạn chỉ nên nhìn thấy thông báo này khi: Niêm yết NFT trên thị trường. Tương tác với một sàn giao dịch phi tập trung (DEX). Điều này hoàn toàn hợp lý vì nền tảng cần được cấp quyền chuyển token hoặc NFT từ ví của bạn khi chúng được giao dịch.

Tuy nhiên, ngoài những tình huống trên, sự xuất hiện của SetApprovalForAll nên được xem là một tín hiệu cảnh báo nghiêm trọng.

Hãy luôn tự hỏi: “Tại sao tôi lại phải chuyển quyền truy cập tài sản của mình cho người khác?” Cách suy nghĩ này sẽ giúp bạn dễ dàng đánh giá liệu giao dịch có hợp lệ hay không.

Để đơn giản hơn:

  • Mint NFT? KHÔNG nên xuất hiện hàm SetApprovalForAll.
  • Mua NFT? KHÔNG nên xuất hiện hàm SetApprovalForAll.
  • Hoán đổi hoặc chuyển NFT? KHÔNG nên xuất hiện hàm SetApprovalForAll.
  • Đăng ký Allow List? KHÔNG nên xuất hiện hàm SetApprovalForAll.

Bây giờ bạn đã hiểu chính xác ý nghĩa của việc ký loại giao dịch này.

Nhờ đó, bạn có thể tự đánh giá từng trường hợp mà hàm này xuất hiện và quyết định liệu đó có phải là một dấu hiệu đáng ngờ hay không.

SafeTransferFrom là gì?

Một hàm smart contract rất phổ biến khác mà bạn có thể gặp là SafeTransferFrom. Thông báo này xuất hiện trong bất kỳ giao dịch nào mà bạn đang gửi NFT từ ví của mình sang một ví khác.

Ví dụ: Giả sử bạn vừa mua một thiết bị Ledger và muốn chuyển toàn bộ NFT từ ví nóng hiện tại sang tài khoản Ethereum bảo mật trên Ledger. Lúc đó, SafeTransferFrom sẽ xuất hiện trên ví nóng của bạn và bạn cần xác nhận giao dịch.

Trong ngữ cảnh này, sự xuất hiện của SafeTransferFrom hoàn toàn hợp lý. Vấn đề phát sinh khi bạn nhìn thấy hàm này trong những tình huống khác.

Hãy nhớ rằng: Điều bạn đang xác nhận ở đây là việc gửi NFT sang một ví khác. Trừ khi đó là ví của chính bạn, sẽ có rất ít tình huống hợp lệ mà bạn thực sự muốn làm điều đó.

Hàm smart contract SendETH là gì?

Nếu từng sử dụng Web3, rất có thể bạn đã gặp hàm SendETH. Đơn giản mà nói, điều này có nghĩa là bạn đang gửi Ether (ETH) đến một ví khác. Bạn có thể đang chuyển ETH giữa các ví thuộc quyền sở hữu của chính mình. Hoặc bạn có thể đang thanh toán cho một giao dịch mua hàng kỹ thuật số trên thị trường. Trong những trường hợp đó, việc xuất hiện hàm SendETH là hoàn toàn hợp lý.

Cách tránh các hàm SendETH độc hại

Mint NFT / Mua NFT / Bán NFT / Chuyển NFT / Hoán đổi NFT? KHÔNG nên xuất hiện SendETH.

Thời điểm duy nhất bạn nên nhìn thấy hàm này là khi bạn thực sự đang gửi ETH đến ví của mình hoặc ví của người khác.

Tuy nhiên, trong những trường hợp không may, hàm này cũng có thể xuất hiện ở những nơi mà bạn không hề mong đợi.

Ví dụ điển hình là trong các đợt mint NFT. Người dùng nghĩ rằng họ đang mint NFT, nhưng trên thực tế họ chỉ đang chuyển ETH sang ví của người khác. Điều đầu tiên bạn cần kiểm tra là Function Call. Bạn có thể nhận ra điều này không chỉ bằng tên hàm.

Nếu thực sự là mint NFT, hàm phải hiển thị “Mint” thay vì “SendETH”. Ngoài ra, hãy kiểm tra địa chỉ nhận ở góc trên bên phải. Quá trình mint NFT là giao dịch trực tiếp với blockchain chứ không phải với một ví cá nhân.

Do đó, sự xuất hiện của một địa chỉ ví nhận cụ thể trong trường hợp này là một dấu hiệu cảnh báo rất lớn.

Ví dụ về một smart contract độc hại

Vậy điều gì sẽ xảy ra nếu bạn không nhận ra smart contract độc hại và vẫn phê duyệt hàm của nó? Một ví dụ điển hình là dự án NFT Momoco. Dự án này quảng bá một đợt mint NFT miễn phí, thu hút rất nhiều nhà đầu cơ NFT (degens) truy cập vào website.

Vấn đề là: Không hề tồn tại hoạt động đào nào cả. Khi người dùng nhấn nút “Mint (Đào)”, hệ thống lại hiển thị lệnh gọi hàm SafeTransferFrom. Rất nhiều người đã phê duyệt hàm smart contract độc hại này vì họ nhầm tưởng đó là một phần của quy trình mint.

Việc phê duyệt hàm đó cho phép smart contract chuyển NFT ra khỏi ví của nạn nhân. Chỉ riêng vụ lừa đảo NFT này đã có hàng trăm nạn nhân từ một smart contract độc hại duy nhất.

Smart contract độc hại: cách tránh những điều bạn chưa biết

Hãy nhớ rằng: Đối với các Function Call của smart contract, điều duy nhất chắc chắn xảy ra là những gì được ghi trong ô Function. Các tác nhân xấu sẽ cố gắng sử dụng tấn công kỹ thuật thao túng tâm lý để đánh lạc hướng bạn.

Nhưng hãy luôn ghi nhớ: Bất kỳ hàm nào khác với hàm mà bạn mong đợi đều phải được xem là một dấu hiệu cảnh báo ngay lập tức.

Nếu đang đào NFT, bạn phải thấy hàm “Đào (Mint)”, không phải hàm chuyển tài sản. Nếu đang chuyển NFT, bạn không nên nhìn thấy SetApprovalForAll. Dù là hàm smart contract nào đi nữa, hãy luôn kiểm tra kỹ mọi chi tiết, bao gồm loại tương tác bạn đang xác nhận, hướng chuyển tài sản và địa chỉ nhận.

Việc này sẽ giúp bạn xác minh giao dịch dựa trên dữ liệu thực tế thay vì tin tưởng vào hoàn cảnh hoặc giao diện bên ngoài. Bây giờ khi đã hiểu ý nghĩa của những hàm này, có lẽ các hình thức lừa đảo liên quan sẽ trở nên khá dễ nhận biết.

Tuy nhiên, đừng chủ quan.

Sức mạnh của tấn công kỹ thuật thao túng tâm lý có thể cực kỳ nguy hiểm, đặc biệt khi kết hợp với những chuẩn mực mới và đôi khi khó hiểu của Web3. Chính vì vậy, việc trang bị kiến thức trước khi bắt đầu hành trình của mình là điều vô cùng quan trọng.

Giỏ hàng0
Không có sản phẩm nào trong giỏ hàng!
Tiếp tục mua hàng