Cafe blockchain số 17. Game NFT - Play to earn - Cheat & cách phòng tránh.
Game NFT - Play to earn - Cheat & cách phòng tránh.
---Hiện nay game NFT - play to earn đang nở rộ. Rất nhiều game ra đời mỗi ngày.
Việc chơi game "ra tiền" đương nhiên sẽ đi kèm với các thủ thuật cheat của các game thủ.
Vậy các cách cheat nào là phổ biến?
Các dự án có thể chống lại cheater bằng cách nào?
---
Cheat 1: Chơi bằng bot.
Thay vì chơi game thật thì dùng bot để tự động tạo các transaction theo kịch bản có sẵn. cùng 1 lúc, 1 máy có thể nuôi hàng ngàn nhân vật khác nhau để kiếm tiền.
Đối với game Decentralized, user tương tác thẳng với smart contract thì việc ngăn chặn cheater kiểu này là rất khó. Nếu muốn ngăn chặn thì cần thiết lập sớm, nhưng chính điều đó làm mất đi tính phi tập trung của game blockchain.
----
Cheat 2: Mở trứng luôn lãi
Nhiều game NFT có game play dạng như sau:
Mua trứng với giá rẻ
==>Trứng nở ra nhân vật thì sẽ random vào 1 số nhân vật có các cấp độ khác nhau.
Nếu may mắn thì vào nhân vật có cấp độ cao==> nhân vật có giá==> bán có lãi ngay khi mở trứng.
Vậy cheat bằng cách nào?
Hiện nay rất nhiều game kiểu này đang bị cheat bằng cách:
Sử dụng 1 smartcontract khác(tự code) để gọi function mở trứng. Nếu vào nhân vật có rare thấp thì "hoàn nguyên" giao dịch==>Trứng còn nguyên==>Thử lại n lần đến khi được nhân vật rare cao==> Bán có lãi ngay.
Cách chống lại ngay từ đầu: Trong function mở trứng, hãy kiểm tra address call đến (msg.sender). Nếu nó là smartcontract thì không cho thực thi. Chỉ cho phép thực thi khi nó được gọi từ address của user thường. (sử dụng function extcodesize để kiểm tra).
Để chống 1 cách triệt để thì có thể sử dụng cách so sánh msg.sender và tx.origin. nếu msg.sender==tx.origin nghĩa là account khởi tạo transaction cũng là tác nhân call contract.
---
Cheat 3: Thi đấu luôn thắng
Nhiều game có game play cho các nhân vật đấu với nhau, việc thắng hay thua là random theo tỷ lệ cho trước.
Cách cheat tương tự như trên, tạo 1 smartcontract và call đến các function cần thiết. Nếu thua thì hoàn nguyên giao dịch==> Thử lại n lần đến khi chiến thắng
Cách chống lại thì như cheat 2 ở trên.
Nhận xét
Đăng nhận xét